본문 바로가기

대학원 준비2

CNN 아키텍처 정리5 - 그 외 아키텍처(MobileNet, U-Net, DenseNet, ResNext)

5.1 MobileNet

이제까지 본 아키텍쳐들은 고성능의 디바이스 환경의 경우였습니다. 하지만 자동차, 드론, 스마트폰 같은 cpu를 하나밖에 안갖고있거나 메모리도 부족한 경우에는 적합한 아키텍처가 아니었습니다.

 

MobileNet은 컴퓨터 성능이 제한되거나 배터리 성능이중요한 디바이스에서 사용될 목적으로 설계된, parameter를 획기적으로 줄인 CNN 구조입니다.

 

다음의 그림은 MobileNet의 전체 구조를 나타낸 그림입니다. 생긴건 앞에서 본 VGG와 비슷하게 생겼으나, MobileNet은 학습할 parameter를 줄이기 위해 Depthwise ConvoultionPointwise 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개가 나옵니다

 

이때, 실험 결과를 보면, VGGGoogLeNet에 비해 학습할 parameter는 적은데 성능은 뒤떨어지지 않는 다는 것을 알 수 있습니다

 

5.2 U-Net

U-Net을 알기 전에 먼저 Segmentation 할때의 문제점을 알아보겠습니다. VGG, AlexNet 같은 경우, 계층의 앞부분엔 Conv layer를 쓰지만 끝부분에 FC layer를 넣었기 때문에 특징맵 내의 위치정보가 사라집니다. Segmentation은 각 픽셀당 클래스를 구분해야 하기 때문에 위치정보가 매우 중요합니다.

 

그리하여 끝부분의 FC 계층를 모두 CONV 계층으로 바꿔보지만, 이 경우 특징맵이 너무 작아져서 Coarse map이 됩니다. 그러므로 이 Coarse mapup 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