반응형

1.


논문링크 : https://arxiv.org/abs/1511.07122


Image Segmentation에 관한 논문이다.  Image Segmentation은 Object detection과 다른점이 여러개가 있는거 같다


Object detection은 boundary box내에 물체가 얼마큼의 확률로 그 물체인지를 구분해내는 문제라고 하면,

Image Segmentation은 픽셀픽셀마다 그 픽셀이 어느물체를 말하는지를 찾는 문제이기 때문이다.

(우리는 이 문제를 dense prediction 이라는 용어를 사용한다)


그래서 좀 더 어렵다(?) 라고 하긴하지만, 현재(2017년 8월)의 기술로는 꽤 성과가 좋다.


이번 시간에는 Multi-Scale Context Aggregation by dilated convolutions 이라는 논문을 통해서

Image Segmentation의 세계로 첫 발을 내딛어 보자






이미지에서 너무나 성능이 좋은 딥러닝 알고리즘. CNN.

그 CNN을 사용해서 여러가지 이미지 문제들을 풀려는 시도가 많았는데, Image Segmentation도 CNN으로 풀수가 있다.

그런데 CNN의 단점은 weight가 너무나 많아서 실제로 사용하기에 성능이 떨어지는 문제가 발생을 한다.

그래서 이 논문에서는 dilated convolution이라는 개념으로 그 문제를 해결을 하는데, 성능도 그만큼 좋다.




기존에 Image classfication 을 위해 디자인된 네트워크에다 segmentation을 하려는 시도가 있었는데, 꽤나 성공적이었다.

그래서 이 네트워크를 좀 더 dense prediction에 맞게 수정을 한다면 성능이 더 좋지 않을까라는 발상으로 이 논문이 시작이 되었다.


dense prediction은 최근에 multi-scale resoning과 full-resolution dense prediction 문제를 풀기 위한 방향으로 진행이 된다

이 논문은 해상도의 손실과 rescaled image를 분석하는 것 없이 multi-scale contextual information을 통합이 가능한 CNN 을 개발했다.

이것을 모듈로 사용이 가능하게 디자인이 되었는데, 입력사이즈와 출력사이즈가 동일하게 구성되어 어느 네트워크에다 붙여도 그것이 가능하게끔 구성을 했다.  이 모듈은 dilated convolution을 사용을 했는데, 이것이 이 논문의 핵심적인 아이디어니깐 제대로 집고 넘어가자


dilated convolutions 는 우리말로 번역을 하면 팽창하는 convolutons이라는 것이다. 기존의 CNN의 filter들이 커질때마다 필터갯수도 늘어나지만 dilated convolution은 파라미터의 갯수는 일정하고 filter의 크기가 늘어난다.

다음의 그림은 논문에 나와있는 그림1 이다.






사진을 보면 맨 왼쪽의 사진은 3x3 필터에다 파라미터가 9개가 존재한다. 그런데 (b)를 보면 파라미터는 9개로 동일하지만 필터의 크기는 7x7로 늘어났다. (c)도 마찬가지이다. 15x15로 필터사이즈는 커졌지만 알아야되는 파라미터는 9개로 동일하다. 늘어난 필터 사이사이는 0으로 채워줘서 크기를 유지해준다. 여기서 우리는 필터가 팽창한다는 느낌을 가질수가 있다. 이를 dilated convolution 이라고 한다. 이렇게 되면 dilated convolution을 사용하면

아무리 이미지가 커져도 학습해야되는 parameter가 같이 커지지를 않기때문에 부담이 사라지는 효과가 있다.



이렇게 dilated convolutions에 대해 알아보았으니

다음은 이 dilated convoltuon이 어떻게 사용이 되는지를 알아보자.


우리가 살펴보는 Multi-Scale Context Aggregation by dilated convolutions에서는 크게 두가지의 network module로 구성이 된다.

Image classification 네트워크를 수정해서 만든 , frond-end module과 그리고 context module이다.


먼저 간단한 front-end module을 살펴보면은 이 module은 VGG-16 network를 dense prediction에 맞게 수정한 것이다.

논문에 의하면 pooling layer를 없애고, 중간 레이어에 있는 padding을 하지 않았다고 나온다.

이 네트워크는 입력으로 컬러이미지를 받으면 아웃풋으로 C=21 인 feature map을 결과값으로 내보낸다.


( 구체적으로, 각각의 풀링 및 스트리딩 레이어는 제거되었고 모든 후속 계층의 변환은 제거된 각 풀 계층에 대해 2배의 계수로 확장되었다.
따라서 최종 계층을 따르는 최종 계층의 변환은 4배의 비율로 확장된다.
이를 통해 원래 분류 네트워크의 매개 변수를 초기화할 수 있지만 분해능이 높은 출력을 생성할 수 있습니다.

프런트 엔드 모듈은 입력된 이미지를 입력하고 분해능 64×64에서 형상 맵을 생성합니다.

반사 패딩을 사용합니다. 버퍼 영역은 각 에지에 대한 이미지를 반영하여 채워집니다.

우리의 프런트 엔드 모듈은 조밀한 예측을 위해 역효과를 내는 분류 네트워크의 흔적을 제거함으로써 얻어진다.

가장 중요한 것은 마지막 두개의 풀링 및 스트라이딩 레이어를 완전히 제거하는 것입니다. 그들과 Chen외에도 박리로 인해 교체되었으나 풀링 된 층을 유지했습니다.

우리는 풀링 계층을 제거함으로써 네트워크를 단순화하는 것이 더 정확하다는 것을 알아냈다.
또한 중간 형상 맵의 패딩을 제거한다.
중간 분류 네트워크는 원래 분류 네트워크에서 사용되었지만, 고밀도 예측에서는 필요하지도 않고 정당화되지도 않았다. )




이렇게 frond-end 네트워크를 구하고 나면, 그 담번에는 context module 이다.


context module의 목적은  다양한 크기의 contextual 정보를 모아서  dense prediction architecture의 성능을 향상시키기 위해서 만들어진것이다.

이 모듈은 C개의 feature map을 input값으로 받고, output을 C개의 feature map으로 생성하기 때문에, 이 모듈은 어느 dense prediction architecture에 사용을 해도 괜찮다.


논문에서는 기본적인 context module을 가지고 설명을 시작한다. 각각의 dilated factor가 다른 7개의 레이어(factor: 1,1,2,4,8,16,1) 와 3x3 convolution을 가진 형태로 시작한다.

그리고 기존의 cnn의 초기화 방법과는 다른방식으로 초기화를 진행을 한다. 왜냐하면 이것들이 생각보다 성능이 좋지 않았기 때문이었다.




a는 featuremap의 인덱스, outputmap의 인덱스는 b. 이 방법은 RNN방법에서 자주 쓰이는 방법이다.

일반적으로 이렇게 초기화를 하면 backpropagation이 잘 안된다고 하는데,

실제로 논문에서 해본바에 따르면 backpropagation이 잘되어서 featureMap의 정확도를 높여준다고 한다.

이렇게 해서 multi-scale Context aggregation을 위한 context module도 완성이 된다.


실제로도 꽤나 좋은 성능을 보이는데, 이 부분은 논문을 참고하면 좋을것 같다.



현재까지 dilated convolution, front-end module, context module 이렇게 해당 논문에서 중요하게 생각하는 것들에 대해

그 개념을 알아보았다. 그런데 명확히 와 닿는 부분이 부족해서

다음 시간에는 코드를 보면서 이에 대한 명확한 것들을 채워나가보자

반응형

+ Recent posts