(ADNet) Action-Decision Networks for Visual Tracking with Deep Reinforcement Learning

cvpr2017
cvpr
sota
convolutional
tracking

(Curtis Kim) #1

Deep Learning 기반의 다른 Tracker 대비 성능을 올리면서 효율까지도 높인 모델입니다. 빠른 버전은 준실시간(15fps) 수준이라고도 합니다. Reinforcement Learning과 Online Adaption을 동시에 사용한 재미있는 논문입니다.

물체를 추적(tracking)하기 위해서 이미지 상의 다양한 공간을 불필요하게 탐색하면서 가장 잘 매칭되는 곳을 찾는 방식의 비효율성이나, 학습을 위해 트래킹에 해당하는 많은 레이블이 필요한 점을 콕 짚어 해결했다고 주장하고 있습니다.

Overview

Problem Settings

물체를 추적하는 문제를 11개의 Action을 통해 Bounding Box를 이동시키는 방식으로 정의했습니다.

즉, 이 그림처럼 이전 프레임에서 얻어진 Tracking Box의 좌표에서 출발해 어떻게 이동(Action)하는지를 네트워크의 결과를 얻는 것입니다. 한 프레임에서 다음 프레임으로 넘어갈 때는 여러 이동(Actions)를 통해 Bounding Box를 이동합니다. Action에는 'Stop’도 있으며, 해당 Action의 경우에는 이동을 중단하고 Tracking Box를 확정짓게 됩니다.

Training & Online Adaptation

네트워크 구조는 3개의 Convolution Layer와 그 위에 Fully Connected Layer를 얹어진 전형적인 작은 CNN입니다. Network의 Output은 2개인데,

  • Action : 위에서 설명드린 11개의 Action에 대한 점수를 출력
  • Confidence : 현재 바운딩박스 추정이 정확한지 여부를 출력

입니다. Action 결과를 얻어서 Bounding Box를 이동시키는데, Confidence가 낮은 경우에는 재검출(Re-detection)하도록 설계되어 있습니다.

학습은 크게 3가지 파트로 나누어져 있습니다. Supervised Learning, Reinforcement Learning 그리고 Online Learning 입니다.

Supervised Learning

비디오 데이터셋으로부터 Label된 데이터를 가지고 네트워크를 직접 학습합니다. 주어진 레이블에 Gaussian Noise를 적당히 잘 섞으면, 원래 레이블에서 조금 벗어난 위치의 Box를 얻게 됩니다. 그러면 최적의 Action을 구할 수 있게 되는데, 이렇게 얻어진 Box와 Action으로 위 네트워크를 먼저 학습합니다.

즉, 물체의 위치 주변으로 랜덤한 박스를 만들고, 어떤 움직임(action)이 가깝게 만드는지를 Label로 하여 학습하는 것입니다.

Reinforcement Learning

여기에서는 실제로 Tracking Sequence를 가지고 학습합니다. 한 프레임에서 다음 프레임으로 넘어갈 때 여러 Action을 취한 후 정답을 맞추면 Reward를 주는 형태로 RL을 학습합니다. 그러면, SL과는 다르게 실제 Tracking Sequence에서 생기는 빠른 물체 등의 실질적인 데이터에 대해서 학습하는 셈이 됩니다.

(SL에서 학습한 것은 결국은 Tracking 데이터는 아니고, 같은 프레임 에서 트래킹인 것처럼 만들어낸 가짜 데이터죠)

또, 모든 프레임에 Label이 되어 있지 않더라도, 학습할 수 있다는 장점이 있습니다.

Online Adaptation Tracking

MDNet 등의 논문에서 먼저 제안한 것처럼, 이 논문에서도 Tracking 과정에서 얻어진 이미지 데이터로 실시간 학습을 합니다. 이는 물체의 변형이나 변화에 더 잘 적응할 수 있게 해줍니다.

방식은 SL과 유사합니다. Tracking된 결과가 Confidence가 높으면 이를 Label로 여기고, Tracking Box에 Gaussian Noise를 섞고 Optimal Action을 구해 이를 Label 삼아 트레이닝 하는 것입니다. 첫번째 프레임에서는 물체에 대한 인식을 높이기 위해 많은 레이블과 더 많은 이터레이션, 더 높은 Learning Rate으로 학습을 하고, 이후 프레임에서는 적은 레이블을 생성해가며 일정 주기로 간단히 Finetuning 합니다.

여기에서는 Convolution Layer는 학습시키지 않았는데, 이는 '일반적인 물체를 이해하는 피쳐’가 있기 때문이라고 합니다. 학습의 대상이 된 Fully Connected Layer는 반면, 추적하고자하는 물체에 대한 구체적 정보가 있다고 주장합니다.

이 논문에서 제안한 Fast Version의 모델은 단순히 Online Adaption에서 사용되는 레이블의 수, 학습 주기 등을 조절해 속도를 높인 것을 말합니다.

Experiments

SL과 RL을 모두 사용한 버전이 가장 성능이 좋음을 보여주는 그래프입니다. 이후의 모든 실험은 이 모델로 수행하게 됩니다.

우수한 성능의 Tracker 중에서는 단연 효율적인 연산과 높은 성능을 자랑합니다. 속도에 중점을 둔 Tracker와 비교하면 조금 느리지만, 성능은 높은 수준으로 좋습니다.

Conclusion

Tracking 문제를 Action의 조합으로 정의한 점, 그리고 이를 통해 Supervised Learning에 필요한 데이터를 굉장히 많이 생성해내고, 또 Reinforcement Learning으로 Semi-Supervised Learning을 한 점, 마지막으로 Online Adaption까지 이 논문은 재미있는 내용이 참 많았던 것 같습니다. #sota 성능을 만들면서, 실용적인 수준의 속도까지도 다가갔다는 점에서 의미가 있습니다만, 실질적으로 사용하기에는, 중간중간 online adaption을 위한 finetuning을 해주는 부분이 tracking의 속도를 균일하게 만들지 못하기 때문에, 논문에서 주장하는 15fps라는 부분도 조금은 의미가 떨어지는 것 같습니다.

제가 Tensorflow로 재현하고 있는 곳은 https://github.com/ildoonet/tf-adnet-tracking 여기입니다. 재현이 아주 쉽지는 않습니다만, 재현이 되고나면 추가적으로 다른 아이디어를 얹어 더 성능을 개선해볼 생각입니다.

Reference


(MDNet) Learning Multi-Domain Convolutional Neural Networks for Visual Tracking
#2

tenforflow implementation은 여기에서 시도하고 있는 것 같습니다.

논문 설명이 꽤 잘되어있는 영문발표 유튭링크도 첨부합니다.


(Curtis Kim) #3

@chadrick 감사합니다 ^^* 사실 저 위에 implementation 시도는 제가 하고 있는 건입니다. 아직 미완성이긴 한데, 완성되는대로 올리려고요. 유툽 잘 보겠습니다. 앞으로도 많은 공유해주세요.


'Object Tracking' 카테고리의 설명