🏓

Unsupervised Tracklet Person Re-Identification

Tags
Unsupervised Learning
Re-identification
Created
2021/01/15 04:46
Publication
IEEE
Rate
3.5
Summary
Tracklet information을 이용하여 unsupervised person re-identification model learning을 수행하는 UTAL 알고리즘을 제안하는 페이퍼. Tracklet을 각각의 identity로 간주하여 within-camera tracklet discrimination task를 학습함으로써 within-camera discriminative feature를 획득하고(이 때 tracklet fragmentation에 대응하기 위해 soft-labeling을 적용한다), reciprocal nearest neighbor 개념을 통해 cross-camera positive match를 탐색하고 이를 통해 cross-camera association task를 학습시킴으로써 cross-camera discriminative feature를 획득하고자 한다. (상세 페이지 참고)
Unsupervised re-identification은 대개 연구자들의 통밥으로 그럴싸한 pseudo-label을 생성하고 이를 학습함으로써 discriminative feature를 학습하려 하기 마련인데, 개인적으로는 이렇게 휴리스틱에 의존하기보다는 어느 정도 가시적인 정보를 이용하는 것이 합리적인 방향이라고 생각한다. 그래서 최근에는 tracklet information을 이용한 unsupervised person re-identification model training에 집중하고 있는데, 나와 아주 비슷한 고민에서 비롯하여 나름대로의 해결책을 제안한 이 논문이 좋은 참고가 될 것 같아 정리한다.
큰 줄기는 1) 한 장소를 비추는 여러 개의 카메라의 동영상들에서 추출된 tracklet을 이용하여 각각의 카메라에 대한 within-camera person discriminative feature를 학습하고, 2) 여기서 얻은 implicit discriminability를 통해 cross-camera matching example mining을 시도하고, 이로부터 cross-camera person discriminative feature를 학습하겠다는 것이다.
여기서 제시된 알고리즘을 Unsupervised Tracklet Association Learning이라 하여 UTAL이라 칭한다.

Per-Camera Tracklet Discrimination Learning (PCTD)

기본적으로 동영상으로부터 추출된 tracklet들을 각각 하나의 identity로 취급하여 discrimination task를 학습한다. Loss는 흔히 쓰는 Cross Entropy loss나 유사한 loss이면 충분할 것이다.
다만 UTAL은 특이하게, 각각의 camera view에 대한 classification을 별도로 학습한다. 즉 카메라 a에서 추출된 tracklet들을 저들끼리 classification하고, 카메라 b에서 추출된 tracklet들은 또 따로 저들끼리 classification하는 것이다. 이렇게 multi-branch classification을 수행하는 이유는 서로 다른 카메라에 찍힌 동일한 사람이 존재할 경우 single-branch classification이 이들의 feature를 멀어지게 함으로써 re-identification 성능을 해칠 수 있기 때문이라고 한다.
하지만 여기서 또 하나의 문제가 있다. 바로 tracking 과정에서 흔히 발생하는 tracklet fragmentation(즉 하나의 영상에서 동일한 사람에 대한 tracklet이 두 개 이상의 tracklet으로 나뉘어지는 경우)이다. 이 경우 위와 아주 동일한 이유로 모델의 성능을 해치게 되며, 페이퍼에서는 이를 해결하기 위해 다음과 같은 soft labeling을 제안한다.
Soft Labeling
먼저 Ai,j=sim(si,sj)A_{i, j} = \text{sim}{(s_i, s_j)} 인 affinity matrix AA 를 구한다. 이를 위해 tracklet sis_i 의 feature sits_i^t 를 구해주어야 하는데, 매 mini-batch에서 해당하는 tracklet의 feature를 다음과 같이 업데이트한다. nitn_i^t 는 mini-batch에 존재하는 tracklet sis_i 의 수이며, xix_i 는 당연하게도 해당 이미지의 feature embedding이다.
sit:=11+α[sit+α(1nitk=1nitxk)]s_i^t := \frac{1}{1 + \alpha}[s_i^t + \alpha(\frac{1}{n_i^t}\sum_{k=1}^{n_i^t}{x_k})]
이런 방식으로 매번 모든 이미지를 보지 않고도 각 tracklet을 대표하는 feature를 계속해서 구해낸다는 것이다. 이러한 feature들을 가지고 다음과 같이 affinity matrix를 구한다.
At(i,j)={exp(sitsjt2σ2),if sjtN(sit)0,otherwiseA^t(i, j) = \begin{cases} \exp{(-\frac{||s_i^t - s_j^t||^2}{\sigma^2})}, & \text{if } s_j^t \in N(s_i^t) \\ 0, & \text{otherwise} \end{cases}
N(sit)N(s_i^t)sits_i^t 의 K-nearest-neighbors이며, σ2\sigma^2 는 다음과 같은 scale factor이다. Local density structure를 incorporate하기 위해 이와 같은 scaling을 한다고 하는데, KNN set의 average distance이니 그 의미는 상당히 직관적이다.
σ2=1MtKi=1Mtj=1Ksitsjt22, s.t. sjtN(sit)\sigma^2 = \frac{1}{M_tK}\sum_{i=1}^{M_t}\sum_{j=1}^K{||s_i^t - s_j^t||^2_2}, \text{ s.t. } s_j^t \in N(s_i^t)
이제 이를 기반으로 다음과 같이 각각의 tracklet에 대한 soft label을 구한다.
y^it=A(i,1:Mt)j=1Mt(A(i,j))\hat{y}_i^t = \frac{A(i, 1:M_t)}{\sum_{j=1}^{M_t}{(A(i, j))}}
이를 약간 class weight같이 사용하는데, loss를 그냥 직접 써보자면 다음과 같다.
Lsce=j=1Mty^it(j)log(exp(WjTx)k=1Mt(WkTx))L_{sce} = -\sum_{j=1}^{M_t}{\hat{y}_i^t(j) \log{(\frac{\exp{(W_j^Tx)}}{\sum_{k=1}^{M_t}{(W_k^Tx)}})}}
이 페이퍼에서는 이러한 Per-Camera Tracklet Discrimination learning을 통해 implicit한 cross-camera discriminability를 획득한다고 한다. 각각의 camera에 대해서 collective하게 discriminability를 갖추게 되었으니 그럴 것이라는 건데, 사실 그럴싸하지는 않다.

Cross-Camera Tracklet Association Learning (CCTA)

PCTD를 통해 within-camera discriminability를 획득했지만, 아직 모델은 cross-camera discriminability를 획득하지 못했으며, 따라서 sub-optimal하다. 여기서는 단순히 sub-optimal 하다고 표현했는데, 이로 인한 문제점을 활용의 측면에서 조금 더 고민해 볼 필요는 있을 듯하다.
어쨌거나 핵심 챌린지는 identity label이 없는 상황에서 서로 다른 카메라의 matching pair를 찾아내야 한다는 것인데, 여기서는 reciprocal nearest-neighbor를 이용한다. 즉 서로 다른 카메라에서의 두 tracklet이 서로를 가장 가까운 tracklet으로 뽑으면, 이 두 tracklet을 matching pair로 간주하겠다는 것이다. 식으로 쓰면 다음과 같다.
R(sit)={ssN1(sit) and sitN1(s)}R(s_i^t) = \{ s | s \in N^1(s_i^t) \text{ and } s_i^t \in N^1(s) \}
이러한 matching pair를 가지고 다음과 같이 loss를 구한다. Positive pair만 골라 학습하는 셈이다.
Lccta=sR(sit)sits2L_{ccta} = \sum_{s \in R(s_i^t)}{||s_i^t - s||_2}
당연하게도 최종 loss는 두 개의 loss를 다음과 같이 합하여 구한다.
LUTAL=Lpctd+λLcctaL_{UTAL} = L_{pctd} + \lambda L_{ccta}

Model Training and Implementation Details

여기서 CCTA는 cross-camera에 대한 implicit discriminability를 획득했다는 가정 위에서 형성되었으므로, LcctaL_{ccta} 는 학습 과정의 second half에만 적용한다고 한다. 또한 효율적인 학습을 위해 soft label과 matching pair는 매 epoch마다 업데이트한다. 학습 과정에서 camera 별 학습의 밸런싱을 위해 각각의 카메라에서 동일한 수의 tracklet을 뽑고, 각각의 tracklet에서 동일한 수의 image를 뽑았다고 한다. λ\lambda 는 뭔가 epoch마다 늘어나는 형식일 줄 알았는데, constant 값(10)을 사용했다. 이외에 별다른 점은 없어보인다.
그리고 무려 source data set 없이 ImageNet pre-trained model로 바로 target data set에 조진 것 같다.

Evaluation

벤치마킹 성능은 MAR이나 MCL같은 SOTA unsupervised learning framework들보다 크게 높아보이지는 않는다. 다만 어느 정도 comparable해 보이며, 다른 페이퍼들은 보통 source data set에서의 supervised learning을 기반으로 domain adaptation을 수행했다는 측면에서 꽤 활용도가 높아보이기도 한다.

Component Analysis and Discussion

Multi-branch classification 아키텍쳐나 soft labeling, CCTA loss에 대한 ablation study를 진행하고, 그 결과를 공유한다. 모두 유의미한 성능의 증가가 있었다고 발표되어있다. 이 밖에도 다양한 component analysis를 진행하니 한 번 읽어봄직하다.
E.O.D.