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)옆으로 두칸씩
<오버핏 보완점>
데이터늘림(회전, 반전 등으로)
네트워크 크기를 줄임
가중치 규제
드롭아웃
'인공지능(AI)' 카테고리의 다른 글
tensorflow keras 활용한 손글씨 맞추기 with Flask (0) | 2020.12.20 |
---|---|
노트북에 tensorflow with keras 설치 (0) | 2020.12.05 |
신경망에서 과대적합을 방지하기 위한 방법 (0) | 2020.11.06 |
overfitting (0) | 2020.11.06 |
성능지표 (0) | 2020.11.05 |