안녕하세요! 이번에 읽어볼 논문은 DCN, Deformable Convolution Networks 입니다!
DCN은 (1) deformable convolution, (2) deformable RoI pooling 두 가지 방법을 제시합니다. 기존 CNN 구조 모델은 고정된 구조만을 사용했었습니다. 예를 들어, 3x3 conv filter를 사용하면 3x3 수용 영역에서만 특징을 추출하는 것입니다. 이 경우에 translation-invariance가 생겨 object detection과 segmentation에 안좋은 영향을 줍니다. 이 논문은 고정된 수용 영역에서만 특징을 추출하는 것이 아니라, 좀 더 flexible한 영역에서 특징을 추출하는 방법을 제안합니다. 즉, 피쳐맵에서 규직적인 grid 내의 값을 sampling을 하는 것이 아니라, 좀 더 광범위한 grid cell의 값을 sampling 합니다.
(a)는 기존의 convolution에서 값을 추출하는 영역입니다. (b),(c),(d)는 deformable convolution으로 값을 추출하는 영역입니다. 좀 더 넓은 범위에서 값을 추출하므로 trans variance를 얻습니다.
Deformable Convolutional Networks
위 그림은 deformable convolution을 나타낸 그림입니다. 그림을 보면 input feature map에서 2 branch로 나뉘어 집니다. 1 branch는 offset을 계산하는 conv layer이고, 또 다른 branch는 offset 정보를 받아 conv 연산을 수행해 output feature map을 생성합니다.
기존의 conv 연산을 살펴보았을 때, 피쳐맵에서 정해진 grid에서만 특징을 추출합니다. 예를 들어, 3x3 filter를 사용하면 3x3 영역에서만 특징을 추출합니다. 그리고 이 값들은 weight와 곱해져 덧셈 연산이 작용됩니다. 수식으로 아래와 같이 표현할 수 있습니다.
p는 location을 의미합니다.
deformable convolution은 offset을 추가합니다.
offset이 추가 되어 좀 더 넓은 범위의 grid 영역에서 특징을 추출합니다. 또한 이 offset은 학습이 가능합니다. offset은 아주 작은 값이기 때문에 소수점이 될 수 있습니다. 소수점 위치의 값을 bilinear 연산을 통해 계산합니다.
xy 평면상의 bilinear 연산이므로 2N의 채널이 필요합니다. 또한 offset을 계산하는 filter는 오차 역전파법에 학습이 가능합니다. conv layer로 offset을 계산한 뒤에, 이 offset 정보를 추가하여 conv 연산을 수행합니다.
위 그림을 보면 deformable convolution을 적용했을 때, object scale에 따라 receptive field가 다른 것을 확인할 수 있습니다. 반면에 기존의 convolution은 object scale과 관계없이 고정된 영역에서만 특징을 추출합니다.
큰 객체 일수록 receptive 영역이 넓습니다. 배경 이미지의 경우 receptive field가 광범위하고, 자동차에는 좁은 범위의 receptive field가 형셩되었습니다. offset이 학습 가능한 변수이기 때문에 loss를 최소화하기 위한 방향으로 학습하는 것입니다.
일반적으로 object detection 또는 segmentation은 pre-trained model을 사용합니다. 따라서 모든 layer에 deformable convolution을 사용하는 것이 아니라, 마지막 1~3 layer만 deformable convolution으로 변경하여 전이 학습을 진행합니다.
Deformable RoI Pooling
RoI Pooling에도 Deformable 방법을 적용합니다. RoI Pooling은 RoI를 일정한 그리드로 나누어서, 해당 그리드에 속하는 값을 평균 또는 맥스 값을 취하여 고정된 크기의 피쳐맵을 생성했습니다. 생성된 RoI 범위 내에서 grid를 분할하는 것이 아니라, 생성된 RoI 범위보다 넓은 범위의 값을 이용하여 RoI Pooling을 수행합니다.
deformable convolution과의 차이점은 offset을 fc layer로 계산한다는 것입니다. 우선 RoI pooling으로 feature map을 생성하고, 여기에 fc layer를 거쳐서 offset을 생성합니다. offset 정보를 활용하여 deformable RoI pooling을 수행해 최종 feature map을 생성합니다.
deformable RoI pooling을 사용했을 때, 좀 더 중요한 정보를 갖고 있는 RoI를 이용한다는 것을 확인할 수 있습니다.
Performance
deformable 방법을 사용하니 성능이 향상되었습니다.
이 논문을 통해 배울 수 있는 점은 다음과 같습니다. (1) 객체의 크기와 receptive field가 상관관계가 있습니다. (2) 배경이나 큰 물체의 경우에 넓은 범위의 receptive field가 필요합니다. 고정된 3x3 필터를 사용하는 것이 아니라 더 넓은 범위에서 값을 추출하는 방법은 참신하네요. 또한 기존의 conv 연산에 의해 갖는 translation invariance를 deformable 방식으로 감소한다는 것이 참신했습니다.
참고자료