[Coursera] 32강~36강+ 관련 자료 조사(논문, 기술동향)

tobigs1415 이미지 세미나·2021년 5월 12일
5

Tobigs1415 Image Semina

목록 보기
3/16
post-thumbnail

투빅스 14기 민거홍

Face Recognition

Face Recognition이란?

Face Recognition과 Face Verification의 차이

Face Recognition과 Face Verification: “정교함(accuracy)” 의 차이

Confounding Factors들의 해결방법

Few-shot Learning

Few-shot Learning이란?

그렇다면, One-shot Learning은?

그래서 Similarity Function을 활용합니다.

이론 (Siamese Network & Triplet Loss)

Siamese Network (샴 네트워크) 란?

Siamese Network (샴 네트워크) 상세 (1)

Siamese Network (샴 네트워크) 상세 (2)

Triplet Loss란? (1)

Triplet Loss란? (2)

Triplet Loss input 선택 방법?

최근 연구 동향 (Few-shot learning, COVID19)

Matching networks for one-shot learning

Prototypical networks for few-shot learning

그래프 신경망 (GNN) 기반

COVID19 마스크 연구

profile
2021 투빅스 14, 15기 이미지 세미나입니다😀

4개의 댓글

투빅스 14기 김민경

Face Recognition

  • 얼굴 검증(Face Verification)은 input으로 이미지 + ID가 주어지고 output으로 이미지와 ID가 상응하는지 확인하는 1:1 문제이다.
  • 얼굴 인식 (Face Recognition)은 input으로 이미지가 주어졌을 때 기존의 DB랑 비교하는 task로, 1:K 문제이다.
    -> 보통 One-shot Learning Problem을 해결해야 됨
  • 따라서 얼굴 인식 (Face Recognition)은 얼굴 검증(Face Verification)보다 어려운 task이다.

One-shot Learning

  • 기존의 CNN-Softmax 방식으로는 Face Recognition이 힘들다.
    (1) training dataset이 너무 작음
    (2) 기존의 모델에 새로운 사람이 들어오면 retrain해야 되는데 자원 소모가 심함
  • 그래서 Similarity Function을 학습시키는 방법이 있다.
  • Similarity Function : d(img1,img2)d(img1,img2) = 두 이미지의 차이 반환
    -> 즉, 2개의 이미지 입력을 받아 그 차이 정도를 반환한다.
  • Siamese Network는 Similarity Function인 dd의 input으로 넣기 위한 representation을 만드는 함수를 학습시키는 Network이다.
    -> 두 이미지의 embedding의 차이를 비교하는 것이 핵심이기 때문에 ConvNet을 학습하기 위해 많은 데이터가 필요하지 않기 때문
  • Siamese Network에서는 서로 다른 두 이미지를 비교하기 위해 중간까지 나오는 특징 데이터를 비교한다. 즉, 연산의 중간에 나오는 특징 벡터를 사용한다.
  • 얼굴 이미지에 대한 좋은 인코딩을 얻기 위해 신경망의 파라미터들을 훈련시키는 방법 중 하나는 Triplet Loss Function에 경사 하강법을 정의하고 적용하는 것이다.

Siamese Network 훈련 방법 1 : Triplet Loss Function

  • 하나의 앵커 이미지를 기준으로, 같은 사람인 것을 뜻하는 “긍정 이미지”와 다른 사람인 “부정 이미지” 의 거리를 구한다. 즉, 한번에 3개의 이미지를 동시에 본다.
  • 실제로 training dataset을 만들 때는 학습하기 어려운 Triplet을 골라야 한다.
    -> 그렇게 해서 경사 하강법이 이 값들을 서로 멀리 떨어뜨리려는 일을 하게 하는 것

Siamese Network 훈련 방법 2 : Logistic Regression

  • Triplet Loss말고도 파라미터를 훈련시키는 방법 중 이진 분류 방법도 있다.
  • Siamese Network로 임베딩들을 계산하게 한 다음, 인코딩들의 차이를 Logistic Regression Classification하는 것이다.

최근 연구 동향 (Few-shot learning, COVID19)

  • Prototypical networks for few-shot learning
    : 범주별 support data의 평균 위치인 prototype이라는 개념 도입
  • 그래프 신경망 (GNN) 기반
    : input으로 벡터나 행렬 형태가 아니라 dense graph 구조를 활용한다.

Siamese Network를 이용한 Face Recognition의 훈련 과정을 자세하게 설명해주셔서 매우 도움이 되었습니다. 그리고 최근 연구 동향 등을 알 수 있어 흥미로운 시간이었습니다. 감사합니다:)

답글 달기
comment-user-thumbnail
2021년 5월 12일

투빅스 14기 김상현
이번 강의는 Coursera Convolutional Neural Networks 32~36강 리뷰와 관련 논문 및 기술 동향에 대한 강의로 민거홍님께서 진행해주셨습니다.

  • Face Verification은 1:1문제로 input으로 (이미지, 이름/ID)를 사용하고 output으로 이미지가 이름/ID와 상응하는지를 확인하는 문제이고, Face Recognition은 1:K 문제로 입력으로 이미지를 사용하면 해당 이미지가 database에 상응하는 ID 또는 database에 존재하지 않는지를 출력해야 하는 문제이다. Recognition이 더 구현하기 어려운 문제이다.
  • Face regocnition은 보통 one or few shot learning이고 이런 경우 CNN-softmax 방식으로는 Recognition이 어렵다. 이를 해결하기 위해 similarity function을 사용한다.
  • Siamese Network는 가중치를 공유하는 CNN 구조로 각각의 이미지 쌍에 대해 각각의 인코딩 벡터를 출력하고, 이렇게 출력된 두 개의 인코딩 벡터의 유클리디안 거리를 측정하면 similarity function과 비슷하게 사용 가능한다.
  • 이렇게 정의된 similarity를 이용해서 triplet loss를 최소환 하는 방향으로 학습을 진행한다. Triplet loss는 baseline인 anchor를 positive와 negative input들과 비교하여 positive의 경우 일정 임계값안에 들어가게 하고, negative의 경우 반대가 되게 한다.
  • 최근 연구 동향으로는 특징 추출기가 스스로 데이터 간의 상대적 거리를 표현하는 최근린 선택기를 사용하여 성능을 향상시키고, few-shot learning을 좀 더 단순하게 하는 prototypical networks를 사용하는 연구들이 있습니다.

Face recognition을 위한 Siamese network 내용뿐만 아니라 few-shot learning과 최근 동향에 대해 이해할 수 있었습니다.
유익한 강의 감사합니다.

답글 달기
comment-user-thumbnail
2021년 5월 12일

투빅스 14기 장혜림
Coursera Convolutional Neural Networks 32~36강 리뷰 및 최근 연구 동향에 대해서 민거홍님께서 강의를 진행해주셨습니다.

Face Recognition

  • input으로 사람 이미지를 제시했을 때 이미지에 해당하는 ID를 출력하거나 또는 database에 존재하지 않을 경우 not found 등을 출력하는 task
  • 그러나 training dataset이 작아 기존의 softmax를 활용한 분류 모델을 사용할 경우 training이 어려움. 이를 해결하기 위해 Similarity Function을 학습하는 방법을 제안함
  • Siamese Network: 이미지의 특징 벡터를 추출하여 동일한 인물일 경우, 두 이미지의 벡터의 거리가 작게끔, 서로 다른 인물일 경우 벡터의 거리가 크게끔 학습시킨다. 해당 학습을 위해 Triplet Loss를 제시함
  • 다만, 학습이 잘 되게 하기 위해서 training set 구성을 무작위로 추출하는 것이 아니라, semi-hard한 negative exemplar를 사용함 (negative: 서로 비슷하게 생긴 다른 이미지)
  • Siamese Network에 제시한 방법 이외에도 N-way K-shot 문제를 푸는 다양한 방법이 있음. (최근린 선택기, prototypical networks, GNN 등)

Face Recognition에 관해서 배울 수 있었던 유익한 시간이었습니다. 좋은 강의 감사합니다!

답글 달기

투빅스 14기 서아라
2주차에서는 37강~42강 및 관련 자료에 대한 정리 및 리뷰를 진행하였고, 민거홍님께서 발표해주셨습니다.

[Face Recognition]

  • 직역하면 얼굴 인식이라는 의미로, Liveness가 가능해 snooping 방지가 가능하며 코로나 19로 인해 한국에서도 보편화 되어있는 기술입니다.
  • Face recognition은 1:K의 문제인 반면에 Face Verification은 1:1의 문제라는 차이점이 있습니다.
  • 위에서 언급했듯이 Face recognition 은 1:K의 문제이기 때문에 더욱 정교한 시스템이 필요하다고 합니다.

[Few shot learning]

  • 데이터 수가 매우 적은 문제를 의미하며, 데이터셋을 훈련에 사용하는 서포트 데이터와 테스트에 사용하는 쿼리 데이터로 구성합니다.
  • 퓨샷 러닝 태스크를 ‘N(범주의 수)-way K(범주별 서포트 데이터의 수)-shot 문제’라고 부릅니다.

[One-Shot learning]

  • 한 개의 범주당 One-shot, 한 개의 서포트 데이터만 있는 문제를 의미합니다.
  • Face Recognition은 보통 one shot이기 때문에 one-shot learning problem으로 해결해야 합니다. 즉, 한사람에 대해 한 개의 예시만 주어지더라도 다음에는 그 사람에 대해 인식을 할 수 있도록 모델링이 되어야 한다는 것입니다.
  • 기존의 CNN softmax 방식으로는 Face Recognition이 매우 힘든데, 트레이닝 데이터셋이 너무 작고, 기존의 모델에 새로운 사람이 들어오면 retrain을 해야 하는데 이는 자원 소모가 매우 심하기 때문입니다.
  • 따라서 Similarity Function을 이용합니다.

[Siamese Network]

  • 이전에는 인간이 직접 설계한 특징으로 거리 학습을 시도했는데, 해당 논문은 CNN을 활용하여 특징 추출기를 구성하였습니다.
  • Tripet Loss란 baseline인 anchor을 positive, negative input들과 비교하는 인공 신경 네트워크에 대한 손실함수이며, 손실함수 이기 때문에 anchor input과 positive input사이의 거리는 최소화, 그리고 negative input과의 거리는 최대가 되도록 하여야 합니다.

[최근 연구 동향]

  • 샴 네트워크 이외에도 Matching networks for one-shot learning, Prototypical networks for few-shot learning, 그래프 신경망 (GNN) 기반 방법과 같이 N-way K-chot 문제를 푸는 여러 방법이 존재합니다.

    아쉽게도 직접 강의는 듣지 못하였지만..ㅠㅠ 거홍님께서 정리해주신 자료를 통해서 Face recognition에 대한 전반적인 내용을 알 수 있었습니다:) 감사합니다!

답글 달기