python-cv2 를 사용 하여 Harr+Adaboost 얼굴 인식 을 실현 하 는 예제

Haar 특징
하 울 특징 은 검 측 창 에서 지정 한 위치의 인접 사각형 을 사용 하여 각 사각형 의 픽 셀 과 그 차 이 를 계산 합 니 다.그리고 이 차이 점 으로 그림 의 하위 영역 을 분류 합 니 다.
haar 특징 템 플 릿 은 다음 과 같은 몇 가지 가 있 습 니 다.
在这里插入图片描述
첫 번 째 haar 특징 템 플 릿 을 예 로 들 면
在这里插入图片描述
계산 방식
1.특징=흰색-검은색(흰색 구역 의 픽 셀 과 검은색 구역 의 상징 을 뺀 합)
2.특징=전체 구역*가중치+검은색*가중치
haar 템 플 릿 으로 그림 처리 하기
그림 의 시작 부분 부터 haar 템 플 릿 을 이용 하여 왼쪽 에서 오른쪽으로 옮 겨 다 니 며 위 에서 아래로 옮 겨 다 니 며 보폭 을 설정 하고 그림 크기 와 템 플 릿 크기 의 정 보 를 고려 합 니 다.
만약 에 우리 가 지금1080 * 720크기 의 그림 이 있다 면10*10haar 템 플 릿 이 있 고 걸음 길이 가 2 이다.그러면 우리 가 필요 로 하 는 계 산 량 은(1080/2*720/2)*100*템 플 릿 수량*크기 는 약 50-100 억 과 같 고 계 산 량 이 너무 많다.
적분 도
적분 도 를 사용 하면 연산 시간 을 대량으로 줄 일 수 있 는데,실제로는 접두사 와 원 리 를 운용 한 것 이다
在这里插入图片描述
Adaboost 분류 기
Adaboost 는 일종 의 교체 알고리즘 으로 그 핵심 사상 은 같은 훈련 집 을 대상 으로 서로 다른 분류 기(약 분류 기)를 훈련 한 다음 에 이런 약 분류 기 를 집합 시 켜 더욱 강 한 최종 분류 기(강 분류 기)를 구성 하 는 것 이다.
알고리즘 흐름
이 알고리즘 은 간단 한 약 한 분류 알고리즘 향상 과정 으로 이 과정 은 끊 임 없 는 훈련 을 통 해 데이터 에 대한 분류 능력 을 향상 시 킬 수 있다.전체 과정 은 다음 과 같다.
1.먼저 N 개의 훈련 견본 에 대한 학습 을 통 해 첫 번 째 약 분류 기 를 얻는다.
2.잘못된 샘플 을 다른 새로운 데이터 와 함께 새로운 N 개의 훈련 샘플 을 구성 하고 이 샘플 에 대한 학습 을 통 해 두 번 째 약 분류 기 를 얻 을 수 있 습 니 다.
3.1 과 2 를 모두 잘못 나 눈 견본 에 다른 새로운 견본 을 더 해 다른 새로운 N 개의 훈련 견본 을 구성 하고 이 견본 에 대한 학습 을 통 해 세 번 째 약 분류 기 를 얻 을 수 있다.
4.최종 적 으로 향 상 된 강 분류 기.즉,어떤 데이터 가 어떤 종류 로 나 뉘 는 지 는 각 분류 기의 가중치 에 의 해 결정 된다.
홈 페이지 에서 Adaboost 분류 기 파일 두 개 를 다운로드 해 야 합 니 다.각각 얼굴 과 눈의 분류 기 입 니 다.
다운로드 주소:https://github.com/opencv/opencv/tree/master/data/haarcascades
在这里插入图片描述
在这里插入图片描述
코드 구현
얼굴 인식 을 실현 하 는 기본 절차:
1.파일 과 그림 불 러 오기
2.그 레이스 케 일 처리
3.haar 특징 얻 기
4.얼굴 검사
5.표시 하기
우 리 는 다운로드 한 분류 기 를 불 러 오기 위해 서 4.567914 를 사용 합 니 다.
그리고 우 리 는cv2.CascadeClassifier()방법 으로 식별 결 과 를 얻 었 다.

import cv2
import numpy as np
import matplotlib.pyplot as plt
# 1.        2.       3.  haar   4.     5.  

face_xml = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
eye_xml = cv2.CascadeClassifier('haarcascade_eye.xml')
img = cv2.imread('img.png')
cv2.imshow('img', img)

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 1.     2.     3.    
faces = face_xml.detectMultiScale(gray, 1.3, 5)
print('face = ',len(faces))
print(faces)
#    ,      
for (x,y,w,h) in faces:
  cv2.rectangle(img, (x,y), (x + w, y + h), (255,0,0), 2)
  roi_face = gray[y:y+h,x:x+w]
  roi_color = img[y:y+h,x:x+w]
  eyes = eye_xml.detectMultiScale(roi_face)
  print('eyes = ',len(eyes))
  for (ex,ey,ew,eh) in eyes:
    cv2.rectangle(roi_color, (ex,ey),(ex + ew, ey + eh), (0,255,0), 2)
cv2.imshow('dat', img)
cv2.waitKey(0)

face = 1
[[133 82 94 94]]
eyes = 2
在这里插入图片描述
在这里插入图片描述
python-cv2 를 사용 하여 Harr+Adaboost 얼굴 인식 을 실현 하 는 예제 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 python cv2 얼굴 인식 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 부탁드립니다!

좋은 웹페이지 즐겨찾기