0. 개요
기존 object detection은 detection의 성능은 전반적으로 좋지만, 객체들이 응집되어 있는 프레임들을 갖는 비디오에서는 객체간의 switching이 빈번하게 일어난다고 한다. 이를 해결 하기 위해서 Redetection을 하는데, 기존에는 두가지 방식이 있다.
1. two-stage
2. one-stage
기존의 방식들에 대한 특징에 대해서 이야기 해보자면, two-stage는 각 task별로 학습하므로 성능은 괜찮지만, 순차적으로 진행되므로 속도가 느려져서 비디오엔 쓰기 힘들고 one-stage는 공유된 feature를 사용하므로 더 빠른데, 성능이 안나온다고 한다,
이 논문은 왜 one-stage방식이 안좋은지 그리고 이 안좋은 성능은 어디서 부터 기인된 것인지에 대해 분석하고, 해결하여 모델을 제시하는 논문이다.
1. 기존 one-stage 방식의 문제
1. Unfairness Caused by Anchors
Anchor를 사용하면 proposals의 quality에 너무 의존하므로 re-ID를 너무 간과해버린다.
// 같은 object, 다른 부분을 가리키는 근처 다수의 anchor들이 같은 identity를 예측하는데 쓰이게 되고, 이는 network training에 모호성을 유발한다 .
실험적으로 anchor 방식을 사용하면 AP가 내려갈 뿐만 아니라, switch가 빈번하게 일어난다고 한다.
해결 방식 : anchor free 방식 중 하나인 center를 쓴다
2. Unfairness Caused by Features
object detection은 깊고, 추상적인 feature를 잘 이용하는데 반에, re-ID는 낮은 레벨의 appearance feature를 주로 이용한다고 한다
해결 방식 제안 : multi-layer의 fusion을 사용하여 전반적인 성능을 올릴것이다
3. Unfairness Caused by feature Dimension
lower dimensional feature을 학습하는게 더 좋다더라~
-> 왜? : high dimension의 re-ID는 좋지만, 두 task가 경쟁하느라 object detection의 accuracy를 해친다.
trainining data가 작을 때 low dimensional re-ID Feature를 학습시키는게 overfitting을 방지해준다
low dimensional re-ID를 이용하면 inference time이 더 빠르다
// 첫번째 이유가 가장 주요할듯
해결 방식 제안 : low-dimensional re-ID Feature를 학습하도록 하자
2. 제안
그래서 이 문제들을 해결하는 구조를 제안하고자 한다.
가장 눈 여겨 볼 것은 re-ID branch인데, 이 부분은 각 픽셀의 re-ID feature를 뽑아, 픽셀의 object centered을 characterize하는 부분이다.
stride도 줄여서 더 high-resolution으로 만든다 -> object centers의 re-ID Features에 대한 allign에 더 좋다더라 (이는 곧 tracking accuracy로 이어짐)
각 branch별로 보자 (두 branch는 대칭적)
1. Detection : object를 detection하는 부분 / 3개의 병렬 head가 붙어진 구조
1. Heatmap head : object center를 추측하는 것 (center mask와 같은 느낌이더라~)
2, 3. Box offset / size head : object의 위치 및 크기를 더 정확하게 추측한다.
2. Re-ID : object간에 구분할 수 있는 feature를 생성하는 branch
각 GT Box에 대해서 Heatmap으로 부터 object center와 re-ID feature인 vector를 추출한다. 그리고 그에 따라서 Loss를 설정한다. object center를 얻을 수 있을것이라고 기대하므로, training시에도 object center에 대한 identity embedding bector만 사용한다.
3. Inference
-------------Detection-------------
1. 예측된 heatmap에서 NMS를 하여 peak keypoints를 추출한다.
2. 가장 높은 점수를 가진 keypoints의 위치를 유지한다.
3. 이 point와 함께 offset과 size를 이용하여 bounding boxes를 구한다.
4. 예측된 object center로 부터 identity embeddings를 추출한다
-------------Association-------------
5-1. 가장 첫 프레임(infernece) : 예측된 box를 바탕으로 후보들의 번호를 초기화 한다.
5-2. 이어지는 프레임(infernece) : Re-ID와 box overlap의 cosine disntance를 통해 찾은 box와 기존의 후보를 연결(link)한다 // 이 과정에서 Kalman filter를 이용하여 후보군이 움직였을 위치를 예측하여, 이용한다.
6. linked distance가 너무 멀다면, 그 값을 무한대로 설정하여 linking과 detection을 방지한다
7. Appearance를 업데이트 한다(appearance variation을 다룬다.)
4. 실험적 결과
실험적으로 우리가 제안하는게 성능을 높인다더라~ 각 문제를 어떻게 해결했는지 실험적 결과를 바탕으로 증명하는 부분이다.
1. 기존 문제에 대한 해결
1번 문제 (anchor)
anchor based보다 anchor free based가 좋다더라~
2번 문제 (feature)
큰 네트워크가 별로 도움이 안되더라~ / 대신 FPN을 쓰는게 훨씬더 영향력이 강하더라 / 대신 Deformable convolution을 쓰면 receptive field가 너무 flxible해져서 안쓰는게 좋다더라
두가지의 task가 충돌하여 성능이 나빠짐도 보였다. 하지만 Multi-layer feature fusion을 사용하면, fusion된 feature를 task가 각자 원하는 부분을 추출하여 사용할 수 있으므로, feature conflict를 해결해준다고 한다.
3번 문제 (dimension)
feature dimension이 detection와 tracking의 벨런스에 중요한 역할을 지녔다고 한다
낮은 dimensional re-ID feature를 학습하는 것이 detction에 덜 해를 가하고, inference speed를 높인다더라
re-ID feature의 dimension을 낮추면 task간의 conflict가 사라져서 그렇다고 추측한다더라
2. Box 유사도 요소들
bounding box IoU, re-ID Features, Kalman filter : 발견된 box의 유사도를 계산하기 위한 3가지 요소들
bounding box IoU만 사용할땐 불안정 한데, 함께 쓰면 더 안정적이라고 한다.
5. 마무리
기존 one-stage 방식의 문제를 분석하고, 이를 해결하고, 증명하는 부분이 꽤나 재미있었다.
이를 이용하여 SOLO모델에 적용해보는 방식을 고안해보자.
'ML' 카테고리의 다른 글
Vision Transformer 이해 2. 추론 기반 NLP의 발전2(seq2seq, Attention, Transformer) (0) | 2022.01.12 |
---|---|
Vision Transformer 이해 2. 추론 기반 NLP의 발전1(word2vec, RNN, LSTM) (0) | 2022.01.12 |
인공신경망(SOLOv2)의 data pipeline의 구성과 Resized model의 효과 (0) | 2021.08.13 |
SOLOv2 Structured pruning (MMDetection, pytorch structured pruning) (1) | 2021.08.07 |
Network pruning (0) | 2021.07.27 |