Data Story

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

DL/Computer Vision

Computer Vision - [CNN (Convolutional Neural Network)]

_data 2024. 1. 26. 13:09

CNN (Convolutional Neural Network)

연구실에서도 자주쓰는 이미지 처리 모델, CNN을 사용해보자.

https://brunch.co.kr/@namujini/19

 

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로 쓸거면 파라미터를 조정해가면서 본인이 원하는 결과를 얻을 때까지 반복하면 된다.