[Paper Review] Don’t Judge an Object by Its Context: Learning to Overcome Contextual Bias
Multi-label 문제에서 함께 자주 나오는 오브젝트로 인해 문맥적 편향이 학습되는 문제를 해결하고자 하는 논문 리뷰
Reference
2020년 1월 다비스 캘리포니아 대학, 오스틱 텍사스 대학 연구실과 페이스북에서 발표된 이 논문은 Multi-label 분류 문제에서 발생되는 문제를 다루고 있다. 대부분의 모델들은 주변 문맥적인 정보를 적극 활용하여 이미지 인식 성능을 올리곤 한다. 그러나 이러한 경향은 오히려 독이 되는 경우가 있는데, 문맥적으로 강하게 묶여 있는 즉, 함께 나오는 확률이 높은 오브젝트는 단독적으로 나올 때 인식을 전혀 못하는 문제가 발생되기도 한다. 예를 들어 ‘스키’의 경우 단독적으로 있는 사진 보다는 사람이 착용하고 있는 사진이 많기 때문에 ‘사람’이라는 오브젝트와 함께 나오는 경우가 많다. 실제로 논문에서도 분석한 결과 COCO-stuff 데이터셋에서 2209장은 ‘스키’와 ‘사람’이 함께 나오며 ‘사람’ 없이 ‘스키’만 나오는 경우는 29장 밖에 없다고 한다.
논문 저자들은 위와 같은 문제를 정의하고 크게 두 가지의 골을 정의한다.
- 독릭접으로 나오는 ‘스키’와 같은 오브젝트가 정확하게 식별이 가능해야한다.
- 단, ‘사람’과 ‘스키’와 같은 같이 나오는 오브젝트의 경우에도 성능 감소가 일어나면 안된다.
논문에서 이 문제를 해결하기 위해서 두 가지의 방법을 제시한다. 하나는 1) CAM을 이용한 our-CAM 방법이고, 다른 하나는 2) 오브젝트와 문맥을 구분하여 나누어 학습 가능한 out-feature-splitting 방법이 있다.
our-CAM Method
our-CAM 방법의 경우 일반적으로 알고 있는 Learning Deep Features for Discriminative Localization이라는 논문에서 제안한 Class activation map (CAM) 방식을 활용하는 방식을 제안하였다. 간단하게 설명하면, 마지막에 나오는 클래스에 따라서 활성화되는 중간 feature를 확인하면 해당 모델이 이미지 내에서 어떤 부분을 확인하고 클래스를 결정했는지를 확인할 수 있는 방법이다.
우선적으로 논문에서는 CAM을 이용하여 ‘스키’와 ‘사람’이 함께 나오는 이미지에서 ‘스키’를 인식할 때, ‘스키’ 보다는 ‘사람’을 보고 스키를 분류하는 것을 확인할 수 있었다. 즉, 문맥적으로 함께 나오는 ‘사람’이 ‘스키’라는 오브젝트를 인식하는데 더 많이 활용된다는 의미이다.
our-CAM은 문맥적으로 함께 나오는 오브젝트에 대해서는 분리해서 학습할 수 있는 손실함수와 모델 구조를 제안한다. 크게 3가지의 손실함수를 제안하게 되는데, 각각 Overlap loss, Regularization loss, Classification loss로 설명할 수 있다.
Overlap loss는 각 오브젝트 별로 CAM으로 활성화되는 두 feature에 대한 아다마르 곱(element-wise multi)으로 서로 겹치는 부분을 최소화하도록 돕는 손실함수이다.
Regularization loss는 기존 일반적인 pretrained된 모델에서 나온 CAM feature로 원래 CAM으로 나왔어야할 feature와 완전히 다른 방향으로 학습되는것을 방지하기 위해 두 feature간 차이를 줄이는되 사용되는 손실함수이다.
Classification loss는 우리가 일반적으로 알고 있는 클래스에 대해서 binary cross entropy (BCE) 손실함수이다.
이렇게 각각의 손실함수는 상수로 정의된 가중치로 학습이 된다.
Our-feature-splitting Method
our-feature-splitting 방법의 경우, 마지막 FC 레이어에서 차원을 반으로 나누어서 의도적으로 오브젝트와 문맥을 나누어 활용하도록 학습하도록 유도하도록 만들어진 모델이다.
중간에 해당 오브젝트가 단독적으로 있는지 없는지를 판별하여 이에 따라 문맥을 활용할 것인지 오브젝트에 대한 정보만 사용할 것인지 선택적으로 사용하도록 유도하는 방법이다. 이러한 구조는 실험 단계에서 CAM을 이용하여 활성화된 영역을 확인함으로서 의도된대로 작동한다는 것을 확인할 수 있다.
논문에서는 이러한 두 모델로 문제라고 생각했던 부분을 CAM을 통해 검증하고, 이를 해결하기 위한 모델을 제안하였다. 이러한 모델은 문맥적으로 함께 묶여있는 오브젝트에 대해서 성능이 올라갔음을 확인하였다. 실험 결과는 대부분 exclusive, co-occur로 나누어 실험 결과를 제공하기 때문에 전체적인 성능에 대한 것은 확인이 필요해 보인다. 하지만 문맥적으로 함께 나오는 오브젝트가 단독으로 나왔을 때의 성능은 크게 성능 향상을 보였으며, Multi-label 문제에 대해서 문맥적인 부분에 편향되어 성능이 낮게 나오는 문제는 해결할 수 있는 실마리를 제공했다 생각한다. 나아가 이러한 구조를 object detection이나 video action recognition 분야에 활용할 수 있는 연구를 기대할 수 있을 것 같다.
Abstract
- 기존 모델은 오브젝트와 문맥적인 부분을 함께 성능을 올리는데 활용한다. 하지만 이런 문맥이 강하게 작용할 경우, 오히려 모델의 일반성에 문맥 정보가 존재하지 않을때 위험 요소로 작용된다.
- 우리의 목표는 문맥이 존재하지 않아도 정확도 있게 인식하고, 문맥적인 오브젝트와 함께 있을때의 성능에 영향이 가지 않는 것을 목표로한다.
- 우리의 심플하고 효과적인 방법은 Multi-label 문제에 대해서 확장이 가능한 구조이다.
Introduction
- 시각적 문맥은 인간의 시각에서 장면적인 해석과 오브젝트를 인식하는데 매우 중요한 단서로 작용한다. 또한 문맥은 시각적 요소들이 모호하거나 불완전할 때 매우 중요한 요소로 사용된다.
- 딥러닝이 발전되면서 사용가능한 데이터셋들이 많아지고 있는데, 최선의 노력에도 불구하고 대부분의 데이터셋들은 편향이 존재한다.
- 이로 인해 이러한 데이터 세트에서 문맥적으로 편향이 유발되고, 결과적으로 해당 데이터셋의 편향성들이 모델이 그대로 학습한다. 이러한 과정에서 모델은 문맥적으로 함께 나오는 오브젝트를 오브젝트를 판별하는데 사용하는 문제가 발생된다. 이러한 문제는 특히 Multi-label 분류 문제에서 큰 문제를 일으킨다.
- 이러한 문제들은 두 가지 측면에서 문제를 야기시킬 수 있다. 1) ‘냉장고’가 아닌 ‘야외’ 장소에 있는 ‘전자레인지’는 식별하지 못하거나, 2) ‘전자레인지’가 있는 주방에서 ‘냉장고’가 있다고 인식하는 문제를 야기한다.
- 최근의 연구들에서도 언어 및 시각 데이터에서 생기는 문맥적 편향으로 인해 문제가 발생되기도 했다. (e.g. 성별과 직업, 인종과 스포츠와 같은 것들)
- 이러한 이슈들이 있기 때문에, 우리는 문맥이 있건 없건 상관 없이 편향된 데이터를 학습하지 않도록 하는 것이 목표이다. 즉, 문맥적으로 강하게 묶여있는 두 개 의카테고리가 주어졌을 때 단독적으로 나왔을때의 인식 성능 그리고 같이 나왔을 때 성능 저하가 없는 것을 의미한다.
- 이를 위해 두 개의 키 아이디어가 있다. 첫째는 네트워크가 학습 될 때 오브젝트를 인식 할 때 해당 오브젝트에 대한 픽셀을 정확히 봐야한다는 것이다. 둘째는 오브젝트를 정확히 봐야하지만서도 문맥적인 것도 활용할 줄 알아야한다는 것이다.
- 우리의 Contribution은 3가지로 정리할 수 있다. 1) 네트워크를 “learn from the right things”로 학습할 수 있도록 하였고 CAM이 겹치는 부분을 최소화할 수 있도록 방법을 제안하였다. 다음으로 2) CAM을 이용한 방법론을 통해서 얻은 직관으로 오브젝트와 문맥을 상호 연관 시키는 두 번째 방법을 제안하였다. 마지막으로 3) 오브젝트 분류와 속성 분류에 모두 적용하여 실험으로 확인하였다.
Problem setup
- 우리의 방법은 몇가지 클래스에 대해서 훈련 데이터 분포가 문맥적으로 동시에 발생되는 경우로 편향을 겪는다는 전제하에 작동한다.
- 우리의 목표는 1) ‘스키’가 단독적으로 나왔을 때 정확하게 인식해야하며, 2) ‘사람’과 ‘스키’가 동시에 나오더라도 성능 저하는 없어야한다는 목표를 가지고 있다.
- 우선 편향된 카테고리를 정의해야하는데 우리는 한 카테고리에 대해서 함께 나오는 카테고리 중에서 가장 빈도가 큰 카테고리를 K개의 카테고리 쌍을 대상으로 한다. 즉 ‘스키’와 함께 나오는 카테고리 중에서 함께 나오는 빈도가 가장 많은 ‘사람’을 한 쌍으로 한다.
- 이러한 이유는 다음과 같은 두 가지 직관이 있었다. 첫 번째로 1) 카테고리 b의 예측 확률이 카테고리 c에 편향적이고, 두 번째로 2) 카테고리 b는 c와 빈번하게 나온다.
Approach
Our-CAM Method
- 이 방법은 다음과 같은 전제에서 작동한다. b가 항상 c와 함께 발생하므로 네트워크는 b를 예측하기 위해 c에 해당하는 픽셀에 의존하는 방법을 배울 것이다. 이 문제를 해결하기 위해 강제적으로 의존하지 않도록 학습을 시킨다면 해결할 수 있을 거라는 가설을 새우게 되었다.
- CAM을 이용해서 활성화된 영역을 확인하고, b와 c가 CAM으로 겹치는 부분을 최소화하기 위해 Overlap loss라는 손실함수를 적용했다.
- 하지만 Overlap loss만 사용할 경우 실제 픽셀 영역에서 떨어진 곳에서 의도한 대로 학습이 안될 수도 있기 때문에 Pretrained된 모델로부터 오리지널 CAM과의 차이를 최소화할 수 있는 Regularization loss라는 손실함수도 적용하였다.
- 마지막으로는 일반적인 분류 학습 손실함수인 BCE를 함께 최적화한다.
각각의 손실함수의 경우 위에 summary에서 다루었으며 자세한 식은 논문을 확인바랍니다.
- 이러한 방법은 편향된 카테고리가 단독적으로 나왔을 때 많은 성능 향상을 이루었지만 오히려 문맥적으로 같이 나왔을 때의 성능은 손상이 있음을 확인하였다. 이는 문맥적인 정보는 카테고리를 인식하는데 유용한 보완 정보를 제공하기 때문이라고 분석했다. CAM 기반 접근 방식은 이러한 보완 정보를 사용하지 못하도록 강제하기 때문에 활용을 못하게 한 것으로 보인다.
- 이러한 핵심 통찰력은 feature 공간을 두 개로 분할하고 문백과 카테고리를 개별적으로 나타내고 문맥적인 정보를 제한하지 않는 다면 문제를 해결 할 수 있다라는 공식을 세우는데 도움이 되었으며 이는 다음으로 제안할 Our-feature-splitting 방법이 나오게 된 계기가 된다.
Our-feature-splitting Method
- CAM 방식을 최적화하는 대신, feature 공간을 나누어 학습할 수 있는 방법을 제안한다. 이러한 계기는 전형적인 문맥을 벗어나 발생하는 편향된 카테테고리를 표현하는 subspace를 학습시키는데 있다.
- 이러한 학습 방법은 학습 과정에서만 이루어지고 추론할 때는 표준 분류 모델과 동일하게 작동한다는 특성을 가지고 있다.
- 모델은 일반적인 분류모델을 그대로 사용이 가능하다. x는 마지막 풀링 레이어로 부터 나오는 D차원의 벡터이고, D차원과 M개의 카테고리로 D x M 차원의 W 매트릭스이다. W를 row-wise로 나누어 두 개의 공간으로 나누어 학습할 수 있도록 Eq. (7)처럼 나누었을 뿐이다.
- 이러한 과정은 네트워크가 편향된 카테고리 중 단독적으로 나왔을 때 W_o를 통해 학습 되고 같이 나왔을 경우에는 W_o와 W_s가 함께 사용하도록 학습하도록 가이드하도록 학습이 된다.
- 결과적으로 기존 분류모델에서 2가지의 수정만 이루어진다. 첫 번째로 1) W_s가 W_o만 학습할 수 있도록 back propagation을 방지하는 것과 2) x_s를 상수로 설정하는 것이다. 즉 상수를 설정할 때는 이전 10 미니배치의 x_s 평균을 상수로 설정한다.
- 제안한 방법의 기본이 되는 측명 중에서 매우 드물게 문맥적으로 같이 나오는 카테고리가 없는 경우가 있는데, 이로 인해 분포가 왜곡되는 문제가 있다. 이러한 문제를 해결하기 위해서 학습 시 손실 함수에 가중치를 주는 방식으로 해결하였다.
- 이러한 선택적으로 문맥적 정보를 억제하는 방법으로 성공적으로 sub space에서 카테로기 정보와 문맥적 정보를 분리한다. 또한 두 번째 공간에서 문맥적 정보가 담겨 있기 때문에 문맥적 정보가 필요한 경우에 활용할 수 있도록 한다.
Experiments
- 데이터셋은 함께 나오는 카테고리가 많은 편향된 데이터들로 구성하였다.
- 재반복하지만 우리의 목표는 편향된 카테고리가 단독적으로 나왔을 때 성능이 향상이 되는 것이고, 함께 나오더라도 성능에 손실이 없는 것이 목표이다.
- 성능 평가는 exclusive와 co-occur로 나누어 평가를 진행하였으며, 각각 단독적으로 나오는 경우와 함께 나오는 경우를 나타낸다.
- 비교군이 되는 일반적인 분류모델(standard)와 데이터셋의 비균형 문제를 해결하는 방법인 class balancing loss 보다도 많은 성능 향상을 한 것을 볼 수 있다.
- Fig. 6에서 CAM 방식을 통해서 일반 분류기가 문맥적으로 함께 나오는 오브젝트를 바라보는 것을 확인하였고, 제안한 Our-CAM 방식을 통해 제대로된 영역을 바라보게 된다는 것을 확인하였다.
- Fig. 7에서 제안한 두 방식간에 CAM을 확인해 보았을 때, Our-CAM은 특정 오브젝트를 더 강하게 학습한 방면, Our-feature-splitting 방법의 경우 의도된 대로 함께 나왔을 경우에는 문맥적인 정보도 함께 사용할 수 있도록 학습 된 것을 확인할 수 있다.
- Fig. 9에서는 Our-feature-splitting 방법에서 두 공간으로 나눈 공간이 의도된 대로 오브젝트에 대한 공간과 문맥적인 공간으로 나뉘어 학습이 되었는지를 확인하였다.
Conclusion
- 우리는 문맥적인 편향이 단독적으로 나왔을 경우에는 제대로된 분류가 불가능함을 보여줌으로써 오브젝트와 속성 데이터셋에서 나타나고 있음을 확인하였다.
- 우리가 제안한 모델 방법은 일반적인 방법보다 한번도 보지 못한 데이터셋에 대해서 조금 더 일반적인 성능을 수행할 수 있다.
- 제안된 프레임워크는 카테로기 쌍 사이에서 문맥적으로 묶여있는 편향을 다룬다. 향후 연구에서 더 많은 문맥적인 정보를 활용할 수 있도록 연구가 필요하다.
- 또한 제안된 방법이 object detection과 video action recognition과 같은 문제에도 확장할 수 있는 가치 있는 미래 방향이 될 것이라 생각한다.