OrangePi 5에서 얼굴 감지를 통한 엣지 AI 연결

Ari Mahpour
|  작성 날짜: 2024/11/27 수요일  |  업데이트 날짜: 2025/01/17 금요일
OrangePi 5에서 얼굴 감지를 통한 엣지 AI 연결

AI 추론 엔진은 엣지에서 점점 더 인기를 얻고 있습니다. 우리는 기계 학습 알고리즘과 심지어 대규모 언어 모델이 취미 및 상업 공간에서 임베디드 시스템으로 이식되는 것을 발검합니다. 이 프로젝트에서는 Rockchip 3588 프로세서로 구동되는 Orange Pi 5를 사용하여 실시간 얼굴 감지기를 구축할 것입니다. 이는 우리가 웹캠 비디오 스트림에서 실시간으로 인간의 얼굴을 감지할 수 있음을 의미합니다.

프로젝트 설정

시작하기 위해, 우리는 Orange Pi 5, USB 웹캠, 그리고 제 공개 저장소에 있는 코드를 사용할 것입니다. Orange Pi 5를 설정하는 방법에 대해서는 Orange Pi 5와 Rockchip RK3588 프로세서 시작하기를 참조하십시오. 이 예제의 좋은 점은 PC나 리눅스를 실행하는 다른 고성능 임베디드 장치(예: Raspberry Pi 5)에서도 실행될 수 있다는 것입니다. Orange Pi 5(또는 다른 장치)를 설정하고 실행한 후, 몇 가지 라이브러리를 설치해야 합니다. 이 예제는 리눅스(특히 우분투 실행)를 기반으로 설계되었으므로, 당신이 데비안 패키지 관리자에 접근할 수 있다고 가정합니다. 터미널에서 다음 명령을 실행하십시오:

sudo apt update -y && sudo apt install -y python3 python3-pip libopencv-dev python3-opencv v4l-utils

이 명령어는 데모를 실행하는 데 필요한 모든 패키지를 설치합니다. pip를 사용하여 OpenCV Python 패키지도 설치하세요:

pip3 install opencv-python

설정을 검증하기 위한 추가 단계에 대해서는 README를 참조할 수도 있습니다.

CPU vs. GPU vs. FPGA

Kria KV260 Vision AI Starter Kit으로 AI 비전에서는 FPGA를 사용하여 얼굴 인식 AI 추론 엔진을 구축하는 방법을 시연했지만, 복잡도가 매우 높았습니다. 이 예제에서는 같은 작업을 훨씬 쉬운 방법으로 탐색할 것입니다. 이 방법이 더 쉬운 이유는 복잡성을 CPU나 GPU로 오프로드하기 때문입니다. 이 두 가지를 이 글에서 살펴볼 것입니다. OpenCV가 우리 컴퓨터에 얼마나 잘 최적화되어 있는지가 진정한 아름다움입니다. 이 라이브러리를 사용하면 FPGA에서 자체 신경망을 구축하려고 시도할 때 경험한 모든 기계 학습 복잡성을 완전히 추상화합니다.

코드 개요 및 프로젝트 실행

코드는 꽤 간단합니다. 몇 단계로 나눌 수 있습니다:

Part Insights Experience

Access critical supply chain intelligence as you design.

  1. OpenCL 구성하기(즉, GPU가 사용되고 있는지 확인하기).
  2. 캐스케이드 분류기 로드하기
  3. 비디오 스트림을 캡처하고 그레이스케일로 설정하기
  4. OpenCV로 캐스케이드 실행하기
  5. 얼굴이 감지되면, 파란색 상자로 그리기
  6. "종료" 조건이 충족될 때까지 3-5단계를 반복하기(예: "q"를 누르거나 팝업 창을 닫기)

여기서 진짜 마법은 OpenCV와 함께 사용하는 "캐스케이드 분류기"에 있습니다. 이것은 객체 감지를 위한 기계 학습 기반 도구로, 점점 복잡해지는 일련의 단계(신경망 개념과 유사)를 통해 작동합니다. 마치 각 단계가 특정 기능을 감지하는 하나의 작업을 가진 정교하게 조정된 조립 라인처럼 생각하세요. 이미지의 영역이 이러한 검사 체크포인트를 모두 통과하면 감지된 객체로 표시됩니다. 그렇지 않으면 시간과 처리 능력을 절약하기 위해 초기에 버려집니다.

캐스케이드 분류기는 속도와 효율성에 관한 것입니다. 사전 정의된 특징(즉, 가장자리나 대비와 같은 패턴)을 사용하고 단계적으로 처리하여, 처리 능력이 제한된 장치에서 실시간 작업에 완벽합니다. 반면, 신경망은 다른 리그에서 뛰고 있습니다. 데이터로부터 직접 특징을 자동으로 학습하기 때문에 더 복잡하고 다양한 시나리오를 처리할 수 있습니다. 그러나 그 힘은 대가를 요구합니다: 신경망은 훨씬 더 많은 계산 자원과 시간을 요구합니다. 캐스케이드 분류기는 빠르고 가벼우나 유연성이 떨어지는 반면, 신경망은 강력하지만 자원을 많이 소모합니다. 결국 올바른 도구를 선택하는 것이 중요합니다.

우리의 경우, 얼굴에서 무엇을 찾아야 하고 무엇을 필터링해야 하는지 정확히 아는 사전 훈련된 모델인 Haar Frontal Face Detector( XML 파일 형태)를 사용하게 됩니다. 실제로 이는 우리가 탐색해온 간단한 예제로 충분히 좋습니다. 위에서 언급했듯이, 정밀도는 떨어질 수 있지만 대부분의 간단한 얼굴 감지 예제에는 여전히 충분히 좋습니다.

코드를 실행하려면 다음만 하면 됩니다:

python3 face_detection.py --use-gpu

또는 장치에 GPU가 없는 경우(--use-gpu 플래그를 사용하지 않고, 예를 들어 Orange Pi 5를 사용하지 않는 경우) --use-gpu 플래그를 생략하세요. 이 시점에서 작은 창이 나타나고, 얼굴 위에 파란색 상자가 나타나야 합니다. 제 경우에는 바로 나타났습니다:

Cloud Storage and Version Control

Store your libraries and design data in one secure, accessible, and version-controlled space.

Real-time face detection using OpenCV and a Webcam
그림 1: OpenCV와 웹캠을 사용한 실시간 얼굴 감지

결론

이 프로젝트는 OpenCV와 Orange Pi 5와 같은 도구와 장치를 사용하여 실시간 얼굴 감지가 얼마나 접근하기 쉬워졌는지를 보여줍니다. 사전 훈련된 XML 파일을 로딩하는 방식을 통해 가벼우면서도 효율적인 Cascade Classifier를 활용함으로써, 신경망이나 FPGA 프로그래밍의 복잡성 없이 기능적인 예제를 구축했습니다. 이 접근 방식은 다양한 조명이나 각도를 처리하는 데 있어 제한이 있지만, 엣지 AI를 실험하기 위한 완벽한 시작점입니다.

몇 개의 라이브러리와 최소한의 설정만으로, 이 프로젝트를 임베디드 장치나 표준 PC에서도 복제할 수 있습니다. AI 추론 엔진이 계속해서 개선됨에 따라, 자원이 제한된 장치에서도 더 정교한 모델을 실행하는 것을 볼 수 있게 되어, 모든 사람이 고급 AI에 더 쉽게 접근할 수 있게 될 것입니다. 시작하기 위한 모든 코드를 담고 있는 저장소를 보려면, https://gitlab.com/ai-examples/orange-pi-face-detection을 방문하세요.

작성자 정보

작성자 정보

Ari is an engineer with broad experience in designing, manufacturing, testing, and integrating electrical, mechanical, and software systems. He is passionate about bringing design, verification, and test engineers together to work as a cohesive unit.

관련 자료

관련 기술 문서

홈으로 돌아가기
Thank you, you are now subscribed to updates.
Altium Need Help?