Raspberry Pi 4로 손쉽게 고성능 얼굴 인식을 원합니다.

소개



파이썬으로 손쉽게 고성능의 얼굴 인식을 할 수 있는 face_recognition 라는 라이브러리가 있습니다. 이미지나 동영상내의 얼굴을 인식할 뿐만 아니라, 얼굴의 랜드마크(눈, 코, 입 등)의 인식이나 인물의 식별 등을 몇 줄의 프로그램으로 할 수 있게 되어 있습니다. 게다가 다양한 하드웨어나 OS에 대응하고 있는 것 같습니다.

물론 Windows에도 대응하고 있어, 이전 나의 메인 PC(Windows10)로 셋업하려고 했는데, 어째서 잘 가지 않고 포기해 버렸습니다. 덧붙여서 그 때는 face_recognition 대신에 mtcnn라는 라이브러리를 사용했습니다.

이번에는 다시 face_recognition을 사용하고 싶었기 때문에 Raspberry Pi 4에서 설정해 보았습니다.

환경


  • Raspberry Pi 4 ModelB 4GB
  • Raspbian Buster
  • Python 3.7.3

  • 설정



    dlib 설치



    먼저 dlib라는 라이브러리를 설치해야하는 것 같습니다.

    이 동영상을 참고로 설치했습니다.
    How to install dlib on Raspberry Pi 4 or Linux

    먼저 패키지를 업데이트합니다.
    sudo apt update && sudo apt upgrade
    
    dlib 설치에 필요한 패키지를 설치합니다.
    sudo apt install build-essential cmake pkg-config
    

    그런 다음 dぃb. 뿌리 t으로 가서 왼쪽 하단의 "Download dlib"로 작성된 파란색 버튼에서 dlib를 다운로드하십시오.

    dlib-19.21.tar.bz2라는 파일이 다운로드되므로 탐색기에서 확장합니다.


    그러면 dlib-19.21라는 폴더가 생깁니다. 내용은 이미지처럼 보입니다.


    그런 다음 터미널에서이 폴더로 이동하여 dlib의 빌드 설치를 수행합니다.

    먼저 빌드합니다. 10~20분 정도 걸립니다.
    Python3에서 실행하도록주의하십시오.
    sudo python3 setup.py build
    

    설치합니다. 이것도 10~20분 정도 걸립니다.
    sudo python3 setup.py build`
    

    이것으로 설치가 완료되었을 것입니다. 파이썬에서 쉽게 확인해 보겠습니다.dlib 를 가져 와서 특히 오류가 발생하지 않으면 괜찮습니다.
    $ python3
    Python 3.7.3 (default, Jul 25 2020, 13:03:44) 
    [GCC 8.3.0] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import dlib
    >>> dlib.__version__
    '19.21.0'
    

    face_recognition 설치


    pip로 설치하면됩니다.
    pip3 install face_recognition
    

    사용해보기



    간단한 얼굴 인식 프로그램을 작성해 보았습니다.

    script.py
    import face_recognition
    from PIL import Image, ImageDraw
    
    image = face_recognition.load_image_file("image.jpeg")
    
    face_locations = face_recognition.face_locations(image)
    print(f"{len(face_locations)} faces detected.")
    
    pil_image = Image.fromarray(image)
    draw = ImageDraw.Draw(pil_image)
    
    for loc in face_locations:
        top, right, bottom, left = loc
        draw.rectangle((left, top, right, bottom), width=8)
    
    pil_image.save("./output.jpg")
    



    매우 쉽습니다.
    단지 처리에 상당히 시간이 걸립니다. 측정해 보면 17초였습니다. 인원수가 많은 탓도 있을지도 모릅니다.
    $ time python3 ./script.py
    9 faces detected.
    
    real    0m17.715s
    user    0m15.845s
    sys 0m1.625s
    

    face_recognition의 사용법은 GitHub을 참조하십시오.
    face_recognition

    조만간 카메라 모듈로 얼굴 인식을 시도하고 싶습니다.

    좋은 웹페이지 즐겨찾기