2024.01.09 - [study/Udemy] - [CVM] 1. Face Detection
[CVM] 1. Face Detection
목표 : python 라이브러리를 활용한 얼굴 인식 주제 1. Haarcascade 와 OpenCV를 활용한 Face Detection 주제 2. HOG와 Dlib을 활용한 Face Detection 주제 3. CNN과 Dlib을 활용한 Face Detection 주제 4. 웹캠으로 Face Detectio
leeyujin.tistory.com
하르 캐스케이드 알고리즘으로 얼굴 검출을 했을 때, false positive가 보여졌다.
이 문제를 해결하기 위해서 하르캐스케이드의 파라미터를 사용해본다.

주제 2. Haarcascades parameters 1
- 얼굴 탐지 분류기 사전학습 모델을 객체로 불러오기
face_detector = cv2.CascadeClassifier('/content/drive/MyDrive/haarcascade_frontalface_default.xml')
scaleFactor
- scaleFactor : 이미지 크기를 처리하는 매개변수
- 이미지 감지를 위한 도형의 크기 비율 설정
- 크기가 작아질수록 모델과 일치하는 영역을 탐지할 확률이 높아지고, 속도는 느려짐.
- 크기가 커질수록 탐지할 확률은 줄어들지만 속도는 빨라짐.
- 큰 얼굴을 작은 얼굴로, 작은 얼굴을 큰 얼굴로 자동으로 크기를 조정할 수 있음.
- 제대로 된 탐지 결과를 원한다면, 모든 매개변수들 값들을 직접 테스트 해 봐야한다.
image = cv2.imread('/content/drive/MyDrive/colab/people1.jpg')
image = cv2.resize(image, (800, 600))
image_gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
detections = face_detector.detectMultiScale(image_gray, scaleFactor = 1.09) # scaleFactor : 이미지 배율 축소 정도
for (x, y, w, h) in detections:
cv2.rectangle(image, (x, y), (x + w, y + h), (0,255,0), 5)
cv2_imshow(image)

주제 3. Haarcascades parameters 2
minNeighbors
- bounding box에 얼마나 많은 이웃들을 유지해야하는가. (각각의 b-box의 최소한의 이웃의 수 설정)
- 값이 높을수록 탐지하는 개수가 줄어들고 품질은 높아짐.
- 값이 낮을수록 많은 영역을 탐지하지만 품질이 낮아짐.
- 매개변수를 변경하더라도 때로는 모든 얼굴을 탐지하지 못 할 수도 있다.
minSize, maxSize
- b-box의 최소, 최대 크기를 결정할 수 있다.
- 예를들어, minSize가 (45,45)일 경우엔 b-box 크기가 45이하인 것은 탐지되지 않는다.
image = cv2.imread('/content/drive/MyDrive/people2.jpg')
image_gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
detections = face_detector.detectMultiScale(image_gray, scaleFactor=1.2, minNeighbors=7,
minSize=(20,20), maxSize=(100,100))
for (x, y, w, h) in detections:
print(w, h) #-- b-box 사이즈 확인 (minSize와 maxSize 매개변수 값에 따라 탐지여부가 결정됨)
cv2.rectangle(image, (x, y), (x + w, y + h), (0,255,0), 2)
cv2_imshow(image)

반응형
'Study > Udemy' 카테고리의 다른 글
[CVM] 3. Face Detection (3) (0) | 2024.01.28 |
---|---|
[CVM] 1. Face Detection (1) | 2024.01.09 |