├── README.md
├── images
├── images.md
├── img_0_0.PNG
├── img_0_1.png
├── img_0_2.png
├── img_0_3.png
├── img_0_4.png
├── img_0_5.png
├── img_0_6.png
├── img_0_7.png
├── img_0_8.png
├── img_0_9.png
├── progress.png
├── pwc_fi.png
└── pwc_fv.png
├── mds
└── survey.md
└── papers
└── Deep_Face_Recognition_A_Survey.md
/README.md:
--------------------------------------------------------------------------------
1 | # face-recognition
2 | _ Face Verification과 Identification을 모두 아우르는 얼굴 인식 기술에 대한 기술 동향_
3 |
4 | 
5 | > ref: Mei Wang and Weihong Deng, "Deep Face Recognition: A Survey," 2018
6 |
7 | ## Contents
8 | - [Survey](mds/survey.md)
9 | - [논문 리뷰](#논문-리뷰)
10 | - [Mei Wang and Weihong Deng, "Deep Face Recognition: A Survey," CoRR, 2018](papers/Deep_Face_Recognition_A_Survey.md)
11 | - [Pre-trained Model](#pre-trained-model)
12 | - [Source Code](#code)
13 | - [Dataset](#dataset)
14 | - [Links](#links)
15 |
16 |
17 | ## 논문 리뷰
18 | - [Mei Wang and Weihong Deng, "Deep Face Recognition: A Survey," 2018](papers/Deep_Face_Recognition_A_Survey.md)
19 |
20 | ## Pre-Trained Model
21 | - Tensorflow
22 | - [Inception ResNet v1(CASIA-WebFace)](https://github.com/davidsandberg/facenet)
23 | - [Inception ResNet v1(VGGFace2)](https://github.com/davidsandberg/facenet)
24 | Keras
25 | - [krasserm's openFace](http://krasserm.github.io/2018/02/07/deep-face-recognition/)
26 | - [iwantooxxoox' openFace](https://github.com/iwantooxxoox/Keras-OpenFace)
27 | - [oxford's VGGface](https://github.com/rcmalli/keras-vggface)
28 |
29 | ## Code
30 | - Keras
31 | - [krasserm's openFace](http://krasserm.github.io/2018/02/07/deep-face-recognition/)
32 | - [iwantooxxoox's openFace](https://github.com/iwantooxxoox/Keras-OpenFace)
33 |
34 | ## Dataset
35 | - [InsightFace Git의 Dataset Zoo](https://github.com/deepinsight/insightface/wiki/Dataset-Zoo) - 잘 정리되어있음
36 | - CASIA-Webface, UMDFace, VGG2, MS1M-IBUG, MS1M-ArcFace, Asian-Celeb, DeepGlint
37 | - [The Asian Face Age Dataset (AFAD)](http://afad-dataset.github.io/)
38 | - [Trillionpairs](http://trillionpairs.deepglint.com/overview)
39 | - [google drive](https://drive.google.com/drive/folders/1ADcZugpo8Z6o5q1p2tIAibwhsL8DcVwH)
40 |
41 | ## Links
42 | - [딥러닝을 이용한 셀럽 얼굴 인식 by kakao](https://mk.kakaocdn.net/dn/if-kakao/conf2018/deep_face_recognition.pdf)
43 | - 얼굴 인식에 관한 facebook 글(http://fbsight.com/t/topic/148992)
44 |
45 | ## Face Recognition 서베이
46 |
47 | 
48 | > ref: https://paperswithcode.com/
49 |
50 | 
51 | > ref: https://paperswithcode.com/
52 |
53 | 2014 CVPR에서 대표적인 두 모델(DeepFace, DeepID)이 소개되면서 딥러닝 기법으로 활발히 연구가 시작된, 얼굴 인식 분야에 대해 최근 5년간의 동향을 다루고자 합니다.
54 |
55 | 1. DeepFace (CVPR/2014)
56 | - Training Set: 4.4M
57 | - CNN Layers
58 | - LFW 97.35%
59 | - 3D Alignment
60 | - Ensembel Model
61 | - Softmax
62 | - ref:
63 | 2. DeepID (CVPR/2014)
64 | - Training Set: 20W
65 | - CNN Layers
66 | - Softmax, Bayseian
67 | - LWF 97.45%
68 | - Softmax의 장점과 단점
69 | - Softmax는, Soft를 최대값으로 하는 것이 목표인 분류기입니다. CNN 분류 문제에서 매우 핫한 존재죠. 4가지를 분류한다고 가정하면, (x1, x2, x3, x4)의 값이 softmax 분류기에 의해 출력됩니다. 이것은 일반적으로 백분율 형태로 계산되고, 가장 큰 출력 값이 예상하는 값/결과가 됩니다.
70 | - Hard max vs Softmax
71 | - fig1~3
72 | - ref: [Deep Learning Face Representation by Joint Identification-Verification](https://papers.nips.cc/paper/5416-deep-learning-face-representation-by-joint-identification-verification)
73 | - fig4
74 | 3. FaceNet (CVPR/2015)
75 | - Softmax 대신 Triple Loss 사용
76 | - Triplet loss는 (a, p, n)의 triple 형태로 최적화합니다. 서로 다른(negative)의 특징의 L2거리가 유사한(positive) 특징의 L2 거리보다 크고, 클래스 간 간소화 및 클래스간 분리가 수행됨.
77 | - a: anchor
78 | - p: positive
79 | - n: negative
80 | - LFW: 99.64%
81 | - Training Set: 200M
82 | - use only 128 dim feature mapping
83 | - traiplet을 구현하는 코드는 매우 까다롭고 어려움
84 | - [paper](https://arxiv.org/pdf/1503.03832.pdf)
85 | - [개념](https://kangbk0120.github.io/articles/2018-01/face-net)
86 | - [triplet-loss](https://omoindrot.github.io/triplet-loss)
87 |
88 | 4. Large Margin Softmax Loss (ICML/2016)
89 | - L-softmax는 Large Margin을 가진 softmax이다.
90 | - 큰 마진을 만드는 방법
91 | = United Fully Conntected Layer + Softmax + Cross Entropy
92 | - Training Set: 0.49M
93 | - 17 CNN Layers
94 | - LFW: 98.72%
95 | 5. sphereFace (CVPR/2017)
96 | - L-softmax를 개선하여 A-Softmax 제안
97 | - training sample 불균형의 수가 감소
98 | - mapping된 feature vector 각도의 최적화에 집중
99 | - Training Set: 0.49M
100 | - 64 CNN Layers
101 | - LFW: 99.42%
102 | - (현재 additive margin 시리즈를 훈련하는 것이 간단하고 성능도 더 좋음)
103 | 6. Center Loss (ECCV/2016)
104 | - 카테고리에 대응하는 모든 feature vector에 대해 각 카테고리의 중심을 중앙으로 당김.
105 | - LFW(w/7 CNN Layers): 99.05
106 | - LFW(w/64 CNN Layers): 99.28
107 | - 다수의 클래스 센터를 유지하려면 메모리 소비가 비교적 큼.
108 | 7. Center Invariant Loss (ACM MM/2017)
109 | 8. Range Loss (ICCV/2017)
110 | 9. Ring Loss (CVPR/2018)
111 | 10. COCO | Congenerous Cosin (CVPR/2017)
112 | 11. L2-constrained Softmax Loss (Arxiv/2017)
113 | 12. NormFace (ACM MM/2017)
114 | - L2 HyperSphere Embedding
115 | 13. AM-softmax (ICLR/2018)
116 | - Additive Margin Softmax
117 | 14. CosFace (CVPR/2018)
118 | 15. ArcFace (arXiv)
119 | - ref: https://arxiv.org/abs/1801.07698
120 | - code(MXNET): https://github.com/deepinsight/insightface
121 | 16. InsightFace ()
122 | - code(tensorflow): https://github.com/auroua/InsightFace_TF
123 |
--------------------------------------------------------------------------------
/images/images.md:
--------------------------------------------------------------------------------
1 | img_x_y.PNG
2 | : x-th paper, y-th image
3 |
--------------------------------------------------------------------------------
/images/img_0_0.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seriousran/face-recognition/50d510feb105ce5a97ad76714a460b32364547f9/images/img_0_0.PNG
--------------------------------------------------------------------------------
/images/img_0_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seriousran/face-recognition/50d510feb105ce5a97ad76714a460b32364547f9/images/img_0_1.png
--------------------------------------------------------------------------------
/images/img_0_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seriousran/face-recognition/50d510feb105ce5a97ad76714a460b32364547f9/images/img_0_2.png
--------------------------------------------------------------------------------
/images/img_0_3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seriousran/face-recognition/50d510feb105ce5a97ad76714a460b32364547f9/images/img_0_3.png
--------------------------------------------------------------------------------
/images/img_0_4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seriousran/face-recognition/50d510feb105ce5a97ad76714a460b32364547f9/images/img_0_4.png
--------------------------------------------------------------------------------
/images/img_0_5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seriousran/face-recognition/50d510feb105ce5a97ad76714a460b32364547f9/images/img_0_5.png
--------------------------------------------------------------------------------
/images/img_0_6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seriousran/face-recognition/50d510feb105ce5a97ad76714a460b32364547f9/images/img_0_6.png
--------------------------------------------------------------------------------
/images/img_0_7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seriousran/face-recognition/50d510feb105ce5a97ad76714a460b32364547f9/images/img_0_7.png
--------------------------------------------------------------------------------
/images/img_0_8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seriousran/face-recognition/50d510feb105ce5a97ad76714a460b32364547f9/images/img_0_8.png
--------------------------------------------------------------------------------
/images/img_0_9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seriousran/face-recognition/50d510feb105ce5a97ad76714a460b32364547f9/images/img_0_9.png
--------------------------------------------------------------------------------
/images/progress.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seriousran/face-recognition/50d510feb105ce5a97ad76714a460b32364547f9/images/progress.png
--------------------------------------------------------------------------------
/images/pwc_fi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seriousran/face-recognition/50d510feb105ce5a97ad76714a460b32364547f9/images/pwc_fi.png
--------------------------------------------------------------------------------
/images/pwc_fv.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/seriousran/face-recognition/50d510feb105ce5a97ad76714a460b32364547f9/images/pwc_fv.png
--------------------------------------------------------------------------------
/mds/survey.md:
--------------------------------------------------------------------------------
1 | ## Face Recognition 서베이
2 |
3 | 
4 | > ref: https://paperswithcode.com/
5 |
6 | 
7 | > ref: https://paperswithcode.com/
8 |
9 | 2014 CVPR에서 대표적인 두 모델(DeepFace, DeepID)이 소개되면서 딥러닝 기법으로 활발히 연구가 시작된, 얼굴 인식 분야에 대해 최근 5년간의 동향을 다루고자 합니다.
10 |
11 | 1. DeepFace (CVPR/2014)
12 | - Training Set: 4.4M
13 | - CNN Layers
14 | - LFW 97.35%
15 | - 3D Alignment
16 | - Ensembel Model
17 | - Softmax
18 | - ref:
19 | 2. DeepID (CVPR/2014)
20 | - Training Set: 20W
21 | - CNN Layers
22 | - Softmax, Bayseian
23 | - LWF 97.45%
24 | - Softmax의 장점과 단점
25 | - Softmax는, Soft를 최대값으로 하는 것이 목표인 분류기입니다. CNN 분류 문제에서 매우 핫한 존재죠. 4가지를 분류한다고 가정하면, (x1, x2, x3, x4)의 값이 softmax 분류기에 의해 출력됩니다. 이것은 일반적으로 백분율 형태로 계산되고, 가장 큰 출력 값이 예상하는 값/결과가 됩니다.
26 | - Hard max vs Softmax
27 | - fig1~3
28 | - ref: [Deep Learning Face Representation by Joint Identification-Verification](https://papers.nips.cc/paper/5416-deep-learning-face-representation-by-joint-identification-verification)
29 | - fig4
30 | 3. FaceNet (CVPR/2015)
31 | - Softmax 대신 Triple Loss 사용
32 | - Triplet loss는 (a, p, n)의 triple 형태로 최적화합니다. 서로 다른(negative)의 특징의 L2거리가 유사한(positive) 특징의 L2 거리보다 크고, 클래스 간 간소화 및 클래스간 분리가 수행됨.
33 | - a: anchor
34 | - p: positive
35 | - n: negative
36 | - LFW: 99.64%
37 | - Training Set: 200M
38 | - use only 128 dim feature mapping
39 | - traiplet을 구현하는 코드는 매우 까다롭고 어려움
40 | - [paper](https://arxiv.org/pdf/1503.03832.pdf)
41 | - [개념](https://kangbk0120.github.io/articles/2018-01/face-net)
42 | - [triplet-loss](https://omoindrot.github.io/triplet-loss)
43 |
44 | 4. Large Margin Softmax Loss (ICML/2016)
45 | - L-softmax는 Large Margin을 가진 softmax이다.
46 | - 큰 마진을 만드는 방법
47 | = United Fully Conntected Layer + Softmax + Cross Entropy
48 | - Training Set: 0.49M
49 | - 17 CNN Layers
50 | - LFW: 98.72%
51 | 5. sphereFace (CVPR/2017)
52 | - L-softmax를 개선하여 A-Softmax 제안
53 | - training sample 불균형의 수가 감소
54 | - mapping된 feature vector 각도의 최적화에 집중
55 | - Training Set: 0.49M
56 | - 64 CNN Layers
57 | - LFW: 99.42%
58 | - (현재 additive margin 시리즈를 훈련하는 것이 간단하고 성능도 더 좋음)
59 | 6. Center Loss (ECCV/2016)
60 | - 카테고리에 대응하는 모든 feature vector에 대해 각 카테고리의 중심을 중앙으로 당김.
61 | - LFW(w/7 CNN Layers): 99.05
62 | - LFW(w/64 CNN Layers): 99.28
63 | - 다수의 클래스 센터를 유지하려면 메모리 소비가 비교적 큼.
64 | 7. Center Invariant Loss (ACM MM/2017)
65 | 8. Range Loss (ICCV/2017)
66 | 9. Ring Loss (CVPR/2018)
67 | 10. COCO | Congenerous Cosin (CVPR/2017)
68 | 11. L2-constrained Softmax Loss (Arxiv/2017)
69 | 12. NormFace (ACM MM/2017)
70 | - L2 HyperSphere Embedding
71 | 13. AM-softmax (ICLR/2018)
72 | - Additive Margin Softmax
73 | 14. CosFace (CVPR/2018)
74 | 15. ArcFace (arXiv)
75 | - ref: https://arxiv.org/abs/1801.07698
76 | - code(MXNET): https://github.com/deepinsight/insightface
77 | 16. InsightFace ()
78 | - code(tensorflow): https://github.com/auroua/InsightFace_TF
79 |
--------------------------------------------------------------------------------
/papers/Deep_Face_Recognition_A_Survey.md:
--------------------------------------------------------------------------------
1 | # Deep Face Recognition A survey 논문 리뷰
2 |
3 | ```BibTex
4 | @article{Wang2018DeepFR,
5 | title={Deep Face Recognition: A Survey},
6 | author={Mei Wang and Weihong Deng},
7 | journal={CoRR},
8 | year={2018},
9 | volume={abs/1804.06655}
10 | }
11 | ```
12 |
13 | ### Abstract | 초록
14 | 딥러닝은 다중 처리 레이어(multiple layers)를 적용하여 다중 레벨 특징 추출(multiple levels of feature extraction)을 사용한 데이터 표현을 학습합니다.
15 | 이 떠오르는 기술은 Deepface와 DeepID를 통해 얼굴 인식(Face Recognition) 연구를 재구성하였습니다. 그 이후로 얼굴 인식에서 엄청난 성능을 보입니다!
16 | 본 논문에서는 알고리즘, 데이터, 장면에 대한 광범위한 주제를 다루는 딥러닝을 이용한 얼굴인식에서 최근에 이루어진 진언에 대한 포괄적인 개관(survey)을 제공합니다.
17 | 1. 다양한 네트워크 아키텍쳐와 손실 함수(loss functions)들을 요악하고,
18 | 2. 두 개의 분류로 나눠지는 관련된 얼굴 처리 방법들,
19 | - one-to-many augmentation (일대다 증가/증강)
20 | - many-to-one normalization (다대일 표준화)
21 | 3. 딥러닝을 이용한 얼굴인식 분야에서의 여러가지 잡다한 리뷰
22 | - cross-factor, heterogenous, multiple-media, and industry scenes
23 | 4. 현재 방법들의 잠재적인 결함과 몇몇 조명받을 미래 방향들
24 |
25 | ## 1. Introduction
26 | 여기저기 많이 쓰인다는 이야기...
27 | **1990년대 초**에 historical Eigenface(고유 얼굴) approach가 소개되면서 얼굴 인식 연구는 대중적이 되었습니다[164].
28 | >~~대학원 입학했을 때, PCA와 함께 열심히 과제로 고생하던 기억이...~~
29 | feature-based(특징점 기반) 얼굴인식의 마일스톤은 그림.1에 잘 표현되어있습니다.
30 |
31 | [](#)
32 |
33 | >~~그림이 작아서 잘 안보일 수도 있으니 주의. 반 자르려 했으나 자료가 수평적인 연결성이 있어서....(핑계)~~
34 | 성능평가는 LFW dataset을 기준으로 Egienface(60%), Gabor/LBP(70%), LE(82%), 그리고 Deepface(97%) 순으로 성능이 향상되는 것을 보여줍니다.
35 | >현재는, 99.에서 소수점 단위로 향상되는, 혹은 시각화된 정보로서 잘 클러스터 된 것을 보여주는 방식으로 발전하는 중입니다.
36 |
37 | **1990년대와 2000년대 사이** 총체주의적 접근방법(holistic approaches)은 특정한 분포 가정을 통한 low-dimensional 표현을 이끌어냈습니다. 여기서 low-dimensional 표현은 linear subspace나 manifold, 그리고 sparse representation과 같은 것을 말합니다.
38 | >1. linear subspace[13][118][44]는 [성윤님의 블로그](https://hwauni.tistory.com/entry/Linear-subspaces)를 참고
39 | >2. manifold[70][199][43]: 다양체 학습
40 | >> [](#)
41 | >>똑같지만 독특한 얼굴들의 다양성을 나타내는 사진입니다. 얼굴은 무작위로 manifold로 샘플링됩니다. 매개변수 벡터를 선형으로 스케일링(늘리고/줄이고)하면, distinctiveness(고유성/차별성)는 달라지지만, ID(그 사람이 누구인지)는 여전히 고정됩니다. 샘플을 manifold상에서 이동시키면 distinctiveness가 고정된 상태에서 ID가 달라집니다.
42 | >>ref: [Manifold-based constraints for operations in face space](https://www.semanticscholar.org/paper/Manifold-based-constraints-for-operations-in-face-Patel-Smith/531ed96d7eb85397123e9ab96e0866a986a96ff5)
43 | >>about distintiveness: [What's distinctive about a distinctive face?](https://www.ncbi.nlm.nih.gov/pubmed/8177958)
44 | >3. sparse representation[184][221][40][42]: sparse한 표현 덕분에 전체의 일부분만으로도 얼굴을 인식할 수 있음.(ex:가려진 얼굴에 성능 좋음)
45 |
46 | **2000년대 초**에 통제되지않은 얼굴의 변화 문제는 local feature-based 얼굴인식을 통해 해결되었습니다.
47 | >사실 이건 얼굴 인식 뿐만 아니라, 모든 영상처리 분야에서 혁명을 불러왔죠.
48 | Gabor와 LBP는 multi-level과 high-dimensional extensions 뿐만 아니라, local filterning의 몇 불변 속성을 통해 견고한 성능을 달성했습니다. 하지만, 불행히도 직접 서술한 특징들은 distinctiveness와 compactness의 부족으로 어려움을 겪었습니다.
49 |
50 | **2010년대 초**, 학습 기반의 local descriptor(기술자/서술자)가 얼굴인식 커뮤니티에 도입되었는데, local filter가 더 나은 distinctiveness를 위해 학습되고, encoding codebook은 보다 더 compact한 것으로 학습됩니다.
51 | >local feature descriptor는 [다크프로그래머 - 영상 특징점 추출방법의 7](https://darkpgmr.tistory.com/131)을 참고
52 | >encoding codebook은 [다크프로그래머 - Bag of Words 기법](https://darkpgmr.tistory.com/125)을 참고
53 | >참고로 다크프로그래머님의 블로그를 모른다면, 영상처리를 공부한 적이 없는 것이나 마찬가지.
54 |
55 | 얼굴 인식 문제를 해결하기 위해서 시도되었던 예전의 방법들은 일반적으로 한개 혹은 두개의 layer representation을 사용하였습니다. 예를들어, filtering responses나 hostogram of the feature codes가 그러한 것들입니다. 연구자들은 preprocessing, local descriptors, 그리고 feature transformation을 개별적으로 향상시켜 얼굴인식의 정확도를 천천히 끌어올렸습니다. 계속적으로 발전해왔지만, 이러한 "shallow" methods는 LFW 벤치마크 성능을 95%까지밖에 향상시키지 못했습니다. 그래서 이러한 결과는 "shallow" methods가 안정적인 identity feature를 추줄하기에 불충분하다는 것을 나타냅니다. 그런데, **2012년**에 모든 것이 변했습니다. AlexNet이 ImageNet에서 우승을하며, 딥러닝이라는 methods가 존재감을 나타냅니다. 딥러닝은 feature extraction and transformation을 위해 cascade of multiple layers of processing units를 사용합니다. 딥러닝은 다른 수준의 추상(abstraction)에 대응하는 multple levels of representations를 학습합니다. 이러한 개념의 계층구조로부터 오는 levels는 얼굴 pose, 조명, 감정 변화에 강한 불변성을 띕니다. (아래의 그림 참고)
56 |
57 | [](#)
58 |
59 | 위 그림에서 보았을 때, 깊은 인공신경망에서 왼쪽에서부터 가장 첫 레이어는 Gabor feature와 비슷하게 나타납니다. 이전에 과학자들이 수년에 걸친 실험을 통해 찾아낸 것이었죠. 두번째 레이어는 좀 더 복잡한 texture features를 학습합니다. 세번째 레이어의 features는 더 복잡하고, 구조로서는 좀 단순한 구조들이 나타나기 시작합니다. 예를들어 high-bridged nose나 big eyes 같이요. 마지막 네번째 레이어에서는, 신경망의 출력이 특정한 얼굴의 속성을 충분히 나타내고 있습니다. 예를들어, 웃음, 소리 짖음, 심지어 파란 눈까지도요.
60 |
61 | **2014년에** DeepFace가 LFW 벤치마크의 state-of-the-art 정확도를 달성합니다. human performance에 접근하는 정도로 말이죠. `DeepFace: 97.35% vs. Human:97.53%` 이때 이후로, 얼굴 인식분야의 연구는 딥러닝 기반의 접근방법으로 모두 옮겨집니다. 그리고 그 정확도는 99.70%까지 드라마틱하게 올라갑니다. 단지 3년만에요. 딥러닝 기술은 얼굴 인식 연구분야를 완전히 뒤바꿔놉니다. 알고리즘, 데이터셋, 심지어 평가 프로토콜까도요.
62 |
63 | ### 논문에서 말하는 이 논문의 주요 contributions
64 | 1. 딥러닝을 이용한 얼굴인식에 대한 네트워크 아키텍처 및 손실 함수들의 발전에 대한 체계적인(분류법의) 리뷰
65 | - 다양한 손실 함수들을 유클리드거리 기반 손실, 코사인 마진 기반 손실, 소프트 맥스 손실 및 그 변형에 대해 연구
66 | - Deepface, DeepID 시리즈, VGGFace, FaceNet, VGGFafce 2, 그리고 다른 주류 네트워크 아키텍처
67 | 2. 포즈 변화에 따른 인식 난이도를 다루는 것과 같이 우리는 얼굴 처리 방법을 "one-to-many augmentation"과 "many-to-one normalization"의 두 클래스로 분류하고, 어떻게 GAN이 연구 분야를 촉진하는 지를 논의합니다.
68 | 3. 얼굴인식에 매우 중요한 활용 가능한 공공의 대규모 학습 데이터셋에 대한 비교 및 분석
69 | - LFW, IJB-A/B/C, Megaface, MS-Celeb-1M
70 | - 위 데이터셋들은 4가지 측면에서 리뷰하고 비교되었습니다.
71 | 1. 학습 방법론
72 | 2. 평가 작업
73 | 3. 측정 항목
74 | 4. 인식 장면
75 | 4. 일반적인 작업 외의 12개의 challenging 얼굴인식 scenes
76 | - ex) antispoofing, cross-pose 얼굴 인식, cross-age 얼굴 인식
77 | - 이러한 미해결 문제에 대해 특별히 고안된 방법을 검토함으로써 향후 얼굴인식에 대한 연구에서 중ㅇ요한 issue들을 밝힙니다.
78 |
79 | ### 이 논문의 구성
80 | - Section 2: 몇가지 배경지식과 용어, 각 구성 요소 소개
81 | - Section 3: 다른 네트워크 아키텍쳐와 손실함수
82 | - Section 4: 얼굴을 처리하는 알고리즘과 데이터셋 요약
83 | - Section 5: 다른 측면에서의 딥러닝을 이용한 몇가지 얼굴인식 방법을 간략하게 소개
84 |
85 |
86 | ## 2. Overview
87 | ### A. Background Concepts and Terminology
88 | #### [130]에서 언급된 대로, 얼굴인식의 전체 시스템에 필요한 모듈은 아래 그림과 같이 3개가 있습니다.
89 |
90 | [](#)
91 |
92 | 1. Face Detection (includes Localization)
93 | 먼저 face detector를 사용하여 이미지 혹은 비디오의 얼굴을 localize합니다.
94 | > 여기서의 localize는 어디인지 위치를 찾는 것입니다. 보통 이러한 위치는, 사각형으로 표현되며 시작점(x, y), 끝점(x, y)이나, 시작점(x, y), 크기(w, h)으로 표현됩니다. 픽셀 데이터에 접근할 때에는, 이것은 row인지 col인지, 대응하는 x, y값을 잘 설정하였는지 꼭 확인하여야 합니다. 또한, 이러한 사각 영역을 관심 영역이라고도 부르며, 영어로는 Region Of Interest(ROI)라고 합니다.
95 | 2. Facial Landmark Detection & Align
96 | 얼굴의 랜드마크(눈, 코, 입과 같은 것)을 검출하고, 정규화된(normalized) 표준 좌표로 정렬합니다.
97 | > Facial Landmark: 입, 오른쪽 눈썹, 왼쪽 눈썹, 오른쪽 눈, 왼쪽 눈, 코, 턱이 가장 일반적인 landmark입니다. 하지만 이것을 표현하기 위한 방법은 다양합니다. 일반적으로는 dlib가 제공하는 68개의 점으로 이루어진 landmark를 많이 사용합니다.
98 | > [](#)
99 | > Align Face: 얼굴을 정렬하는 방법은 다양한 방법이 존재합니다. 가장 간단하게는 양쪽 눈과, 코, 입의 양 끝을 기준으로 5개의 위치를 지정해두고 모든 얼굴을 그에 맞춥니다. 그러면, 지정된 위치에 그 5개가 존재하기 때문에, 그것을 통해 학습을 하면 비교적 동일한 조건에서 학습 데이터를 가지고 학습을 할 수 있기 때문입니다. 위치적인 align 뿐만 아니라, 값도 normalize 하기 위해 평균 값을 빼거나 하는 방법을 사용하기도 합니다. 정확한 face alignment는 2D의 정보만으로는 어렵지만, 얼굴 인식을 위한 pre-processing으로 사용할 때에는 일반적으로 엄청나게 정교한 과정으로 align하지는 않습니다.
100 | 3. 얼굴 인식 모듈은 이러한 정렬된(aligned) 이미지로 구현됩니다.
101 |
102 | #### 얼굴 인식의 분류
103 | - Face Identification(얼굴 신원 인식): 얼굴 인식은 일대 다 유사성을 계산하여 관찰한 얼굴의 특정 신원을 결정합니다.
104 | - Face Verification(얼굴 검증): 얼굴 검증(Face Verification)은 갤러리와 관찰한 얼굴 사이의 일대일 유사도를 계산하여, 두 이미지가 같은 대상인지 여부를 확인합니다.
105 |
106 | 두 시나리오 모두 알려진 subjects 셋은 처음에는 시스템(갤러리)에 등록되고 테스트하는 동안 새로운 subject(probe)가 제공됩니다.
107 |
108 | - Closed-set Identification: 관측하는 얼굴이 갤러리에 있는 어떤 id로 나타나는 경우
109 | - Open-set Identification: 관측하는 얼굴이 갤러리에 없는 사람인 경우
110 |
111 | ### B. Components of Face Recognition
112 |
113 | 얼굴 이미지가 얼굴인식 모듈에 입력되기 전에, face antispoofing을 합니다. Face antispoofing은 얼굴이 live인지 spoofed인지를 인식하고, 다양한 유형의 공격을 피할 수 있습니다.
114 | > 여기서 spoofing은 얼굴을 속이는 것을 말합니다. 지문인식이나 홍채인식처럼 ID로서 얼굴을 사용할 때, 이것을 공격하는(해킹하는) 것으로 생각하시면 됩니다. 즉, 등록된 얼굴을 가진 사람이 아니더라도, 프린트된 사진과 같은 것을 통해 잠금장치를 푸는 것이죠.
115 | 이 논문의 저자는 이것을 얼굴인식의 한 scene으로 취급하고, section VI-D3에서 다룹니다.
116 | 이렇게 face antispoofing을 하고 나면, 본격적인 인식을 수행할 수 있습니다. 얼굴인식 모듈은 위에서 소개된 것 처럼, face processing, deep feature extraction 그리고 face matching으로 구성됩니다. 이것을 수식으로 표현하면 다음과 같습니다.
117 |
118 |