본문 바로가기
딥러닝_실습

L2. Face Detection

by 민지기il 2024. 5. 2.

딥러닝을 사용한 최신 얼굴 인식에 대해 알아보자

1. 얼굴 찾기

HOG(Histogram of Oriented Gradients) 방식을 사용한다.

먼저 이미지를 흑백을 바꾼다. 이미지의 해당 픽셀이 이를 둘러싸고 있는 픽셀들과 비교해서 얼마나 어두운지 알아낸다.

이미지가 어두워지는 방향을 나타내는 화살표를 그린다. 이 화살표를 gradient라고 부르며 이를 통해 이미지에서 밝은 부분-> 어두운 부분으로의 흐름을 알 수 있다.

이미지를 16x16 픽셀의 작은 정사각형들로 분해하여 각 정사각형에서 얼마나 많은 gradient가 주요방향(위쪽, 우상쪽, 오른쪽)을 가리키는지 세어본다. 그러고 이 사각형을 가장 강한 화살표 방향을 바꾼다. 

2. 얼굴의 위치교정과 투영

얼굴이 다른 방향을 보고 있으면 다르게 인식되기 때문에 이를 교정하기 위해 face landmark estimation이라는 알고리즘을 사용한다. 2014년에 Vahid Kazemi와 Josephine Sullivan이 발명한 접근 방법이 있다.

기본적인 아이디어는 모든 얼굴에 존재하는 68개의 랜드마크(landmarks)라 부르는 특정 포인트(턱의 상단, 눈 바깥의 가장자리, 눈썹 안쪽의 가장자리, 등)를 찾아 내는 것이다. 기계 학습 알고리즘을 훈련시켜 어떤 얼굴에서든 이러한 68개의 특정 포인트들을 찾는다.

 

이를 통해 얼굴이 옆으로 돌아가 있어도, 우리는 눈과 입을 이미지상에서 대략 동일한 위치에 맞출 수 있다

 

3. 얼굴 인코딩

딥 컨볼루션 신경망(Deep Convolutional Neural Network)을 훈련시키는 것이다. 사진에서 객체를 인식하도록 신경망을 훈련시키는 대신, 각 얼굴에 대해 128개의 측정값 (임베딩:embedding)을 생성하도록 훈련시킨다. 사진과 같이 복잡한 원시 데이터(raw data)를 컴퓨터가 생성한(computer-generated) 숫자값의 목록으로 축소하는 아이디어이다.

훈련 과정은 3개의 얼굴 이미지를 차례대로 확인하는 것이다.

1. 훈련용 아는 사람의 얼굴 사진 적재(load)

2. 동일한 아는 사람의 다른 사진 적재

3. 전혀 다른 사람의 사진 적재

그리고 알고리즘은 세 개의 이미지 각각에 대해 현재 생성하고 있는 측정값을 확인한다. 그런 다음에, #1 과 #2 이미지에 대해 생성한 측정값은 서로 좀 더 가깝게 하고 #2와 #3의 측정값은 좀더 멀어지도록 신경망을 조정한다

 

4. 인코딩에서 사람의 이름 찾기

test image에 가장 근접한 측정값을 갖고 있는 사람이 대한 data base를 찾아낸다. 이를 위해 SVM 분류기를 사용할 수 있다.

 

출처:https://medium.com/@jongdae.lim/%EA%B8%B0%EA%B3%84-%ED%95%99%EC%8A%B5-machine-learning-%EC%9D%80-%EC%A6%90%EA%B2%81%EB%8B%A4-part-4-63ed781eee3c

 이지만 2016년 자료라는 것을 참고해야 한다.

 

1) 카메라 스티커 앱

출처: https://mutecoding.tistory.com/42

얼굴 영역 박스, 68_face_landmarks 파일로 이미지 위에 점그리기까지 되었으나 마지막에 스티커 붙이는 부분이 작동이 안된다.

다시 확인해봐야할 듯 하다.

 

 

practiceL2.py
0.00MB

 

 

'딥러닝_실습' 카테고리의 다른 글

L3. Text Classification  (0) 2024.05.08
L1. Image Classification  (0) 2024.05.02
딥러닝 실습  (0) 2024.04.30