728x90
728x90
Viola - Jones 얼굴 검출기
Positive 영상(얼굴 영상)과 negative 영상(얼굴 아닌 영상)을 훈련하여 빠르고
정확하게 얼굴 영역을 검출
• 기존 방법과의 차별점
▪ 유사 하르(Haar-like) 특징을 사용
▪ AdaBoost에 기반한 강한 분류 성능
== 간단한 형태의 분류기를 여러개 만들어서 강력한 분류기를 만드는 것
▪ 캐스케이드(cascade) 방식을 통한 빠른 동작 속도
• 기존 얼굴 검출 방법보다 약 15배 빠르게 동작
유사 하르 특징(Haar-like features)
• 사각형 형태의 필터 집합을 사용
• 흰색 사각형 영역 픽셀 값의 합에서 검정색 사각형 영역 픽셀 값을 뺀 결과 값을 추출
• 24x24 부분 영상에서 얼굴 판별에
유용한 유사 하르 특징을 선별
캐스케이드 분류기(Cascade classifier)
• 일반적인 영상에는 얼굴이 한 두개 있을 뿐, 나머지 영역은 대부분 non-face 영역
• Non-face 영역을 빠르게 skip하도록 다단계 검사 수행
Haar Cascade Visualization - YouTube
얼굴 눈 검출
src = cv2.imread('ch08\\images\\lenna.bmp')
if src is None:
print('Image load failed!')
sys.exit()
# Cascade 클래스 객체 생성
classifier = cv2.CascadeClassifier('ch08\\haarcascade_frontalface_alt2.xml')
eye_classifier = cv2.CascadeClassifier('ch08\\haarcascade_eye.xml')
if classifier.empty():
print('XML load failed')
sys.exit()
tm = cv2.TickMeter()
tm.start()
faces = classifier.detectMultiScale(src)
'''
cv2.CascadeClassifier.detectMultiScale(image, scaleFactor=None,
minNeighbors=None, flags=None, minSize=None, maxSize=None) -> result
scaleFactor가 클 수록 빨라짐(default = 1.1(1.2))
but 특정 크기의 객체를 놓칠 수 있다(filter size?)
minSize, maxSize (최소, 최대 객체크기)
= 너무 작은 객체가 아니면 minSize 설정하는 것이 좋다
==> 파라미터를 적절히 조절하면 속도가 빨라짐
result: 검출된 객체의 사각형 정보(x, y, w, h)를 담은 shape=(N, 4)
dtype=numpy.int32
'''
tm.stop()
print(tm.getTimeMilli())
print(faces)
for (x,y,w,h) in faces:
cv2.rectangle(src, (x,y,w,h), (0,0,255), 2, cv2.LINE_AA)
# 얼굴에서 윗 부분만 ROI
faceROI = src[y1:y1 + h1 //2, x1:x1 + w1]
eyes = eye_classifier.detectMultiScale(faceROI)
for (x2,y2,w2,h2) in eyes:
center = (x2 + w2 // 2, y2 + h2 // 2)
cv2.circle(faceROI, center, w2 // 2, (255,255,0), 2, cv2.LINE_AA)
cv2.imshow('src', src)
cv2.waitKey()
728x90
'OpenCV > OpenCV-Chapter' 카테고리의 다른 글
CH09 OpenCV-Python 특징점 검출(Corner) (0) | 2021.12.25 |
---|---|
CH08 OpenCV-Python HOG 보행자 검출 (0) | 2021.12.24 |
CH08 OpenCV-Python 템플릿 매칭(Template matching) (0) | 2021.12.24 |
CH08 OpenCV-Python Moment 기반 객체 검출 (0) | 2021.12.24 |
CH08 OpenCV-Python 영상 분할 그랩컷(GrabCut) (0) | 2021.12.24 |
댓글