일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- hourglass
- vit
- Realtime
- cornernet #simple #다음은centernet #hourglass생명력이란
- XiaomingLiu #PersonIdentification
- objectdetector
- coco
- DeepDoubleDescent #OpenAI #어려워
- ICCV19 #Real-World #FaceRecognition
- Manmohan #UnconstrainedComputerVision
- POSE ESTIMATION
- Transformer #classification #SOTA #Google
- IvanLaptev
- CVPR
- centernet
- np-hard
- 정리용 #하나씩읽고있음 #많기도많네 #내가찾는바로그논문은어디에
- Today
- Total
HyperML
[CVPR18]CosFace: Large Margin Cosine Loss for Deep Face Recognition 본문
먼저 읽어야 하는 paper : https://arxiv.org/pdf/1704.08063.pdf
얼굴인식의 정확도를 높이기 위한 페이퍼는 끝이 없이 나오는 것 같다.
Alex와 Hinton이 ImageNet 논문을 NIPS에서 낸 12년도 이후 초기엔 CNN을 softmax classifier로 분류하다가
metric learning이 나오고 나서는 inter-class의 거리는 벌리고, intra-class끼리는 좁히는(둘 다 혹은 둘 중 하나만) center loss니 triplet loss니 하는 것들이 유행을 이끌었다.
이후 직각좌표 공간이 아닌 각좌표 공간을 도입한 논문이 나왔다. 얼굴 인식에 자주 사용되는 cosine similarity는 벡터간의 거리를 magnitude가 아닌 angle 만으로 측정한다. 직관적으로 각좌표가 이런 컨셉을 잘 반영해주는 것도 같다.
어찌됐든 이 논문도 그 유행의 끝자락에 있어보이는 듯 하다.
그림은 일반적인 CNN classifier와 다를 것이 없다. 다만 loss를 LMCL이란 것을 썼다고 한다. 작년에 나온 SphereFace랑 좀 비슷하다.
그러나 loss 식이 약간 다른데,
SphereFace의 A-Softmax boundary condition은
간단히 설명하면 theta1은 1번 클래스의 weight vector와 샘플 x의 vector 가 이루는 angle을 의미한다 theta가 크면 클수록 거리가 멀다는 뜻
m을 붙인것은 같은 클래스내에서 그만큼 작은 hyper-sphere 공간 각 내에서 움직이게 세팅하겠다는 의미, 원 논문에서는 m=4
근데 단점이 있다.
1. 클래스마다 margin이 달라짐
2. 단조증가하지 않는 cos함수 때문에 optimization이 어려움 (SGD같은게 잘 안먹히나.. 잘 이해는 안됨)
반면, 본 paper에서 제시하는 boundary condition은 이것이다.
일반적인 softmax loss는 아래와 같고,
계산의 간단함을 위해 바이어스를 0으로 두면 fj는 아래와 같다. 물론 cosine 유사도형태이다. W는 각 class의 weight vector이고 x는 sample vector이다, theta는 weight와 샘플사이의 각도.
그런데 W의 norm는 변하지 않으므로 1.0 (by L2 normalization) x의 norm도 cosine similarity 개념상 변하지 않으므로 고정된 s로 두면 아래식 처럼 loss를 구성할 수 있다
이것을 본 paper에서는 NSL(Normalized version of Softmax Loss)라고 이름 붙였다.
기본적으로 NSL은
이고, 논문에서 진짜 말하고 싶은 loss인 LMCL(Large Margin Cosine Loss)은 아래와 같다.
LMCL의 classifier는
과 같다. 단, m >= 0, m은 마진 크기를 조절하기 위한 고정된 파라미터
LMCL은 정리하자면 다음과 같다, s는 scaling parameter.
여기서 cos() 안에 들어있는 theta는 해당 클래스의 weight 벡터와 입력 샘플 벡터사이의 각이다.
decision boundary 이야기도 있는데 sphereface의 A-Softmax와 LMCL만 비교하면 될 것 같다
A-Softmax decision boundary:
잠시 A-Softmax가 나온김에 부연하자면,위는 부등식이므로 위 식은 실상 아래와 같은 뜻이다. (The inequality cos(θ1)>cos(mθ1) holds while θ1 ∈[0, π m ], m) m은 정수 (최적 m=4)
쉽게 얘기하면 해당 샘플이 클래스1번이라면 다른 클래스의 각퍼짐 정도보다 m배 축소된 각도내로 제한시켜서 W를 학습하겠다고 하는 것이다.
그것을 LMCL에서는 m배 나누는 것이 아닌 cos값을 + m 해서 쓰겠다는 뜻이다.
각도에 곱해서 매번 변화하는 마진 보다는 정량으로 margin을 설정하는 것이 더 좋다고 주장하는 듯 하다.
그런데 구분이 어려운 클래스일수록 (= theta가 클수록) 빡세게 기준을 잡아서 (= 1/m*theta가 작아서) 샘플벡터가 더 해당 클래스의 consensus에 가깝게 가도록 Wj를 학습하는 것이 더 이 타당해 보이고 그것이 sphereface 인데, 여기서는 그냥 m을 더하기만 해서 그 장점을 취하지 않았다.
sphreface의 약점은 theta=0 일때는 margin도 0 이므로 각도에 따라 클래스 구분에 위험이 따를 수가 있다는 점이다.
LMCL decision boundary:
m이 cos 함수 밖으로 나왔다. 뒤에가면 나오지만 최적 m=0.35 정도이다.
sphereface는 weight vector만 normalize하지만 본 paper는 feature vector도 normalize 한다
각으로는 분포를 확인하고, s는 magnitude 를 조절한다.
이렇게 하면 모든 feature vector가 동일한 L2 norm을 가지게 되어 discriminative power는 cosine 값에만 의존하게 된다
그러면, hypersphere상에서 같은 클래스끼리는 모이게 되고, 다른 클래스끼리는 밀어내는 역할을 한다.
만일 magnitude가 반영이 된다면 각도가 아닌 magnitude가 비슷하지만 각도가 차이나는 데이터끼리도 cluster될 가능성이 있다.
이것은 샘플 벡터가 normalize되어야 하는 이유와도 동일한데 만일 theta가 정답이 아닌 클래스와 더 작게 차이가 난다면 theta대신에 norm (or magnitude)을 줄이려고 loss 함수가 노력할것이고 이는 최적화에 역행하는 것이다.
너무 작은 s는 converge를 방해한다고 한다.
아래 C는 클래스 개수 이고 Pw는 해당 클래스의 중심 기대 최소 사후확률로 정의한다.
만일 class i에 속한 모든 data가 Wi벡터와 같다면 마진이 최대가 될 것이다. 이것을 식으로 표현하면 아래와 같다.
부등식의 3항은 (1,0), (0,1)로 생각해보면 ([0, 1],[1, 0])가 되고 이중에 max니까 1이 된다.
잠시 아래 그림을 보자면,, 각 loss들과 LMCL간의 차이를 쉽게 표현했다.
각 theta-n 은 샘플과 클래스n과의 거리 정도로 생각하면 될 듯 하다.
그림만 봐서는 sphereface의 A-Softmax보다 LMCL이 더 나은지 알기가 어렵다. 원점근처에서의 discrimination 능력이 좋을 것 같으나 magnitude가 아닌 angle의 cos 값만 비교하기 때문에 원점 주변의 discimination 능력은 큰의미가 없다.
아래그림은 NSL과 LMCL간의 차이를 나타낸다. NSL은 마진이 없다.
위 그림은 m을 조절함에 따라 생기는 클래스간의 각도차(?)를 표현했다.
m이 커질 수록 metric learning의 목적을 잘 수행하는 것을 볼 수 있다. (SphereFace랑 아주 전개방식이 유사하다)
m이 어디까지 커져야 좋은지에 대한 그림은 아래와 같다
m 이 0.35보다 커지게 되면서 오히려 성능이 떨어지는 것 처럼 보인다. MNIST처럼, LFW는 워낙 잘 맞추는 시대가 됐다.
LFW는 6000개의 같거나 다른 인물 pair를 얼마나 잘 맞추느냐를 평가하는 데이터셋이다.
LFW accuracy가 높아 보이지만, LFW 사이트가서 리더보드를 보면 아래와 같다....
... 요즘말로 징하게 고인물들...
이 논문의 모태(?)가 되었던 SphereFace를 대중적으로 쓰이는 LFW dataset에서 이기기는 했으나
SphereFace는 training data 크기가 아주 훌륭하다. 단지 49만개로만 저 성능을 달성했다. 본 paper는 10배가 넘는 500만개.
MegaFace Challenge에서의 성적이다.
FAR은 False Accept Rate로써 다른 face를 같다고 판단할 확률이다. 낮을 수록 좋다. 표에서는 FAR이 10의 -6승 일 때의 (threshold로) TAR를 평가한다.
TAR은 True Accept Rate이다.
Identification은 입력 영상이 누구의 얼굴인가를 맞추는 방식이고 Verification은 입력을 두개를 받아서 같은 사람인지 아닌지를 맞추는 방식이다.
일반적으로 verification은 softmax layer를 가기전 마지막 fc에서 벡터를 두개 뽑아서 L2 distance로 거리를 측정한다.
MF1/2에서는 훌륭한 성적을 거두었다.
학습은 CASIA-WebFace(0.49M)짜리와 여러 face dataset에서 믹스해서 5M짜리를 만들어서 썼다고 한다.
네트웍은 SphereFace와의 비교를 위해 유사한 64 conv. layer짜리 / residual layer가 있는 것으로 썼고 정확히 어떤 구조인지는 밝히지 않았다.
전처리로는 sphereface처럼 MTCNN 을 사용해서 face cut을 수행했다고 한다.
'논문읽기' 카테고리의 다른 글
Pose estimation 정리 링크 (0) | 2019.10.22 |
---|---|
GAN link 모음 (0) | 2019.09.28 |
[CVPR16]Thin-Slicing for Pose: Learning to Understand Pose without Explicit Pose Estimation (0) | 2019.09.27 |
Pose Embedding: A Deep Architecture for Learning to Match Human Poses (0) | 2019.09.26 |
[CVPR17]Realtime Multi-Person 2D Pose Estimation using PAF (0) | 2018.08.20 |