(3강) Image classification 2

💡
CV분야에서 큰 성과를 거둔 CNN 모델에 대해 알아본다.

Problems with deeper layers

AlexNet과 VGGNet의 등장으로, 더 넓고 깊은 Neural Network가 좋은 성능을 보일 것이라고 기대되었다. 실제로, 은닉층이 깊고 넓을수록 더 큰 Receptive Field를 가지며, 더 다양한 Non-Linearity를 표현할 수 있다.

하지만, 기존의 구조에서는 다양한 문제가 발생했다. Gradient가 Vanishing되거나 Exploding되는 Degradation Problem이 발생했고, 계산 자체의 복잡도가 높아지는 등의 현실적인 제한사항이 존재했다.

CNN architectures for image classification 2

GoogLeNet은 Inception Module을 도입해 다양한 크기의 Filter의 결과를 활용했다.

GoogLeNet의 Inception Module의 예시

이 구조의 가장 핵심적인 아이디어는 1x1 Filter를 활용한 Bottleneck구조이다. Feature Map을 1x1 Filter를 통과시켜 채널의 크기를 축소시키는 것이다. 이를 통해서 필요한 파라미터의 수를 획기적으로 감소시켰다.

GoogLeNet은 Inception Module을 쌓아 올리는 형태의 구조를 가지면서, Degradation Problem을 해결하기 위해 새로운 Branch를 도입했다.

모델의 중간결과를 출력하는 Softmax Activation Branch를 확인할 수 있다.

Auxiliary Classifier는 Module의 중간 결과를 생성하는 Branch로, 학습시에 활용된다. 이 Branch를 통해 중간 층에서 Loss를 구할 수 있으며, 이 Loss를 활용한 Gradient를 활용하여 하위 층도 적절한 학습을 할 수 있도록 구성했다.

ResNet은 높은 성능으로 지금도 다양하게 활용되고 있는 모델이다. 당시 ResNet은 152개의 Layer를 사용하는 모델까지 제시했는데, 이는 기존의 모델과는 비교되지 않을 수준의 깊이이다. 즉, 아주 깊은 층을 구성하면서도 Degradation Problem을 해결했다는 데에 아주 큰 의미가 있다.

ResNet은 위 문제를 해결하기 위해 Residual Block을 제시했고, 이 구조는 DL Modeling에 큰 영향을 주었다.

Residual Block의 예시

Residual Block을 통한 Degradation Problem Solving은 다양한 이유로 해석되고 있다. 기존의 Plain Layer가 학습해야 하는 함수가 H(x)H(x)라고 한다면, Residual Block이 학습해야 하는 함수는 H(x)xH(x) - x이기 때문에, 학습 내용에 대한 복잡도가 낮아지는 것을 하나의 이유로 설명한다. 또한, 각 Layer가 수용하는 Gradient가 2n2^n에 비례하는 값을 수용하기 때문이라고도 해석된다.

ResNet의 전체 Architecture를 살펴보면 아래와 같다.

ResNet Architecture 예시

He Initialization을 통해 작은 값으로 초기화 하고, 각 Block 내에서는 2개의 3x3 Filter를 사용했다. 블록을 넘어갈때마다 Stride를 2로 설정하여 공간이 반씩 줄어들도록 설계했으며, 최종적인 결과는 Global Average Pooling과 Fully Connected Layer 1개를 통해 출력되도록 구성되어 있다.

DenseNet은 직전의 Residual Block의 결합시 Element-wise Sum 대신 Channel축의 Concatenation을 수행해, Feature Map의 정보를 보존하고자 했다. 또한, 직전의 Layer뿐만 아니라, Block내의 모든 Layer로부터 Feature Map을 결합하는 형태로 구현되었다.

DenseNet 예시

SENet은 Skip Connection 대신, Attention 기법을 사용한 모델이다. Squeeze and Excitation 연산을 통해서 각 Feature Map간의 중요도를 계산하고, 이를 통해 Re-weighting하여 값을 전달하는 방식을 사용했다.

SENet 예시

EfficientNet은 기존의 모델링 방식을 효과적으로 결합한 형태로 모델을 구성했다. 기존에는 Dept, Width, High Resolution 중 한 가지를 Scaling하는 형태로 모델링했으나, EfficientNet은 세가지 모두를 적절하게 Scaling해 구성했다. 이를 통해 기존의 모델보다 월등히 높은 성능을 보이고 있다.

EfficientNet의 성능 예시

Deformable Layer은 Irregular한 Filter를 사용해 이미지의 형태에 따른 특성을 찾고자 한 시도이다.

Deformable Layer의 예시

Summary of image classification

대표적인 CNN모델은 다음 표로 정리할 수 있다.

각 모델의 성능과, 학습속도, Parameter의 크기를 확인할 수 있다.

GoogLeNet은 VGGNet이나, ResNet보다 효율적인 모습을 보이나, GoogLeNet의 복잡한 구조 때문에 Backbone으로 사용되는 경우는 드물다. (Inception v4도 GoogLeNet의 일종이다.) 현재는 Backbone Network로 EfficientNet, ResNet, VGGNet이 자주 활용된다.


(4강) Semantic segmentation

💡
Image내의 각 Pixel에 대해서 분류하는 Task와 Model에 대해 알아본다.

Semantic segmentation

Semantic Segmentation Task는 Image를 Pixel 단위로 분류하는 문제이다. 각 픽셀이 어떤 클래스에 속하는지만 분류해낸다. 이는 Image내의 Content를 이해하거나, 편집을 하는 등에 매우 유용히 쓰일 수 있는 Task로, Photo Graphics에서 자주 활용된다.

Semantic segmentation architectures

Semantic Segmentation Task를 수행하기 위해서는 기존의 Classification과는 다른 모델의 구조가 필요하다.

Fully Connected Layer와 Fully Convolution Network의 예시

Classification에서 사용하던 Fully Connected Layer는 Flatten을 통해 공간의 개념을 갖지 않는 Tensor를 사용했다. Semantic Segmentation은 공간에 대한 정보가 필요하기 때문에, 새로운 출력 Layer를 필요로 했다. 이 방법으로 사용된 것이 1x1 Convolution을 활용한 출력 Layer이다. 모든 Layer를 Convolution화 한 것으로, Fully Convolution Network (FCN)이라고 칭한다. FCN을 활용했을 때의 추가적인 장점으로, 어떤 이미지의 해상도이든 관계 없이, 활용이 가능하다는 것이다.

위 FCN의 출력은 CNN모델을 통과한 결과로 낮은 해상도를 갖는다. 각 해상도에 해당하는 Pixel은 CNN을 통과하며 넓은 Receptive Field를 가지나, 그대로 출력으로 활용할 수는 없다. 해당 정보를 기존 Image의 해상도로 키워주는 Upsampling이 필요하다. Upsampling의 방법은 Transposed Convolution과 Upsample and Convolution으로 구분할 수 있다. Transposed Convolution은 Convolution Filter를 적용해 더 큰 해상도의 Image를 만드는 방법이지만, Check Block이 나타나는 등의 현상을 고려해야한다. 요새는 Decompose Upsampling이후에 학습가능한 Convolution Filter를 적용하는 방법을 자주 사용한다.

FCN의 기본적인 모델링 패러다임은 다음과 같다.

  1. Downsampling을 수행하며, 각 Pixel의 Receptive Field를 넓힌다.
  1. Downsampling의 Feature Map을 저장한다.
  1. Upsampling을 수행하며, 원본의 해상도로 복구한다.
  1. Upsampling시 중간 해상도에 해당하는 Feature Map을 결합하여 활용한다.
FCN 모델의 구조 패러다임 예시

FCN의 낮은 Layer에는 Receptive Field가 작아 국지적이지만 디테일에 민감한 Feature Map이 생기고, 높은 Layer에는 전역적으로 판단하지만 디테일에는 둔감한 Feature Map이 생긴다. 이 둘의 정보를 적절히 조합하는 방식으로 FCN 모델이 구성되는 것이 좋은 성능을 보이고 있기 때문에, 위와 같은 패러다임이 등장했다.

비슷한 시기에 발표된 Hypercolumns for object segmentation도 FCN과 유사한 형태를 가지나, End-to-End 모델이 아닌 단점을 갖고 있다. (Bounding Box의 개념이 들어가며, 이를 다른 알고리즘을 통해 추출한다.)

U-Net은 이후의 비슷한 Task에 기원이 될 정도로 정교한 성능을 보인 모델이며, FCN의 구조를 기반으로 설계되었다.

U-Net의 구조 예시

U-Net은 FCN을 조금 더 정교하게 구성했다. Contracting Path에서는 각 Block마다 사이즈는 반으로 줄이고, Channel은 2배씩 증가시켰다. (3x3 Filter를 사용) Expanding Path에서는 각 Block마다 사이즈를 2배씩 증가시키고, Channel을 반씩 줄이는 방법을 사용했다. (2x2 Filter를 사용) Skip Connection을 통한 결합은 Concatenation을 수행했고, 1x1 Filter와 ReLu를 활용했다. U-Net의 구조는 2배씩 증가 혹은 감소하도록 되어 있어, 2의 승수인 Image의 사이즈만을 사용할 수있다. 이처럼 구성한 이유는 Checker Block과 같은 현상을 방지하기 위함이다.

DeepLab은 CRF와 Dilated Convolution을 도입해 위 Task의 한 획을 그은 모델이다. Conditional Random Field (CRF)란, Graphic의 후처리에 사용되는 Tool이다. CRF는 Image내의 각 Pixel간의 관계를 매핑하는데, 이를 통해 경계를 잘 구분짓도록 하는 것이다. Dilation Convolution은 Filter의 크기는 유지한 채로 Receptive Field의 크기를 획기적으로 증가시키는 방법이다. Filter가 적용되는 Weight 사이에 빈 공간을 추가하는 개념이다. 이를 통해 Parameter는 증가하지 않고, Receptive Field만 증가한다. 연산 시에도 Depthwise Separable Convolution을 수행해서, 연산의 속도를 획기적으로 증가시켰다.

DeepLab v3+의 구조 예시


Reference

ResNet Paper

Checkerboard Artifacts Paper

FCN Paper

U-Net Paper

+ Recent posts