일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Deeplearning
- Python
- center loss
- 자료구조
- cv2
- flame
- 파이썬
- numpy
- Object Tracking
- reconstruction
- 논문 구현
- 프로그래머스
- deep learning
- re-identification
- NLP
- Object Detection
- Computer Vision
- Threshold
- OpenCV
- transformer
- 알고리즘
- attention
- 임계처리
- point cloud
- 스택
- 딥러닝
- Knowledge Distillation
- level2
- 큐
- 3D
- Today
- Total
공돌이 공룡의 서재
[논문 리뷰] Center Loss : A Discriminative Feature Learning Approachfor Deep Face Recognition 본문
[논문 리뷰] Center Loss : A Discriminative Feature Learning Approachfor Deep Face Recognition
구름위의공룡 2022. 2. 23. 14:23A Discriminative Feature Learning Approach for Deep Face Recognition
center loss 의 경우 face recognition 뿐 아니라 reid task에도 자주 적용되는 loss function으로, 최신 reID논문들을 이해하는데 필요한 loss 다. 이 함수를 처음 제시한 논문을 읽어보았다.
Introduction
- face recognition task에서 feature는 separable + discriminative 특징이 있어야 한다. →class 간 구분이 잘 되며 특징이 뚜렷한 feature
- Discriminative 한 feature는 NN이나 k-NN 같은 알고리즘으로 잘 구분이 될 수 있다. 그러나 softmax loss는 feature의 separability 만 다룬다.
- discriminative feature를 위해 contrastive loss 나 triplet loss 등을 이용해서 학습할 수는 있으나, 이미지의 수가 늘어날 수록 학습에 쓰이는 pair (또는 triplet) 의 수가 기하급수적으로 늘어나게 되어, 학습이 불안정해지고 수렴 속도가 느려지게 된다.
→ 저자들은 Center Loss 를 제안해서 feature의 discriminative power를 더 높일 수 있다고 한다. softmax loss 만 사용하는 것은 다른 클래스들끼리 분리되는 것에만 작용하는 반면 (Inter-class difference를 키운다.) center loss는 같은 클래스에 대한 feature들은 중심점으로 모이도록 한다. (Intra-class variation을 줄인다.)
Toy project - Softmax
LeNet 을 수정한 모델로 MNIST를 이용해서 softmax로 학습한 다음, training set과 test set 에 대해 feature를 뽑아냈을 때를 시각화한 것이다.
좌측이 training set, 우측이 test set이다. 서로 다른 class 간 구분은 잘 되는 것을 볼 수 있는 반면, 같은 class 내에서는 분산이 큰 것을 확인할 수 있다.
Center Loss
$$L_c = \frac{1}{2} \sum_{i=1}^{m}{||x_i-c_{y_i}||^2_2 }$$
Center Loss는 위 수식을 이용해서 구한다. $c_{y_i}$ 는 $y_i$ 번째 클래스의 feature 의 center를 말한다. 이 center는 feature 가 바뀌면 그에 따라 바뀐다.
여기서 Center 를 어떻게 구하고 업데이트할 것인가? 가 관건이다.
- 일반적으로 Data set의 크기가 매우 커서 실제로는 mini-batch 단위로 학습을 하기 때문에, mini-batch 단위로 center 의 업데이트가 이뤄져야 한다.
- 일부 outlier나 mislabelled data가 있을 수 있으므로, 이를 고려해야 한다.
그래서 실제로는 다음과 같은 알고리즘을 따라서 이뤄진다.
($L_s$ 는 softmax를 이용해서 구한 classification loss에 해당한다.)
이 때 업데이트에 필요한 gradient 값은 다음 식을 따라서 구할 수 있다.
위 알고리즘에서 3: 을 보면 $L_C$ 와 $L_S$ 를 더한 joint loss를 사용해서 학습을 하는데, 이때 scalar 값을 둬서 두 loss 의 가중치를 조절할 수 있다.
Discussion
$L_C$ 에 대한 가중치가 클 수록 feature가 더 tight하게 뭉치는 것을 확인할 수 있다. 이를 통해 더 discriminative 한 feature를 얻었다고 할 수 있다.
논문에서는 MNIST 외에 사람 얼굴에 대해서도 진행해서 기존보다 더 좋은 결과를 얻을 수 있었다. 이 핵심을 응용해서 re ID에서도 적용이 가능하다.
'딥러닝 > Vision' 카테고리의 다른 글
[논문 리뷰] Stacked Hourglass Networks for Human Pose Estimation (0) | 2021.09.28 |
---|---|
[논문 리뷰] YOLACT : Real-time instance segmentation (0) | 2021.09.02 |
[논문 리뷰] DDRNet : Real-time segmentation SOTA (2021.8 기준) (0) | 2021.08.30 |
[논문 리뷰] YOLO v1 : You Only Look Once (0) | 2021.08.26 |
[논문 리뷰] DETR: Object Detection with Transformer (0) | 2021.08.24 |