5.1 MobileNet
- 이제까지 본 아키텍쳐들은 고성능의 디바이스 환경의 경우였습니다. 하지만 자동차, 드론, 스마트폰 같은 cpu를 하나밖에 안갖고있거나 메모리도 부족한 경우에는 적합한 아키텍처가 아니었습니다.
- MobileNet은 컴퓨터 성능이 제한되거나 배터리 성능이중요한 디바이스에서 사용될 목적으로 설계된, parameter를 획기적으로 줄인 CNN 구조입니다.
다음의 그림은 MobileNet의 전체 구조를 나타낸 그림입니다. 생긴건 앞에서 본 VGG와 비슷하게 생겼으나, MobileNet은 학습할 parameter를 줄이기 위해 Depthwise Convoultion과 Pointwise Convolution이라는 기법을 사용했습니다.
Depthwise Convoultion이란, 채널별로 컨벌루션을 하는 연산이고,
Pointwise Convolution 이란, Bottleneck Layer를 써서 채널을 줄이는 연산입니다
이 방법들을 쓰면 기존의 convolution 연산때보다 연산량이 줄어들 수 있습니다.
다음의 예시를 보겠습니다. Input = (3 x 3 x 3)이라고 가정할 때,
일반 (3 x 3) Conv 연산을 하면, 출력맵의 크기는 (3 x 3 x 3) * (3 x 3 x 3 x 3) = (3 x 3 x 3)이 되고, 이때 학습할 parameter 수는 (3 x 3 x 3 x 3) = 81개가 나옵니다
하지만 MobileNet에서는, Input을 채널별로 다 떼낸뒤 Conv 연산을 한 뒤, 연산해 나온 결과를 합하고, 그 후 (1 x 1)크기의 Bottleneck Layer를 씁니다. 최종 출력맵의 크기는
(3 x 3 x 1) * (3 x 3 x 1) = (3 x 3 x 1) -> (3 x 3 x 3), (3 x 3 x 3) * (3 x 1 x 1 x 3) = (3 x 3 x 1)이 되고, 이때 학습할 parameter 수는 (3 x 3) x 3 + (1 x 1) x 3 x 3 = 36개가 나옵니다
이때, 실험 결과를 보면, VGG나 GoogLeNet에 비해 학습할 parameter는 적은데 성능은 뒤떨어지지 않는 다는 것을 알 수 있습니다
5.2 U-Net
U-Net을 알기 전에 먼저 Segmentation 할때의 문제점을 알아보겠습니다. VGG, AlexNet 같은 경우, 계층의 앞부분엔 Conv layer를 쓰지만 끝부분에 FC layer를 넣었기 때문에 특징맵 내의 위치정보가 사라집니다. Segmentation은 각 픽셀당 클래스를 구분해야 하기 때문에 위치정보가 매우 중요합니다.
그리하여 끝부분의 FC 계층를 모두 CONV 계층으로 바꿔보지만, 이 경우 특징맵이 너무 작아져서 Coarse map이 됩니다. 그러므로 이 Coarse map을 up sampling을 통해 특징맵을 키워줍니다.
하지만 근본적으로 특징맵이 너무 작기에 up sampling 된 특징맵은 정교할 수 없게됩니다
- U-Net은 이를 해결하기 위해 작은 특징맵을 up sampling된 특징맵과 결합하는 방식으로, semantic 정보와 localization 문제를 해결하는 아키텍쳐입니다.
- U자 모양의 왼쪽 영역을 Contracting Path, 오른쪽 영역을 Expanding Path라고하는데, Contracting Path는 그저 VGG 구조로, 입력 이미지의 특징을 추출하는 과정입니다. Expanding Path에서는, Contracting Path의 최종 특징 맵으로부터 Up-sampling을 진행하고, 이전 layer에서 나온 특징맵과. up sampling 으로 나온 특징맵을 결합시켜줍니다.
- U-Net의 구조는 아주 적은 양의 학습 데이터만으로 Data Augmentation을 활용하여 여러 Biomedical Image Segmentation 문제에서 우수한 성능을 보여주는 아키텍처입니다
5.3 ResNext
- ResNext는 Residual block의 병렬 경로들인 Cardinality를 추가해줬고, 이렇게 병렬 경로를 만든 block 들을 쌓아서 만든 아키텍처입니다.
- 이처럼 Residual block의 너비를 넓히면 계산효율이 증가하게 되는데, 얉은 ResNext 구조로 ResNet 성능과 비슷한 성능을 낼 수 있습니다.
5.4 DenseNet
- DenseNet은 Dense Block을 쌓아서 만든 아키텍처입니다
- Dense Block이란, 입력 이미지는 모든 하위 layer의 입력으로 들어가게 하고, 그 뒤, 모든 Conv layer의 출력과 입력이미지가 concatenation됩니다. 또한 Conv layer의 출력 또한 모든 하위 layer 입력으로 들어가게 됩니다
- 그 결과, ResNet처럼 이전의 레이어와 다음 레이어를 이어줌으로써 특징맵의 흐름을 개선시켜 주고, 이전 레이어의 입력을 그대로 전송시켜줌으로써 기울기 소실 문제도 해결할 수 있습니다.
'대학원 준비2' 카테고리의 다른 글
CNN 아키텍처 정리4 - ResNet (0) | 2020.09.09 |
---|---|
CNN 아키텍처 정리3 - GoogLeNet (0) | 2020.09.09 |
CNN 아키텍처 정리2 - VGG (0) | 2020.09.09 |
CNN 아키텍처 정리1 - AlexNet (0) | 2020.09.09 |