KimDahye / deeplearning_study

0 stars 0 forks source link

Lecture 10: Convolutional Neural Networks #10

Open kukugi opened 2 years ago

kukugi commented 2 years ago

Convolutional Neural Networks

Computer Vision

컴퓨터 비전은 딥러닝에 의해 빠르게 발전해오는 분야중 하나이다. 컴퓨터 비전에 대한 딥러닝이 흥미로울 것이라고 생각하는 이유에는 두가지가 있다.

스크린샷 2021-10-27 오후 7 01 34

컴퓨터 비전의 문제중 하나는 입력값이 매우 커질 수 있다는 것이다. 예를들어 1000 X 1000 크기의 RGB 채널을 가진 이미지를 입력받는경우,

이렇게 파라미터가 많아지면 문제점이 생긴다.

Edge Detection Example

스크린샷 2021-10-27 오후 7 02 30 6x6x1 의 이미지가 있을 때, vertical edge 를 감지하기 위해서 3x3 매트릭스를 사용할 것인데, 이러한 행렬을 filter 라고 부른다. 이미지와 필터를 convolution 연산을 해서 4x4 행렬의 결과를 얻을 수 있다. 행렬의 각 요소의 값은 이미지와 필터간의 요소간 곱셈결과를 전부 더한값을 넣는다.

스크린샷 2021-10-27 오후 7 03 23 더 직관적인 예제로 다음과 같이 왼쪽은 10, 오른쪽은 0 인 입력값이 있을 때, 필터와 convolution 한 결과 가운데에 edge 가 감지됨을 확인 할 수 있다.

More Edge Detection

filter 를 변경함으로써 다른 형태의 edge 도 찾을 수 있다. 스크린샷 2021-10-27 오후 7 05 54

위와 같이 vertical edge 를 찾는 필터를 90도 회전하는 경우, horizontal edge 를 찾는 필터로 사용할 수 있다.

스크린샷 2021-10-27 오후 7 07 55

이렇게 우리가 9개의 숫자를 선택할 수 있는데, 딥러닝에서는 직접 선택할 필요가 없으며, 학습을 통해서 이 값들을 얻게 된다. 그래서 어떤 방향의 edge 도 감지할 수 있게된다.

Padding

스크린샷 2021-10-27 오후 7 09 53

n x n 행렬과 f x f 행렬을 convolution 연산의 결과는 (n-f+1) x (n-f+1) 형태의 행렬이 될 것이다. 이는 두가지 단점을 가지고 있다.

이럴 때, 이미지를 padding 하는것이 해결책이 될 수 있다.

스크린샷 2021-10-27 오후 7 10 05

valid convolution : 패딩을 하지 않는 convolution 연산 same convolution : 패딩을 해서 결과값의 크기가 입력값과 같게끔 하는 convolution 연산

필터의 사이즈는 주로 홀수로 작성한다.

Strided Convolutions

스크린샷 2021-10-27 오후 7 10 24

stride 는 convolution 연산을 할 때, filter 와 요소간 곱셈을 하는 영역을 한칸씩 이동하는 것에서, stride 값 만큼씩 이동하는 것을 의미한다.

스크린샷 2021-10-27 오후 7 10 51

Convolutions Over Volume

스크린샷 2021-10-27 오후 7 12 10

실제 이미지는 RGB 채널을 가지고 있기 때문에, 2d 입력이 아니고 3d 입력이라고 할 수 있다. edge 를 감지하길 원하는 채널에 해당하는 필터의 채널에 값을 채워서 edge 를 감지할 수 있다. edge 를 찾고 싶지 않은 채널은 값을 모두 0으로 한다.

여러개의 필터를 사용하고 싶다면, 여러개의 필터와 convolution 연산을 하고 결과를 여러개의 레이어로 쌓는다.

One Layer of a Convolutional Network

스크린샷 2021-10-27 오후 7 12 46 convolution 연산의 결과에 bias 를 추가하고 ReLu를 적용하는 것으로 CNN 의 한 레이어를 만들어 볼 수 있다.

스크린샷 2021-10-27 오후 7 13 39

Simple Convolutional Network Example

스크린샷 2021-10-27 오후 7 21 00 convolutional network 예제이다. 다음과 같은 특성을 가지는 것을 확인 할 수 있다.

스크린샷 2021-10-27 오후 7 14 17 convolutional 신경망의 레이어에는 세가지 타입이 있다.

Pooling Layers

스크린샷 2021-10-27 오후 7 15 27 max pooling : 특정 영역의 최대값을 취하는 방법 average pooling : 특정 영역의 평균값을 취하는 방법

Why Convolutions?

convolution 을 사용했을때, 파라미터 갯수를 많이 줄일 수 있다. 스크린샷 2021-10-27 오후 7 16 53 convolution 이 이렇게 파라미터 갯수를 줄일 수 있는 이유는 다음과 같다.