CNN(합성곱 신경망)과 CNN의 구조
- 이미지는 위치에 맞는 공간적인 특성을 가지고 있음
- 합성곱층은 이미지의 일부분을 훑으면서 연산이 진행되며 특징을 잡아내어 학습하기 때문에 층이 깊어지더라도 공간적 특성을 최대한 보존할 수 있음
CNN 구조
![](https://velog.velcdn.com/images%2Fhyesukim1%2Fpost%2F47b03532-4e74-42f8-b805-f9316899c7c9%2Fimage.png)
출처: 코드스테이츠
합성곱
- 합성곱 층에서는 합성곱 필터 또는 슬라이딩하며 이미지 부분부분의 특징을 읽어나감
패딩(padding)
- 패딩은 이미지 외부를 특정한 값으로 둘러싸서 처리해주는 방식
- 0으로 둘러싸주는 제로-패딩이 가장 많이 사용함
- 연산되어 나오는 output, 즉 feature map의 크기를 조절하고 실제 이미지 값을 충분히 활용하기 위해 사용됨
스트라이드
- stride를 조절하면 슬라이딩 시에 몇칸씩 건너 뛸지를 나타냄
풀링
- 가로,세로 방향의 공간을 줄이기 위한 풀링을 수행
1. 최대풀링
- 정해진 범위내에서 가장 큰 값을 꺼내오는 방식
2. 평균 풀링
- 정해진 범위내에 있는 모든 요소의 평균을 가져오는 방식
- 일반적으로 이미지 처리할 떄는 각 부분의 특징을 최대로 보존하기 위해서 최대 풀링 사용
특징: 학습해야할 가중치가 없으며 채널 수가 변하지 않는다는 특징이 있음
완전 연결 신경망
- 이전에 구축했던 다층 퍼셉트론 신경망으로 구성되어 있으며 풀어야하는 문제에 따라 출력층을 잘 설계해 주는 것이 좋음
CNN의 학습
- 학습되는 가중치가 있는 부분: convolution 층에 있는 filter의 가중치
전이학습
-
대량의 데이터를 학습한 사전학습 모델의 가중치를 그대로 가져온 뒤 분류기, 즉 완전 연결 신경망 부분만 추가로 설계해서 사용
-
일반적으로 사전학습 가중치는 학습되지 않도록 고정한 채로 진행되기 때문에 빠르게 좋은 결과를 얻을 수 있다는 장점이 있음
이미지 분류를 위한 주요 사전 학습 모델
VGG, Inception, Resnet
VGG 특징
![](https://velog.velcdn.com/images%2Fhyesukim1%2Fpost%2Fc66ce2c0-daac-4ca1-ae8f-c6a01459eb20%2Fimage.png)
출처: 코드스테이츠
그림 설명
- 가장 왼쪽이 인풋임, 이미지의 크기 224*224인데 딥러닝 기준 큰 편, 컬러 이미지라서 3개의 채널
- 검정색 선으로 된 사각형이 conv2d
- 빨간색 선으로 된 사각형이 maxpool2d
- 3*3 컨볼류션을 두번하고 64개의 필터를 사용하고 맥스 풀을 진행하고 이미지 사이즈가 절반으로 줄어듦
- 3*3 컨볼류션 두번 하고 128개의 필터를 사용하고 맥스 풀 진행하고 이미지 사이즈가 절반으로 줄어듦
- 3*3 컨볼류션 세번 하고 256개의 필터를 사용하고 맥스 풀 진행하고 이미지 사이즈가 절반으로 줄어듦
- 33 컨볼류션 세번 하고 512개의 필터를 사용하고 맥스 풀 진행하고 이미지 사이즈가 절반으로 줄어듦
-33 컨볼류션 세번 하고 512개의 필터를 사용하는데 컨볼류션 필터갯수를 더 늘리지 않았고 맥스 풀 진행하고 이미지 사이즈가 절반으로 줄어듦
- flatten으로 일렬로 늘려줌(114096)
- 아웃풋은 1000개 이고 그 이유는 이미지넷 첼린지가 1000개의 클래스를 분류하기 때문임
-즉, dense 4096, dense 1000
- 모든 합성곱층에 3*3 필터를 사용
- 대신 층을 깊게 쌓음으로서 기조 77, 1111 크기의 필터 이상의 표현력을 가질수 있도록 함
- 활성화 함수로 relu를 사용하고 가중치 초깃값으로 He 초기화를 사용
- 층을 깊게 쌓았음에도 기울기 소실 문제가 발생하지 않음
- 마지막으로 완전 연결층에 dropout을 사용하여 과적합 방지 및 옵티마이저는 Adam 사용
Google net
![](https://velog.velcdn.com/images%2Fhyesukim1%2Fpost%2Fb73cef0e-be68-46ea-af81-a86954d45830%2Fimage.png)
출처: 코드스테이츠
- 기본적인 합성곱 신경망이 결합된 형태
- 세로 방향의 깊이 뿐만 아니라 가로 방향으로도 넓은 신경망 층을 가지고 있다는 것이 특징
- 가로 방향으로 층을 넓게 구성한 것을 이넵션 구조라고 하는데 이 구조를 활용해 크기가 다른 필터와 풀링을 병렬적으로 적용한 뒤 결과를 조합
Resnet
![](https://velog.velcdn.com/images%2Fhyesukim1%2Fpost%2F573711e4-d6f9-4942-b245-3751b2335206%2Fimage.png)
출처: 코드스테이츠
- 위 이미지에서 층을 넘어 이어지는 화살표를 볼 수 있는데 화살표는 resnet의 특징인 Residual connection(=skipped connection)임
- 층은 거친 데이터 출력에 거치지 않은 출력을 더해줌
이미지 증강
- 물체가 기울여져있거나 뒤집어진 이미지에서는 잘 예측을 못하기 때문에 일반화가 잘되는 모델을 만들기 위해서 학습 데이터 셋에 있는 이미지를 일부로 회전하거나 기울여서 나타내는데 이러한 방법을 이미지 데이터 증강이라고 함
합성곱 출력 데이터 크기 계산
입력 데이터 높이: H
입력 데이터 폭: W
필터 높이: FH
필터 폭: FW
Strid 크기: S
패딩 사이즈: P
![](https://velog.velcdn.com/images%2Fhyesukim1%2Fpost%2F7cd68301-cc10-4cf7-9b34-afef98184d35%2Fimage.png)
문제
조건1) 입력되는 데이터의 크기는 (256, 256, 3)입니다.
조건2) 필터 하나의 크기는 (5, 5)입니다.
조건3) 필터는 총 3개입니다.
조건4) 스트라이드는 2입니다.
조건5) 패딩은 적용하지 않습니다.
답
(126, 126, 3)