전체 글
-
7. 딥러닝(3)AI 모델(딥러닝 기초)/7. 딥러닝 2023. 2. 23. 12:59
※ 딥러닝 활용 분야 ■ 사물 검출 - 이미지 속에 담긴 사물의 위치와 종류(클래스)를 알아내는 기술 - R-CNN을 주로 사용 사물이 위치한 영역을 찾아내고, 추출한 영역에 CNN을 적용하여 클래스를 분류한다. ■ 분할(segmentation) - 이미지를 픽셀 수준에서 분류하는 문제 - 픽셀 단위로 객체마다 채색된 supervised Data를 사용해 학습 - 추론 시 입력 이미지의 모든 픽셀을 분류 - FCN(Fully Convolutional Network) 사용 -> CNN의 완전연결 계층을 같은 기능을 하는 합성곱 계층으로 바꾸어 마지막에 공간 크기를 확대하여 공간 볼륨을 유지한 채 출력을 처리하는 기법 ■ 사진캡션생성 - NIC(Neural Image Caption) 모델을 사용 -> NIC..
-
7. 딥러닝(2)AI 모델(딥러닝 기초)/7. 딥러닝 2023. 2. 22. 16:20
※ 딥러닝 고속화 ■ GPU vs CPU GPU : 단일 곱셈-누산 or 큰 행렬의 곱과 같은 대량 병렬 연산에 유리 CPU : 연속적인 복잡한 계산에 유리 im2col을 이용해서 합성곱 계층을 큰 행렬의 곱으로 변환할 수 있었다. 이러한 큰 덩어리를 GPU로 한 번에 계산하여 딥러닝 자체의 속도를 고속화 시키는 것이다. 현재는 NVIDIA의 GPU 컴퓨팅용 통합 개발 환경인 CUDA로 인해 대부분의 딥러닝 프레임워크가 GPU 환경에서 작업을 할 수 있다. ■ 분산 학습 뛰어난 신경망을 만들기 위한 수많은 시행착오 시간을 줄이기 위하여 딥러닝 학습을 수평확장하는 아이디어인 분산 학습을 이용한다. 뛰어난 프레임워크들(ex) Tensorflow)이 대부분 분산 학습을 지원하고 있다. ■ 연산 정밀도와 비트 ..
-
7. 딥러닝(1)AI 모델(딥러닝 기초)/7. 딥러닝 2023. 2. 21. 15:23
※ CNN의 정확도 향상 현재 MNIST 데이터셋 대상 accuracy의 순위를 살펴보면 전반적으로 CNN을 사용한 기법들이 상위권을 차지한 것을 알 수 있다. 하지만 주로 합성곱 계층 2개에 완전연결 계층 2개 정도인 신경망으로 구현 되어 있다. MNIST 데이터셋은 손글씨 숫자라는 비교적 단순한 문제이기 때문에 층을 깊게 하지 않아도 충분히 좋은 수준의 결과가 나온다. 이제 데이터를 일반 사물 인식으로 바꾸게 되면 문제가 훨씬 복잡해지기 때문에 층을 깊게 하여 더 높은 정확도를 출력하는 방식을 택하는 것이다. ■ 정확도 개선 기법 1. 앙상블 학습 2. 학습률 감소 3. 데이터 확장 여기서는 데이터 확장에 대해서 한 번 살펴 보자. 데이터 확장(Data Augmentation)은 입력 이미지를 알고리..
-
6. CNN(5)AI 모델(딥러닝 기초)/6. CNN 2023. 2. 19. 13:46
※ CNN 시각화 단계 AlexNet을 예로 들면 일반 사물 인식을 수행한 8층 신경망이다. 1번째 합성곱 계층 : 에지(색상이 바뀐 경계선), 블롭(국소적으로 덩어리진 영역) 등의 저수준 정보 추출 3번째 합성곱 계층 : 텍스처 5번째 합성곱 계층 : 사물의 일부 8번째 완전연결 계층 : 사물의 클래스 분류(일반 Object)에 뉴런이 반응 이렇게 계층이 깊어질수록 추출되는 정보가 더 추상화되며 고급 정보로 변화해 간다. 사물의 '의미'를 이해한 것이다. ※ LeNet - CNN의 원조인 네트워크 - 합성곱 계층과 풀링 계층을 사용 - Sigmoid 함수를 사용 - 서브샘플링을 하여 중간 데이터의 크기를 줄이는 방식을 사용 ※ AlexNet - 딥러닝 열풍을 불러 일으킨 네트워크 - 합성곱 계층과 풀링..
-
6. CNN(4)AI 모델(딥러닝 기초)/6. CNN 2023. 2. 18. 15:27
※ CNN 모델 구현 ■ CNN 모델 (Convolution-ReLU-Pooling)-(Affine-ReLU)-(Affine-Softmax) 의 순서로 흐른다. 이제 위 순서를 따라 3층 신경망을 가진 CNN 모델을 만들어보자. 1. 초기화 단계 - 합성곱 계층 출력 크기, 풀링 계층 출력 크기를 수식으로 설정 - 3층 신경망 구성을 위한 가중치 w1,w2,w3, 편향 b1,b2,b3 만들기 2. 계층 생성 - collection 모듈에 들어있는 OrderDict()를 불러와서 순서대로 정렬 - (Convolution-ReLU-Pooling)-(Affine-ReLU)-(Affine-Softmax) 순서대로 각 계층을 설정 3. 예측 predict, 손실함수 loss, 정확도 accuracy 함수 구현 4..
-
6. CNN(3)AI 모델(딥러닝 기초)/6. CNN 2023. 2. 17. 12:14
※ im2col CNN은 일반적으로 4차원 데이터를 가진다. 4차원 데이터를 단순하게 구현하기 위해서는 몇 겹의 for문을 사용해야하고 넘파이에 다중 for문을 사용하게 될 경우 성능이 매우 감소한다. 이를 막기 위한 트릭의 일종으로 im2col 함수를 살펴보자. ■ im2col : 입력 데이터를 필터링하기 좋게 전개하는 함수(4차원 데이터 -> 2차원 데이터 변환) im2col로 필터링 하기 좋게 입력 데이터를 전개하고, 이러한 전개를 필터를 적용하는 모든 영역에서 수행시킨다. 이처럼 입력데이터를 2차원으로 변형시킬 수 있다. 일반적으로는 위 그림처럼 필터 적용 영역이 겹치지 않도록 구현되지 않는다. 대부분 필터 적용 영역이 겹치게 되는데 이때 im2col로 전개하면 전개한 후의 원소 수가 원래 블록의..
-
6. CNN(2)AI 모델(딥러닝 기초)/6. CNN 2023. 2. 17. 11:08
※ 풀링 계층 - 세로, 가로 방향의 공간을 줄이는 연산 이와 같이 2×2 영역을 원소 하나로 집약하여 공간을 줄이는 방식이다. 위 그림은 최대풀링을 스트라이드 2로 처리하는 순서이다. 최대 풀링과 평균 풀링이 있는데 최대 풀링은 대상 영역에서 최댓값을 취하는 연산이고, 평균 풀링은 대상 영역의 평균을 계산한다. 이미지처리 분야에서는 최대 풀링을 주로 사용한다. 첫번째 그림 : 윈도우 중 2가 가장 큰 수 이므로 2를 출력 두번째 그림 : 윈도우 중 3이 가장 큰 수 이므로 3을 출력 세번째 그림 : 윈도우 중 4가 가장 큰 수 이므로 4를 출력 네번째 그림 : 윈도우 중 2가 가장 큰 수 이므로 2를 출력 ■ 참고 풀링의 윈도우 크기와 스트라이드는 같은 값으로 설정한다. ex) 윈도우가 3×3이면 스트..
-
6. CNN(1)AI 모델(딥러닝 기초)/6. CNN 2023. 2. 14. 11:03
※ CNN(합성곱 신경망)이란? - convolutional neural network의 약자로 이미지 인식과 음성 인식등 다양한 딥러닝 분야에서 사용한다. 특히 이미지 인식 분야에서 딥러닝을 활용할 경우 CNN을 기초로 한다. ■ 전체구조 - 합성곱 계층(Conv)과 풀링 계층(Pooling)이 새롭게 추가된다. Conv - ReLU - Pooling - Conv - ReLU - Pooling - ............. - Affine - ReLU - Affine - Softmax 이 구조를 기본으로 한다. 현재까지 신경망은 모든 뉴런과 연결된 Fully-connected-layer를 기본으로 하고 완전 연결 계층을 Affine 계층으로 구현했다. 하지만, 데이터의 형상이 무시된다는 완전연결 계층의 ..