CNN (Convolutional Neural Network)
연구실에서도 자주쓰는 이미지 처리 모델, CNN을 사용해보자.
import dlib
image = cv2.imread(".jpg")
# 사전에 학습된 모델 가져옴
cnn_detector = dlib.cnn_face_detection_model_v1(".dat")
경계 박스를 만들어주자.
# 숫자를 크게할수록 작은 얼굴을 탐지한다.
detections = cnn_detector(image, 4)
for face in detections:
l, t, r, b, c = face.rect.left(), face.rect.top(), face.rect.right(), face.rect.bottom(), face.confidence
print(c)
cv2.rectangle(image, (l,t), (r,b), (255,0, 255), 2)
cv2_imshow(image)
c는 confidence인데, 성능이 얼마나 신뢰적인지 확인하기 위함이다. 위의 값을 보면, 약 0.446, 0.081이 나왔다.
이는 CNN이 "아, 이거 얼굴 맞는 것 같은데 애매하네.." 라고 말하는 것. 이 c 값이 1 이상이면 자신있게 "야 이거 얼굴 맞다!" 하는 것이다.
필자는 cnn_detector 함수 내 숫자를 1부터 6까지 바꿔가면서 사용해봤다. 1~3으로는 얼굴을 찾지 못했고, 4와 5는 2개의 얼굴을, 6은 Out of memory, 램 사용 초과였다.
결론
CNN은 dlib로 사용하면 되고, 물론 데이터가 있는 경우 Pytorch, TF로 훈련하면 된다. dlib로 쓸거면 파라미터를 조정해가면서 본인이 원하는 결과를 얻을 때까지 반복하면 된다.
'DL > Computer Vision' 카테고리의 다른 글
Computer Vision - [얼굴 인식 2 (Face Recogintion using dlib, shape predictor 68 face landmarks)] (0) | 2024.02.07 |
---|---|
Computer Vision - [얼굴 인식 (Face Recogintion)] (1) | 2024.02.01 |
Computer Vision - [Fruit and Vegetable Classification] (1) | 2024.01.29 |
Computer Vision - [HOG (Histogram of Oriented Gradient)] (0) | 2024.01.26 |
Computer Vision - [하르 캐스케이드 얼굴 탐지 (Haar Cascade Face Detection)] (1) | 2024.01.25 |