들어가며
최근 업무를 보면서 학습 데이터가 지속적으로 증가하는 경우가 발생하다보니 Incremental Leanring에 대해서 공부를 하는 경우가 생겼다. 그렇다보니 자연스럽게 2D object detection이외에 다른 분야에도 있을까 생각하고 찾아보다 보니 해당논문을 찾게 되어졌다.
이 논문의 경우 AAAI 2022년 Oral paper로 되어진 논문으로 3D 분야에서 처음으로 적용한 부분이다 보니 더욱 주목 받는 방법이 아닐까 생각이든다.
아래의 그림처럼 Incremental Learning의 기조를 따라가다 보니 Novel Class에 대해서 객체를 찾게 되어지고 기본 Base Classes에서도 여전히 찾게 되어지는것을 볼 수 있다.
그렇다면 이 논문의 핵심 아이디어의 핵심은 새로운 Task에 적용한것 말고 어떤것이 있을까?
저자는 새로운 아디이어로 Pesudo Labeling을 방식을 제안했다. 일반적인 방식이 있을수도 있지만 이전의 Task에서 만들어진 모델을 바탕으로 새로운 Novel에 기존의 Base의 class에 Pesudo labeling을 같이 넣어서 학습을 시키는것이다.
그렇게 되면 Pesudo labeling의 중요성이 높아지는데 이를 해결하기 위해서 Techer Student Model을 들고왔고, Static & Dynamic 이라는 두개의 Teacher를 들고오면서 해당 문제를 해결했다고 한다.
그러면 자세하게 이 논문이 어떤 방식으로 문제를 풀었는지 살펴보자.
방법
Baseline Model
3D에 접근하기 위해서는 저자는 Point Clould Object Detection의 기본이 되어지는 모델일 VoteNet을 수정해서 개선이 되었다고 한다.
VoteNet의 경우 아래의 그림과 같이 있는데 $X$라는 XYZ를 가지는 좌표값을 넣어 Featuer를 추가한 $S$라는 seeds를 뽑아낸다. 이 과정까지는 일반적인 방법이지만 Voting Module이라는 방식을 통해서 Point들을 대표할수 있는 지점을 뽑고 그 주위의 Point들을 구성해서 새롭게 만들어낸다. 이를 통해서 $V$라는 point들이 최정적으로 나오게 되어진다.
이 point들을 바탕으로 Detection이 수행이 되어진다.
SDCOT 모델방식
Pesudo Label Generation
이전에 말했던것처럼 이 논문의 경우 Peusdo label을 만드는것에 아디어를 더했다고 한다.
Novel Class를 학습할때 Base Class로 학습 했던 모델을 Novel Class에 Peusdo labeling을 만들어서 적용했다고 한다.
이 Peusdo labeling을 만드는건 생각보다 너무 쉬운데 Low-confidence box 부분을 지웠고 그리고 Classification 의 확률값과 바탕으로 낮은 Prob을 가진 Class도 Pesudo labeing이 넣지 않는 방식을 선택했다.
그럼에도 불구하고 부정확한 결과가 나온다는데 이를 해결하기 위해서 아래의 새로운 방법을 사용한다.
Static-Dynamic Co-Teaching
저자는 부정확한 결과를 개선하기 위해서 Static Teacher과 Dynamic Teacher를 2개를 만들어서 작업을 하는데 각각의 Teacher의 하는 역할은 다음과 같이 나뉘어진다.
Static Teacher의 경우는 Base Class로 학습한후 Freeze되어진 모델이며 이 Teacher의 역할은 Peusdo labeling을 만들어 내는 역할을 하며 Distillation을 Student에 하는 역할로 보면되어진다.
Dynmaic Teacher의 경우는 기존의 Student에 대해서 EMA가 진행이 되어짐과 동시게 Input에 대해서 Consistency를 유지하기 위한 역할을 수행한다.
전체적인 흐름은 아래의 그림과 같이 되어진다.
그러면 각각의 Loss는 아래와 같이 되어진다.
Distillation Loss의 경우는 Student와 Static Teacher의 SoftMax이전의 Logit의 값의 차이를 최소화하는 작업을 말한다. 그럴경우 이전의 Knwoledge를 Distiliation하는 효과가 있다.
Supervised Loss의 경우는 기존의 CE로 적용이 되어지면 Novel Class를 추가해서 BaseL Class와 함께 재 학습을 하는데 이때 Base Class의 경우는 Static Teacher에서 나온 Pesudo label로 적용이 되어서 학습이 되어진다.
Consistency Loss의 경우에서는 SimCLR와 같은 Loss를 사용한다고 보면된다.
방법은 너무 단순하지만 효과적으로 나오며 기존에 접근하지 않았던 새로운 방법이라 확실히 성능적인 면은 효과가 있다.