ML

CNN[Convolutional Neural Network]

KAU 2021. 2. 11. 15:19

convolution이란 무엇인가?

2D Convolution

주어진 filter로 입력 영상에 Convolution하여 출력 영상을 얻어내는 과정

딥러닝에서는 해당 filter를 하나의 가중치로 보고 학습시키는 대상이 됨

 


 

RGB Convolution

컬러 이미지는 R,G,B 3개의 이미지로 구성됨

해당 이미지를 Convolution하기 위해서는 3개의 필터를 사용하여 1개의 Output을 가지는 것이 일반적


Multi Channel Convolution

1개의 층에서 여러 Convolution 출력 값을 도출해내기 위해 여러 Filter를 사용하여 Convolution 실시



Convolution을 왜 사용하는가?

CNN은 왜 잘 작동하는가?

1.Convolution을 사용하면 연산량이 적어짐
  컨볼루션 연산을 사용한 희소연결 구조로 낮은 복잡도 

  가중치(커널)이 공유되어 적은 매개변수

 

2.특징 추출에 용이


Convolution은 원래 영상처리에 자주 사용되는 기법

ex) Sobel mask를 사용해 영상에서 모서리를 검출

이러한 작업을 특징 추출 이라고 표현






Convolution은 특징 추출에 용이하다!

 


실습

torch.nn 라이브러리를 임포트해주고 

인풋 1x1x28x28을 설정해준다.

 

CNN에서 사용되는 계층을 .nn 라이브러리 함수를 이용하여 정의해주는 모습이다.

 

각종 레이어에 통과 시켜서 .shape로 찍어 보면 데이터의 형태가 변한것을 알 수 있다.

 

마지막으로 view함수를 사용해 일자로 편 후에 Fc 레이어를 통과시켜주는 모습이다.

fc 역시 .nn 라이브러리를 이용하여 정의할 수 있다.

64x7x7=3136으로 계산된다.


시각화툴 visdom & tensorboard

https://tutorials.pytorch.kr/intermediate/tensorboard_tutorial.html

 


왜 Batch Normalization을 사용하는가?

 

'ML' 카테고리의 다른 글

Resnet 리뷰  (0) 2021.02.25
ImageFolder [폐렴 분류해보기]  (1) 2021.02.18
Restricted Boltzmann Machine(RBM)  (0) 2021.01.30
로지스틱 회귀(Logistic regression)  (0) 2021.01.15
SqueezeNet [모델 압축] 논문 리뷰&구현 [Matlab]  (0) 2020.11.17