티스토리 뷰

그림1. Multi-Camera People Tracking

이 논문은 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. Pipeline

그림2에서 볼 수 있듯 크게 Single-camera Tracking과 Multi-Camera Tracking으로 나눌 수 있다. 하나의 카메라에서 tracking한 후, 각 카메라 정보를 합치는 방식이다.

Single-Camera Tracking

Single-Camera Tracking을 순서대로 따라가보자. 이 과정이 모든 카메라에서 이루어진다고 보면 된다.

  1. 영상에서 frame을 뽑은 후 Detector로 매 이미지에서 사람을 찾는다. 여기서 Detector는 yolov7를 사용했다.(깃헙 코드 기준)
  2. 인식된 사람을 크롭하여 Re-ID Feature Extractor에 넣는다. Re-ID Feature Extractor로 OSNet을 사용했다.
  3. Re-ID 모델에서 얻어진 feature를 사용해 Tracking Module에서 tracking한다. BoT-SORT를 사용했다. Re-ID model은 OSNet을 사용했다. (다른 논문에서도 OSNet을 사용하던데 코드가 활용하기 좋아서인지, 모델 구조상 이점이 있는 것인지 궁금하다. OSNet 이후에 나온 다른 성능 좋은 ReID 모델도 있는 것 같은데.)
  4. 크롭된 사람 이미지를 Pose Esimator에도 넣어 사람의 pose key point를 찾는다. 발 밑의 key point와 detection의 bbox를 사용해 사람의 위치를 찾을 기준점을 구한다.이 점으로 world coordinate에서 사람의 위치를 찾게 된다.
  5. Fg(Xkt,id)={(xla+xra2,yla+yra2)if cla,craτpose(x+w/2,y+h)otherwise
  6. Camera Self-calibration으로 각 카메라의 homography를 미리 구해두었다.
    여기서 self-calibration은 chessboard 같은 것 없이 카메라로만 진행해서 self-calibration이라고 하는 것 같다. WILDTRACK이나 MMP-Track 같은 multi-cam multi-object tracking의 경우 camera parameter를 제공한다. 하지만 AI Challenge 데이터는 제공해주지 않아서 카메라 별로 손으로 6-12개의 점을 찍어 homography를 바로 구했다고 한다.
  7. homography로 사람의 발 밑 점이 world coordinate에서 어느 위치인지 찾는다.
  8. F3D(Xkt,id)=HkFg(Xkt,id)T

Multi-Camera Tracking

Multi-Camera Tracking은 크게 Anchor Guided Clustering과 Spatio-Temporal Consistancy ID Reassignment의 두 가지 단계로 나뉜다.

Anchor Guided Clustering

그림3. 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를 가지게 한다.

cost(di,t,aj)=11kkl=1di,taj,l|di,t||aj,l|

 

Spatio-Temporal Consistency ID Reassignment

Spatial consistency와 temporal consistency를 나누어 생각한다.

Spatial consistnecy는 Single tracking에서 5번, 6번을 통해 구해진 world coordinate position(ˆXkt,id)을 사용한다. 동일한 시점(프레임)과 ID를 가지는 위치에 대해서 서로 다른 모든 카메라에 대해 평균 오차(Dspatial)를 구하고, 이 오차로 confidence 값을 정의했다. (여기서 self-defined confidence라는 표현을 사용하는데 일반적으로 사용되는 건 아니지만 논문에서 정의해서 이렇게 쓰는 것인지 궁금하다.)

Dspatial(ˆXkt,id,t,id)=1Nlk||ˆXlt,idˆXkt,id||

confij(ˆXkt,i)=1Dspatial(ˆXkt,i,t,j)Dspatial(ˆXkt,i,t,i)

 

Temporal consistency는 일종의 smothing을 의미하는 것으로 보인다. 위치가 갑작스럽게 변하면 이상하니 완화시키겠다는 것이다. 실제 움직임과는 차이가 있겠지만 안정적인 출력을 얻을 수 있다. 이 과정은 시간에 따른 sliding window를 만들고 관계도에 따라 weight를 할당해 weighted average를 사용한다.



댓글
최근에 올라온 글
Total
Today
Yesterday
최근에 달린 댓글
링크
공지사항
«   2025/04   »
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
글 보관함