산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

라즈베리파이 실시간 얼굴 인식: 엔드투엔드 가이드

이 튜토리얼은 OpenCV와 Pi-Cam을 사용해 라즈베리파이에서 실시간 얼굴 인식 시스템을 구축하는 과정을 안내합니다. 하드웨어 설정부터 인식기 훈련까지 모든 단계를 명확한 코드 스니펫과 실용적인 팁과 함께 제시합니다.

아래에서 Pi-Cam이 실시간으로 얼굴을 감지하는 라이브 데모를 확인할 수 있습니다.

이 프로젝트는 실시간 성능에 최적화된 오픈소스 OpenCV 라이브러리에 의존합니다. 라즈비안 실행 라즈베리파이에 초점을 맞추지만, 동일한 코드가 macOS와 Windows에서도 약간의 조정만으로 실행됩니다.

3단계

완전한 얼굴 인식 워크플로는 세 가지 뚜렷한 단계로 나눌 수 있습니다:

아래 다이어그램은 이 단계들을 요약합니다.

1단계: BOM – 자재 명세서

필수 구성 요소:

2단계: OpenCV 3 설치

Adrian Rosebrock의 가이드를 따라 라즈비안 스트레치에 OpenCV 3을 깨끗하게 설치하는 것을 권장합니다. 튜토리얼 완료 후 전용 파이썬 가상 환경을 활성화하세요:

source ~/.profile
workon cv
환경 내부에서 파이썬 버전과 OpenCV 설치 확인:
python
>>> import cv2
>>> cv2.__version__
3.3.0 이상 버전 번호가 보여야 합니다.

3단계: 카메라 테스트

카메라가 감지되지 않으면 드라이버를 활성화하세요:

sudo modprobe bcm2835-v4l2
다음 파이썬 스니펫은 Pi-Cam 스트림을 열고 컬러와 그레이스케일로 표시하며 수직으로 뒤집습니다(카메라 방향이 다르면 조정):
import numpy as np
import cv2
cap = cv2.VideoCapture(0)
cap.set(3, 640)
cap.set(4, 480)
while True:
    ret, frame = cap.read()
    frame = cv2.flip(frame, -1)
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    cv2.imshow('frame', frame)
    cv2.imshow('gray', gray)
    if cv2.waitKey(30) & 0xff == 27:
        break
cap.release()
cv2.destroyAllWindows()
python simpleCamTest.py로 실행하세요 (프로젝트 GitHub에서 사용 가능). ESC로 종료.

4단계: 얼굴 감지

OpenCV의 Haar Cascade 분류기는 얼굴을 감지하기 위한 경량 머신러닝 접근법입니다. 사전 훈련된 XML 파일(haarcascade_frontalface_default.xml)을 다운로드해 Cascades 폴더에 넣으세요. 다음 스크립트는 바운딩 박스와 함께 실시간 얼굴 감지를 시연합니다:

import cv2
faceCascade = cv2.CascadeClassifier('Cascades/haarcascade_frontalface_default.xml')
cap = cv2.VideoCapture(0)
cap.set(3, 640)
cap.set(4, 480)
while True:
    ret, img = cap.read()
    img = cv2.flip(img, -1)
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    faces = faceCascade.detectMultiScale(
        gray, scaleFactor=1.2, minNeighbors=5, minSize=(20, 20)
    )
    for (x, y, w, h) in faces:
        cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2)
    cv2.imshow('video', img)
    if cv2.waitKey(30) & 0xff == 27:
        break
cap.release()
cv2.destroyAllWindows()

detectMultiScale 파라미터는 감도를 제어합니다: scaleFactor는 반복마다 이미지 크기를 줄이고, minNeighbors는 거짓 양성을 필터링하며, minSize는 감지 가능한 최소 얼굴 크기를 설정합니다.

추가 예제

프로젝트 GitHub에서 더 많은 감지 옵션 탐색:

Haar Cascade 객체 감지 – 얼굴 & 눈 튜토리얼

5단계: 데이터 수집

훈련을 위해 레이블된 데이터셋 수집이 필수적입니다. 프로젝트 폴더(예: FacialRecognitionProject)와 dataset 서브디렉토리를 생성하세요:

mkdir FacialRecognitionProject
cd FacialRecognitionProject
mkdir dataset
Haar Cascade 파일을 프로젝트 루트에 다운로드한 후 01_face_dataset.py를 실행해 사용자당 30장의 얼굴 이미지를 캡처하세요:

import cv2
import os
cam = cv2.VideoCapture(0)
cam.set(3, 640)
cam.set(4, 480)
face_detector = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
face_id = input('\n사용자 ID(숫자) 입력 후 <Return> → ')
print('\n[INFO] 얼굴 캡처 초기화 중. 카메라를 보세요…')
count = 0
while True:
    ret, img = cam.read()
    img = cv2.flip(img, -1)
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    faces = face_detector.detectMultiScale(gray, 1.3, 5)
    for (x, y, w, h) in faces:
        cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2)
        count += 1
        cv2.imwrite(f'dataset/User.{face_id}.{count}.jpg', gray[y:y+h, x:x+w])
        cv2.imshow('image', img)
    if cv2.waitKey(100) & 0xff == 27 or count >= 30:
        break
if count >= 30:
    break
cam.release()
cv2.destroyAllWindows()
print('\n[INFO] 프로그램 종료 및 정리.')

각 이미지는 User.{id}.{count}.jpg 형식으로 명명됩니다(예: User.1.4.jpg). 필요에 따라 샘플 수를 조정하세요.

6단계: 훈련

수집된 이미지로 OpenCV 얼굴 인식기를 훈련시킵니다. 결과 모델은 trainer 폴더에 .yml 파일로 저장됩니다. 구현 세부 사항은 프로젝트 저장소의 전체 훈련 스크립트를 참조하세요.

자세히 보기: 실시간 얼굴 인식 – 엔드투엔드 프로젝트

제조공정

  1. 파이썬 연산자 마스터하기: 종합 가이드
  2. Python 리스트 연산: 생성, 접근, 수정, 고급 기법
  3. Python 딕셔너리 마스터하기: 생성, 조작, 고급 기법
  4. MATRIX Voice 라즈베리 파이에 구글 어시스턴트 설치하기 – 단계별 가이드
  5. Speathe: 마비 환자를 위한 호흡 기반 의사소통 플랫폼
  6. 윈도우 IoT와 라즈베리파이로 안전한 얼굴 인식 도어락 만들기
  7. 라즈베리파이와 OpenCV로 자동화된 비전 기반 객체 추적 시스템
  8. 라즈베리 파이로 텐서플로와 OpenCV를 활용한 숫자 인식기 만들기
  9. 윈도우 IoT 코어 라즈베리파이 2 로버: 초보자부터 고급까지 완전 가이드
  10. 고피고(GoPiGo) v2 윈도우 10 IoT 코어 라즈베리파이 3 확장 프로젝트