Data Story

데이터 사이언스, 쉽게 설명하기

DL/Computer Vision

Computer Vision - [HOG (Histogram of Oriented Gradient)]

_data 2024. 1. 26. 12:57

HOG, Histogram of Oriented Gradient

HOG 알고리즘으로 사람들의 얼굴을 탐지해보자. HOG는 HaarCascade보다 더 복잡한 연산을 해 성능을 좀 더 끌어올린다.

자세한 알고리즘은 추후에 작성한다.

 

 

 

먼저, dlib 라이브러리가 필요하다. d lib는 OpenCV와 유사하게 이미지 프로세싱 커뮤니티에서 폭넓게 도입하고 있는 강력한 라이브러리이다. 

import cv2
import dlib
# for colab
from google.colab.patches import cv2_imshow

image = cv2.imread(".jpg")
cv2_imshw(image)

HeY~~~~ Happy birthday~

 

이제 얼굴 탐지를 위해 사전에 학습된 모델을 가져오자.

face_detector_hog = dlib.get_frontal_face_detector()

# 1보다 큰 값을 줄수록, 작은 경계 상자로 만든다.
detections = face_detector_hog(image, 1)

 

알아둬야 할 점은, face_detector_hog 함수 내 숫자를 크게할수록, 작은 경계 상자를 만든다. 결국, 작은 얼굴까지 찾는다.

 

몇 개의 얼굴이 탐지되었을까? 14개의 얼굴을 탐지했다.

len(detections) # 14

 

 

경계 상자를 직접 그려서 확인해보자.

detections 변수에는 좌표가 찍혀있다.

for face in detections:
	l, t, r, b = face.left(), face.top(), face.right(), face.bottom()
    cv2.rectangle(image, (l,t), (r,b), (0, 255, 255), thickness=2)
cv2_imshow(image)

 

결론

HOG는 dlib 라이브러리를 통해 사용하고, face_detector_hog 함수 내 숫자를 바꿔가며 얼굴 탐지가 잘 되었는지 튜닝하면 된다.