늘 그랬지만 안읽고 프린트만 해둔 논문이 너무 많다.
볼 책도 많은데.. 개미처럼 공부해야겠다.
일단 학부생때 기본기만 확실하게 다져놔도 석사때 너무 편하게 할 것 같은데
기본기가 너무 과하게 많은것이 문제다 ㅋ
(대학 전공 외에 컴퓨터 비전이라는 전공을 하나 새로 하는 기분)
AAAI'20
https://arxiv.org/abs/2003.04132
iFAN: Image-Instance Full Alignment Networks for Adaptive Object Detection
Training an object detector on a data-rich domain and applying it to a data-poor one with limited performance drop is highly attractive in industry, because it saves huge annotation cost. Recent research on unsupervised domain adaptive object detection has
arxiv.org
저자들은 Image-Instance Full Alignment Networks(iFAN)이라는 DA모델을 만들었다.
먼저 Image-level alignment는 multi-scale feature를
hierarchically-nested 방식으로 alinment하는것이다.
둘째로 Full instacne-level alignment는 deep한 semantic 정보와 정교한 instance 표현을
충분히 활용하여 카테고리와 domain의 관계를 설정한다.
위 그림은 모델의 전체적인 구조다.
(a) 부분에서 hierarchically-nested domain discriminator를 달아서
도메인 차이를 줄엿다.
전통적인 방식의 instance-level에서의 alignment는 성능저하를 발생시킨다.
(b) 부분에서 category-aware instacne-level adaptation을 사용해
위와 같은 문제를 완화시킨다.
(c) 부분에서 category-correlation instance alignment를 이용해
bounding box를 deep matric learning을 활용하여 align한다.
언제나 그랬던것 처럼 source 이미지는 label이 있고 target은 없다.
그리고 또 일반 detector는 Faster R-CNN을 활용한다.
Deep Image-Level Alignment
저자들은 multi-scale intermediate layer에서
hierarchically-nested domain classifier를 달았다.
Φ을 각 backbone이라 하면 featuer map은 다음과 같다.
D를 domain classifier라고 하고 1 x 1 커널을 가진 3 conv. layer다.
그에 따라 domain classifer loss는 다음과 같다.
(source는 domain label이 1, target은 0)
저자들은 실험에서 VGG-16의 pool2, pool3, pool4, relu5_3 층에 적용했다고 한다.
ResNet50도 2,3,4,5 층에 적용했다.
최종적으로 각 loss들을 가중치 합한 최종 loss는 다음과 같다.
λ는 balacing weight다.
위 loss를 adversarial하게 학습시킨다면 backbone은
"domain-ambiguous"한 featuer을 추출할 수 있게 된다고 한다.
위와 같은 방식을 사용하면 다양한 size의 receptive field 때문에 모델이 FPN처럼
더 큰 범위의 image patch를 alignment할 수 있게 된다.
또 domain의 multi-granularity 특징을 capture할 수 있다.
마지막으로 이런 방식은 shallow to deep으로 점진적으로 적당하고 더 좋게 수렴하도록 만든다.
Category-Agnostic instance Alignment
최근 연구에서 RoI 단에 category-agnostic instance domain classifer Dins를 달아서
local instacne 사이의 domain shift를 완화시킨다고 한다.
저자들도 이를 확장하여 ROI-Align operation output을 다음과 같이 나타낸다.
f는 featuer map이고
r은 region proposal이다.
이렇게 naive instance alignment 공식은 다음과 같다.
N은 인스턴스 x의 수다.
Dins는 1 x 1 conv. layer로 간단히 구성했다고 한다.
저자들은 이런 방식이 학습 초반에 문제가 발생한다는 것을 알았다.
학습 초반에는 detector의 예측이 source, target 둘다 부정확하기 때문이다.
이런 현상은 학습에 부정적인 영향을 주게 된다.
이를 해결하기 위해 저자들은 late launch라는 기술을 사용한다.
이것은 전체 학습 iteration의 1/3만 instance-level alignment를 하는 것이다.
(아마 iteration 마지막 1/3일것이다.)
Category-Aware Instance Alignment
위와 같은 방식은 카테고리 정보를 고려하지 않기 때문에 서로 다른 domain의 instance가
서로다른 class로 잘못 정렬될 수 있다.
그래서 저자들은 카테고리 정보를 포함하기 위해
기존 classifer Dins의 single-way 방식을 C-way output으로 수정했다고 한다.
즉, 각 카테고리는 각자의 domain discirimiator를 가진다는 것이다.
따라서 Dins의 차원 c는 각각 카테고리의 domain label을 나타낸다.
전체 구조도의 (b)부분에서
classifer output을 바로 target instance의 soft pseudo-labels로 사용한다고 한다.
그래서 classifier ouput은 instance가 클래스 c에 속할 확률 분포를 나타낸다.
각 카테고리의 도메인 분류기는 파라미터를 독립적으로 업데이트한다.
따라서 (4)식은 다음과 같이 수정하게 된다.
soft pseudo 방식이 ground truth보다 더 잘 작동한다는 것을 발견했다고 한다.
Category-Correlation Instance Alignment
예측한 bounding box를 backbone feature map에 다시 매핑함으로써
instance representation을 향상시키고 추가적인 alignment를 위해 선택된 feature을 crop한다.
처음언급했던 ROI-Align operation output bounding box버전은 다음과 같다.
나아가서, image-level alignment 원리에 따라 모든 가능한 정보를 결합하기 위해
representation을 융합한다고 한다.
즉, feature maps p를 독립적으로 1 x 1 conv. 연산을 하여
256채널의 feature map을 만든다고 한다.
그리고 각 element-wise summation을 적용하여 새로운 feature을 만들어 낸다.
instance feature을 fully-connected layer를 통해
embedding space로 정제하는것을 Dcorr라고 한다.
그리고 instance fi, fj 쌍이 주어지고 이건 다음과 같은 4가지 경우 중 하나가 된다고 한다.
1. 같은 domain, 같은 category : Ssdsc
2. 같은 domain, 다른 category : Ssddc
3. 다른 domain, 같은 category : Sddsc
4. 다른 domain, 다른 category : Sdddc
저자들은 이중 distance를 최소화시키는건 1.번, 최대화 시키는건 4.이라는것을 알았다고 한다.
그래서 1.번 4.번에 초점을 두어 domain과 category correlation을 다음과 같이 최적화 하도록 했다.
Dcorr을 metric discriminator로 사용한, contrasive loss라고 한다.
m은 고정된 margin이라고 한다.
Dcorr은 다른 카테고리와 같은 도메인 쌍을 당기고 같은 카테고리 다른 도메인을 민다고 한다.
이것을 적대적으로 학습시키면 결과적으로
같은 도메인에서 다른 카테고리는 멀어지고
같은 클래스에 대해서는 domain-invariant한 특성을 뽑을 수 있게 된다.
이 방식도 위에서 언급한 "late lanuch"방식을 사용한다.
최종적으로 학습은 다음과 같이 진행된다.
Adversarial 학습 방식은 GRL을 사용한다고 한다.
이 논문은 Domain Adaptation 방식을 모두 종합한것 같은 논문이다.
backbone계층별로 DA 학습할 시키고 bounding box단에서도 alinment가 진행된다.
이 방식을 진행하면 결과적으로 다음과 같은 산포도를 얻을 수 있으니 참조하자.
color은 카테고리다.