티스토리 뷰
Enhancing Multi-Camera People Tracking with Anchor-Guided Clustering and Spatio-Temporal Consistency ID Re-Assignment
seoyoung02 2024. 1. 20. 18:39
이 논문은 AI City Challenge 23 Track 1에서 1등을 한 팀의 논문이다. Track 1은 Multi-Camera Peaple Tracking으로 여러 카메라에서 사람을 인식하고 같은 사람은 카메라에 상관없이 하나의 ID로 tracking하는 task이다. WILDTRACK이나 MMP-TRACK과 같은 다른 Multi-Camera tracking 데이터 셋 처럼 intrinsic과 extrinsic을 제공하지는 않고, 사람들이 움직이는 것을 위에서 바라본 bird-eye view map을 제공한다.
이미 전체 영상이 있는 챌린지여서 offline으로 작동하며, 고정된 카메라들로 이루어진 데이터셋을 다룬다.
Overall Pipeline
그림2에서 볼 수 있듯 크게 Single-camera Tracking과 Multi-Camera Tracking으로 나눌 수 있다. 하나의 카메라에서 tracking한 후, 각 카메라 정보를 합치는 방식이다.
Single-Camera Tracking
Single-Camera Tracking을 순서대로 따라가보자. 이 과정이 모든 카메라에서 이루어진다고 보면 된다.
- 영상에서 frame을 뽑은 후 Detector로 매 이미지에서 사람을 찾는다. 여기서 Detector는 yolov7를 사용했다.(깃헙 코드 기준)
- 인식된 사람을 크롭하여 Re-ID Feature Extractor에 넣는다. Re-ID Feature Extractor로 OSNet을 사용했다.
- Re-ID 모델에서 얻어진 feature를 사용해 Tracking Module에서 tracking한다. BoT-SORT를 사용했다. Re-ID model은 OSNet을 사용했다. (다른 논문에서도 OSNet을 사용하던데 코드가 활용하기 좋아서인지, 모델 구조상 이점이 있는 것인지 궁금하다. OSNet 이후에 나온 다른 성능 좋은 ReID 모델도 있는 것 같은데.)
- 크롭된 사람 이미지를 Pose Esimator에도 넣어 사람의 pose key point를 찾는다. 발 밑의 key point와 detection의 bbox를 사용해 사람의 위치를 찾을 기준점을 구한다.이 점으로 world coordinate에서 사람의 위치를 찾게 된다.
- $$ F_{g}(X_{t,id}^{k}) =
\begin{cases}
(\frac{x_{la} + x_{ra}}{2}, \frac{y_{la} + y_{ra}}{2}) & \quad \text{if } c_{la}, c_{ra} \geq \tau_{pose} \newline
(x + w/2, y + h) & \quad \text{otherwise}
\end{cases}
$$ - Camera Self-calibration으로 각 카메라의 homography를 미리 구해두었다.
여기서 self-calibration은 chessboard 같은 것 없이 카메라로만 진행해서 self-calibration이라고 하는 것 같다. WILDTRACK이나 MMP-Track 같은 multi-cam multi-object tracking의 경우 camera parameter를 제공한다. 하지만 AI Challenge 데이터는 제공해주지 않아서 카메라 별로 손으로 6-12개의 점을 찍어 homography를 바로 구했다고 한다. - homography로 사람의 발 밑 점이 world coordinate에서 어느 위치인지 찾는다.
- $$F_{3D}(X_{t,id}^{k})=H^{k} \cdot F_{g}(X_{t,id}^{k})^{T}$$
Multi-Camera Tracking
Multi-Camera Tracking은 크게 Anchor Guided Clustering과 Spatio-Temporal Consistancy ID Reassignment의 두 가지 단계로 나뉜다.
Anchor Guided Clustering
이 논문은 offline tracking이므로 각 카메라별로 모든 프레임의 정보를 가지고 있다. 따라서 전체 영상에서 일부 프레임을 sampling할 수 있다. 모든 카메라에 대해 동일한 시점을 sampling하고, 이를 하나로 모아 clustering한다. 이때 Re-ID 모델에서 얻은 각 객체의 apperance feature로 Hierarchical Clustering을 한다. Clustering한 결과로 여러 anchor들을 얻을 수 있는데 이 anchor가 multi-camera tracking의 global ID가 된다. 이러한 방식을 사용하면 각 anchor에는 다양한 view rotation, 조도, 인식된 크기 등의 다양한 조건에서 얻어진 appearance feature가 존재하게 된다.
이후 모든 single camera tracking의 모든 tracklet의 각 프레임을 anchor와 비교하여 cost를 구하고, hungarian algorithm을 통해 각 anchor에 해당하는 global ID를 부여한다. 이때 하나의 tracklet에 할당된 global ID가 여러개 일 수 있다. 이를 sliding window내 ID에 대해 majority voting하여 하나의 global ID를 가지게 한다.
$$\textrm{cost}(d_{i,t}, a_{j}) = 1-\frac{1}{k} \sum_{l=1}^{k} \frac{d_{i,t} \cdot a_{j,l}}{|d_{i,t}||a_{j,l}|}$$
Spatio-Temporal Consistency ID Reassignment
Spatial consistency와 temporal consistency를 나누어 생각한다.
Spatial consistnecy는 Single tracking에서 5번, 6번을 통해 구해진 world coordinate position($\hat{X}^{k}_{t,id}$)을 사용한다. 동일한 시점(프레임)과 ID를 가지는 위치에 대해서 서로 다른 모든 카메라에 대해 평균 오차($D_{spatial}$)를 구하고, 이 오차로 confidence 값을 정의했다. (여기서 self-defined confidence라는 표현을 사용하는데 일반적으로 사용되는 건 아니지만 논문에서 정의해서 이렇게 쓰는 것인지 궁금하다.)
$$D_{spatial}(\hat{X}^{k}_{t,id}, t, id)=\frac{1}{N}\sum_{l \neq k}||\hat{X}^{l}_{t,id}-\hat{X}^{k}_{t,id}||$$
$$conf_{i \to j}(\hat{X}^{k}_{t,i})=1-\frac{D_{spatial}(\hat{X}^{k}_{t,i},t,j)}{D_{spatial}(\hat{X}^{k}_{t,i},t,i)}$$
Temporal consistency는 일종의 smothing을 의미하는 것으로 보인다. 위치가 갑작스럽게 변하면 이상하니 완화시키겠다는 것이다. 실제 움직임과는 차이가 있겠지만 안정적인 출력을 얻을 수 있다. 이 과정은 시간에 따른 sliding window를 만들고 관계도에 따라 weight를 할당해 weighted average를 사용한다.
'Deep Learning' 카테고리의 다른 글
Building Basic GAN, Week2 - Lecture (0) | 2024.02.03 |
---|---|
Building Basic GAN, Week1 - Lecture (2) | 2024.01.28 |
LoFTR: Local Feature matching with TRansformers (1) | 2024.01.14 |
PRML 4. 선형 분류 모델(Linear Models for Classification) (0) | 2022.06.05 |
Depth from videos in the wild: Unsupervised monocular depth learning from unknown cameras (0) | 2022.02.20 |
- 디지털신호처리
- Gan
- mode collapse
- Deep learning
- 운영체제
- 신호처리
- depth
- Generative Model
- design pattern
- feature
- Operating System
- ML
- OS
- machine learning
- deeplearning
- depthmap
- Building Basic GAN
- TRACKING
- controllable GAN
- conditional GAN
- 딥러닝
- image
- ML Pipeline
- 3d object detection
- AI
- Raspberry Pi
- pcb
- Depth estimation
- MLOps
- DSP
- Total
- Today
- Yesterday
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |