인공지능(AI)

CNN

sysman 2020. 11. 6. 14:13

각 색의 농도를 0 ~255 숫자로 표현
그림들을 보면 숫자로 인식 되게 만듬
사진에서 RGB 3개 컬러를 channel 이라고함

 

 

CNN 구성요소

  • Convolution(합성곱)
  • 채널(Channel)
  • 필터(Filter)
  • zero padding
  • 커널(Kernel)
  • 스트라이드(Strid)
  • 패딩(Padding)
  • 피처 맵(Feature Map)
  • 액티베이션 맵(Activation Map)
  • 풀링(Pooling) 레이어
  • flatten

합성곱

노란색 필터를 그린색 원본에 대입하여 각픽셀을 곱한것을 다 더한값(핑크색)을 추출함

채널 : Red 사진, Green 사진, Blue 사진 각각을 channel 이고 각각 필터가 있어서 각각 적용됨

위 사진은 (5x5x1) 로 표현되며 RGB가 있는 사진이라면 (5x5x3)으로 표현된다.

필터 & 스트라이다

필터는 특성 즉, 가중치 덩어리 이며 이것을 대입하여 피쳐맵을 만든다.

y=wx+b에서 필터는 w이고, x는 input데이터로 보면된다.

스트라이다는 filter가 왼쪽부터 대입해서 오른쪽으로 이동하면서 피쳐맵을 대입하는데 이동하는것을 스트라이다라고 함

C2에서 여러가지 필터를 적용해서 더하여 피처맵을 생성하며 3중 채널이면 각 필터에 대입하여 더한 값을 피쳐맵으로 만든다.이 피쳐맵에 activation적용 즉, 예로 해당 맵에 relu적용한 결과를 activation map이다. 

 

 

 

제로 패딩

zero padding:

1.모서리 부분에서 같은 필터를 러닝이 덜 러닝 되고 중심부쪽은 많이 러닝이 되기 때문에 이를 보완하기 위해서 주변에 0으로 둘러 씌어서 보완시킨다.

2. 피처맵이 그냥 연산하면, 2x2를 필터로 2x2로 연산해서 풀링하게 되면 1개만 나오기 때문에 특성이 사라질 수 있기때문에 주변 제로패딩을 시키면 그 특성이 손실되지 않고 유지될수 있다.

풀링(Pooling)

activation map에서 각 색깔에서 가장 높은 수를 매핑 시켜놓은 것을 max pooling

같은 색끼리 다 더해서 평균낸 값을 매핑 시켜놓은 것을 average pooling이다.

풀링 이유 : 연산감소, overfitting 방지(강항패턴만 남김), 

 

 

플래튼(flatten)

flatten : 어느정도 맵이 만들어지면 1행으로 transpose 시킴 (전처리 과정) 그 이후 분류에 사용한 퍼셉트론에 적요함 

 

backpropagation

https://medium.com/@14prakash/back-propagation-is-very-simple-who-made-it-complicated-97b794c97e5c

필터(filter)

sobel -x

sobel- y

 

새로선검출

가로선 검출 필터

 

 

stride :필터가 원본 이미지데이터의 행렬을 순회할때 지정하는 간격

2개를 주면 학습률이 떨어질 수 있다., 학습률은 떨어져도 오버핏방지 할 수 있다.

 

이미지 분류 : 싱글 object, 멀티 object

싱글 object

classification

classification+localization

멀티 object

object detection

instance segmentation

 

<옵션사항>

kernel_size=커널 사이즈

filters = 컨볼루션 레이어 결과의 피처맵 수=커널 갯수  홀수로 많이 사용 (3,5, 11)

Padding = 패딩주는 방식(valid, same)

same : inputdata shape 그대로 유지

valid : 패딩 아무런 별도 지정 안함(패딩적용안함)

activation = 활성 홤수 지정

use_bias = 편향 사용 유무( 디폴트= True )

stride-(1,1)한칸씩 (1,2)옆으로 두칸씩

 

<오버핏 보완점>

데이터늘림(회전, 반전 등으로)

네트워크 크기를 줄임

가중치 규제

드롭아웃