Convolution filter가 고정되지 않고 알아서 퍼지기에넓은 범위를 볼 수 있다!!
이에 대한 증명으로 ERF를 사용 (ERF 확인 시, 넓게 퍼짐을 통해 증명)
2. ViT & Main Contribution
따라서 이 논문에서는 SOTA ViT에서 MSA 대신,
"DCN(Deformable Convolution)을 잘 끼워 넣는다는 것"이 주요 내용이다.
→ 정확도∙연산량 등 transformer SOTA보다 더 좋다는 것이 main contribution
3. DCN v1 / DCN v2
[등장이유]
크기, 포즈, 시점 등의 이유로 SIFT, Affine transform 등의 전처리가 필요한 경우가 존재.
CNN내에서, 알아서 conv연산이 필요한 경우, conv연산이 이루어지도록 학습해보자!라는 취지
[기존 CNN 연산]
3x3 filter의 경우, 하나의 output feature element를 만들기 위해 다음과 같은 연산을 진행한다.
Feature vector의 3x3크기만큼 conv연산 진행, 그 값을 모두 더함 → 하나의 element로 만드는 작업을 반복
[DCN V1의 주장]
이때, pn을 학습하게 하는 것이 DCN이다!
📌 이때, pn이 3x3상수가 아닌, learnable param인 ∆pn이 된다면?
→ 이상적으로 알아서 학습이 필요한 위치에서 convolution이 진행될 것.
🚩 위치 학습 방법
1. 기존 convolution과 별개로 pn을 학습할 수 있는 convolution(∆pn)을 하나 더 붙임 2. p 를 weight처럼 학습 3. 그 p 를 feature x를 통해 convolution을 진행. 4. 이를 통해 위치정보가 반영된 convolution을 할 수 있게 됨.
[DCN V2의 주장]
위치 + 중요도∙영향력도 고려.
filter의 위치에 따른 영향력, mn(modulation변수)를 고려해보자!
🚩영향력 학습 방법
1. 앞과 같이 단순히 convolution을 하나 추가 2. 같은 방법으로 영향을 받는 정도까지 학습
4. DCN V3
<기존 DCN V1, V2의 문제점>
위의 DCN V2를 그대로 ViT에 넣으려고 하니 다음과 같은 문제가 발생
문제점
Prob 1) ViT SOTA에 끼워넣을 때, Convolution 개수에 따라 linear하게 parameter와 memory복잡성이 증가
Prob 2) DCN V2의 modulation이 불안정
ERF의 경우 ∙ modulation filter의 sigmoid: 어떨 때는 평균이 1에 가깝고 어떨 때는 0에 가까움 ∙ 이는 output에서 어느 것이 중요한지 판단이 안됨 (= 불안정)
<DCN V3의 3가지 Solution>
1. MobileNet에서 사용되는 "Depthwise Convolution"을 도입, weight를 합침 (= 경량화; 최종 결과를 토대로 볼 때, 성능보다는 연산량, 경량화를 우선) weight를 합쳐 경량화를 하기 위해 i) group을 나눠 group별로 하나의 weight만 학습하게 함 ii) 그 group안에서 Depth-Wise Convolution을 진행, position과 modulation 학습 iii) 이때, modulation factor는 softmax로 계산 2. Self-Attention처럼 MHA의 느낌이 나도록"Group Convolution"을 도입