얼굴 인증(verification): 상대적으로 더 쉬운 1 : 1 매칭 문제
얼굴 인식(recognition): 더 어려운 1 : K 매칭 문제
: 이미 학습이 완료되어 output 도출이 가능한 모델
ex. 개와 고양이를 구분하는 모델
: pretrained model을 새로운 데이터셋 (x,y)로 다시 학습시킴
ex. 위의 개-고양이 구분 모델을 표혐-호랑이 구분 모델로 새로 학습

: 마지막 output layer를 삭제하고 다른 layer(들)를 붙여서 다시 훈련시킨다.
ex. 표범-호랑이가 아니라 모든 포유류를 분류하고 싶을 때.

CNN 모델의 성능을 높이고 overfitting을 극복하려면, 다양한 유형의 학습 이미지 데이터셋을 늘려야 한다. 하지만 이미지 데이터의 경우 학습 데이터 양을 늘리기 쉽지 않다. 이 때 Augmentation을 통해, 학습 시 원본 이미지에 다양한 변형을 가해 데이터를 늘리는 효과를 발휘한다.
(원본 이미지의 수를 늘린다? -(X) / 학습마다 개별 이미지를 변형한다? - (O)
| 공간 레벨 변형 (Spatial) | 픽셀 레벨 변형 (Pixel) |
|---|---|
| Flip(대칭): vertical, horizontal Crop: Center, Random Affine: Rotate, Translate(이동), Shear(밀림), Scale(크기) | Bright, Saturation, Hue, GrayScale, ColorJitter 등 |
ex. center crop: 중앙을 기준으로 확대
Albumentation: image augmentation 전용 패키지

출처: Albumentations
: 수동 피처 엔지니어링 (manual feature engineering)이나 중간 처리 단계 없이 입력 데이터에서 출력 데이터로 직접 작업을 수행하는 방법을 학습하는 일종의 머신러닝 모델.

ex. MFCC로 음성 파일 특징 추출, 음소 추출 등을 거치지 않고 E2E 모델을 통해 음성 파일에서 바로 출력을 구함.
논문: https://kpzhang93.github.io/MTCNN_face_detection_alignment/index.html

MTCNN을 Face Detection 모델로 사용 -> FaceNet을 통해 얼굴 영역을 임베딩 벡터로 변환 -> 선형 SVM 모델로 임베딩 벡터 분류 -> flask API로 새로운 데이터에 대한 예측
분류에 사용되는 지도학습 머신러닝 모델

서포트 벡터: 클래스 사이 경계에 가깝게 위치한 데이터 포인트. 이 최외각의 벡터들을 기준으로 Margin을 구한다.
ex. 두 카테고리에 각각 해당되는 Data set들 (-가 모인 곳/+가 모인 곳)의 최외각 샘플들
Margin: 서포트 벡터를 통해 구한 두 카테고리 간의 거리
목표: **가중치 벡터 w와 직교**하면서, **margin이 최대**가 되는 선형 찾기

batch size:
얼굴 이미지의 인코딩을 학습하기 위해 신경망을 훈련시키는 데 효과적인 손실 함수
end-to-end 학습을 위하여 사용 (classifier를 학습시키는 것이 아니라, 최종 output인 128차원의 임베딩 벡터를 직접 학습시킴)
한 쌍: anchor(기준), positive(동일 인물 사진), negative(다른 인물 사진)
anchor - positive 거리는 가깝게, anchor - negative 거리는 멀게 학습


FaceNet: Triplet Loss 학습을 통해 이미지(input)로부터 임베딩 벡터(output)을 직접적으로 생성해내는 End-to-End 모델