티스토리 뷰

Deep Learning

ReST

seoyoung02 2024. 2. 16. 17:37

ReST는 multi-camera multi-object tracking task를 위한 모델이다. 데이터셋은 WILDTRACK을 사용했다. WILDTRACK은 고정된 7개의 카메라가 서로 중첩된느 영역을 보고있고, 같은 사람에는 같은 index가 라벨링 되어있는 데이터 셋이다.

 

Multi object tracking(MOT)에서 일반적으로 일어나는 문제가 occlusion 등의 이유로 인한 ID switch가 일어난다는 것이다. 이러한 것을 보완하고자 Multi-camera multi object tracking(MCMOT)이 등장하였다. 특정 카메라에서 인식되지 않는 객체를 다른 카메라에서 정보를 얻어 singlet tracker를 사용하지 않고 시간 상에서 같은 object를 찾는 것이 특징이다.

 

이름이 하필 ReST라 코드를 검색해도 잘 나오지 않아 링크를 걸어둔다.

Overview

그림1. ReST Overview

크게 Spatial Association과 Temporal Association으로 나눌 수 있다. 이름 그대로 Spatial Association은 카메라 간 같은 객체를 찾고, temporal은 서로 다른 시간에서 같은 객체를 찾는다. 일반적으로 MCMOT에서는 temporal tracking을 통해 single tracker를 생성 후 tracklet간 matching을 하는 것과 차별점이 있다.

특이한 점은 Spatial association부분과 Temporal association 부분을 따로 학습한다는 것이다. Graph Reconfiguration은 Spatial과 Temporal을 연결해주는 부분으로 inference에서만 사용된다.

Spatial/temporal graph

그림2

Spatial Graph(SG)와 Temporal Graph(TG)는 유사한 구조를 가지고 있다. Graph Initialization을 통해서 vertex와 edge에 값을 부여하여 연결한다. 이후 Message Passing Network를 통과시키고, Classifier를 통해서 edge가 연결되어있을 확률을 구한다. Egde의 연결은 동일한 사람임을 의미한다.

Message Passing Network

Message Passing Network(MPN)은 이웃한 node와 edge의 정보로 해당 node를 업데이트하는 형태를 가진 모델이다. 모든 node와 edge에 대해서 업데이트를 하고 이를 여러번 반복한다. Node들 사이에 전달되는 정보를 message라고 하는데 이러한 전달의 과정을 반복하여 전달하여 passing이라고 한다.

 

업데이트는 크게 edge update와 node update 두 단계로 나뉘어 진행된다.

Edge update는 edge message encoder($f_{ME}^{e}$)와 soure node, destination node, 현재 edge의 값으로 업데이트 된다. 수식으로 보면 아래와 같다.

$$h_{e_{ij}}^{l}=f_{ME}^{e}([h_{v_{i}}^{l-1}, h_{e_{ij}}^{l-1},h_{v_{j}}^{l-1}])$$

Node update는 주변 node들의 값의 합으로 이루어진다. 각 node는 이전 interation의 node 값과 현재의 edge값을 node message encoder($f_{ME}^{v}$)에 넣어 계산한다.

$$h_{v_{i}}^{l}=\sum_{j \in N(v_{i}}m_{ij}^{l}, \quad m_{ij}^{l}=f_{ME}^{v}([h_{v_{j}}^{l-1},h_{e_{ij}}^{l}])$$

이 논문의 코드를 보면 얕고 작은 MLP와 ReLU로 구성되어 있다.

Graph Initialization

MPN Graph의 vertex와 edge를 초기화한다. 아래 표의 값들을 input으로 하여 매우 얕고 작은 MLP와 ReLU로 구성되어 있는 모델에서 initial feature를 구한다. 또한, edge는 node사이의 관계이므로 SG는 서로 다른 카메라인 경우에만, TG는 서로 다른 시간인 경우에만 초기화 한다.

 

  SG TG
Node ReID Feature ReID Feature
Projected Point
Camera Id
Edge ReID Feature Distance
ReID Feature Cosine Similarity
Projected Point Distance(x, y)
ReID Feature Distance
ReID Feature Cosine Similarity
Projected Point Distance(x, y)
Velocity(x, y)

 

ReID Feature는 사람 이미지를 crop하고 OSNet에 넣어 얻은 feature이다. OSNet은 다양한 receptive field를 가지는 feature들을 aggregation하여 feature를 만드는 모델이다.

Projected Point는 homography matrix를 사용해 바닥면으로 projection한 점이다. Homography matrix은 데이터셋에 이미 존재하는 camera parameter를 사용해 계산한다. Projection에 사용되는 기준점은 사람 bbox 하단 중심이다.

$$p_{v_{i}}=P_{c_{v_{i}}}(x+\frac{w}{2}, y+h)$$

Velocity는 TG에서만 사용할 수 있다. TG에서 이전 프레임과 현재 프레임 값을 연결하게 되고, 이 둘의 projected point의 차이를 계산해 속도를 구한다.

이것은 학습시에 사용되는 것으로 inference에서의 TG의 초기화는 차이가 있다. 이것은 아래에서 설명한다.

Training

그림3

학습은 SG와 TG에서 따로 이루어지지만 같은 단계를 거치고, 같은 Loss function을 사용한다. Loss는 MPN의 모든 iteration에서 계산되며, 예측된 edge 집합과 GT edge 집합의 합집합에 대해 계산한다. Focal loss를 사용한다.

$$\mathcal{L}=\sum_{l=1}^{L}\sum_{e_{ij}\in E_{S}\cup E_{T}} FL(\hat{y}_{e_{ij}}^{l}, y_{e_{ij}})$$

Post Processing

그림4

그림4에서 보듯 세 단계로 이루어져 있다.

Pruning에서는 threshold 이하의 값을 가지는 edge를 제거한다.

Splitting에서는 물리적으로 불가능한 경우를 제거한다. 먼저, SG를 보면 (카메라 수 - 1) 이상의 edge가 연결되어 있을 수 없다. 그러면 edge중 가능 낮은 확률을 갖는 것부터 차례로 제거한다. TG의 경우에는 window size가 정해져 있는데 해당 size - 1 보다 큰 수의 edge가 연결되어 있다면 마찬가지로 가장 낮은 확률을 갖는 것부터 차례로 제거한다.

Assign ID에서는 각 node에 ID를 부여하고, 연결된 node에는 같은 ID를 부여한다.

Graph Reconfiguration

어쩌면 이 논문의 가장 핵심인 Graph Reconfiguration(GR)이다. 이름처럼 graph를 재구성(reconfigure)한다. 앞서 언급했듯 이 단계는 학습하지 않고, inference에서면 사용된다.

GR은 현재 시간($t$)의 SG와 이전 시간($t-1$)의 TG를 재구성한다. 먼저 SG, TG 모두 post processing 이후 연결된 node들의 값을 하나로 통합한다. $H_{i}$는 서로 연결된 node의 집합을 의미한다. 여러 개의 $H_{i}$가 존재할 수 있다. 여기서는 평균을 사용한다.

$$d_{v}=\frac{\sum_{v \in H_{i}}d_{v}}{|H_{i}|}, \quad p_{v}=\frac{\sum_{v \in H_{i}}p_{v}}{|H_{i}|}$$

이후 SG의 node와 TG의 node를 연결한다. 서로 다른 시간을 가지면 모두 연결하고, inference시 TG의 초기값으로 사용한다.

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