본문 바로가기

모아두기

[모아두기] 파이썬으로 얼굴 영역 인식, 참 쉽지요

 

 

미디엄에서 북마크 해놨던 얼굴인식 샘플코드 입니다

Detecting Face Features with Python
https://towardsdatascience.com/detecting-face-features-with-python-30385aee4a8e

미디엄이 유료모델을 도입하면서
어떤 글들은 처음엔 전체 내용을 볼 수 있는데, 일정 횟수 이상 열게 되면 그 뒤로는 일부만 보이도록 바뀌었나 봅니다

오늘 다시 열었더니 글 전체 내용이 다 보이질 않네요 ㅠㅠ

미디엄도 돈 벌어야 유지가 되니 이해는 하지만 구독료 내야 하는게 한두개가 아니다 보니 슬슬 부담이

소스코드 보일 때 얼른 옮겨놨습니다.

 

 

최종 얼굴인식 파이썬 소스코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import cv2
import dlib
 
# Load the detector
detector = dlib.get_frontal_face_detector()
 
# Load the predictor
predictor = dlib.shape_predictor("shape_predictor_68_face_landmarks.dat")
 
# read the image
cap = cv2.VideoCapture(0)
 
while True:
    _, frame = cap.read()
    # Convert image into grayscale
    gray = cv2.cvtColor(src=frame, code=cv2.COLOR_BGR2GRAY)
 
    # Use detector to find landmarks
    faces = detector(gray)
 
    for face in faces:
        x1 = face.left()  # left point
        y1 = face.top()  # top point
        x2 = face.right()  # right point
        y2 = face.bottom()  # bottom point
 
        # Create landmark object
        landmarks = predictor(image=gray, box=face)
 
        # Loop through all the points
        for n in range(068):
            x = landmarks.part(n).x
            y = landmarks.part(n).y
 
            # Draw a circle
            cv2.circle(img=frame, center=(x, y), radius=3, color=(02550), thickness=-1)
 
    # show the image
    cv2.imshow(winname="Face", mat=frame)
 
    # Exit when escape is pressed
    if cv2.waitKey(delay=1== 27:
        break
 
# When everything done, release the video capture and video write objects
cap.release()
 
# Close all windows
cv2.destroyAllWindows()
cs

 

 

맥북에서 소스코드 돌려보기

opencv, dlib 이렇게 두개 라이브러리만 설치하면 얼굴인식 코드를 쉽게 작성할 수 있습니다
아, 맥북을 사용한다면 cmake도 추가로 더 설치를 해야 합니다

맥북에서는 맨 마지막 샘플코드를 돌려보기 위해서는 하나를 더 해야 하는데
맥북 카메라 접근을 위해 권한 설정을 해줘야 합니다

vscode의 터미널에 권한을 설정하는 방법은 찾지 못해서
iTerm2에만 권한을 추가했습니다

macOS에서는 특정 프로그램을 지정하여 카메라 접근권한을 추가할 수가 없고,
앱에서 접근을 시도를 하게 되면 그 기록이 남아, 그 앱에 권한을 주는 방식인데
이상하게도 vscode의 터미널은 카메라에 접근기록이 남질 않아 권한을 추가할 방법이 없습니다 ㅠㅠ
vscode의 터미널에 카메라 권한 추가 성공하신 분 계시면 댓글로 공유 부탁드립니다

 

 

Detecting Face Features with Python

Build a face detector that can extract up to 6 facial features using Python with OpenCV and DLib.

towardsdatascience.com

 

 

얼굴인식 핵심원리

 

누가 찾아낸 것인지 모르지만, 이정도 점만 연결해 보면 얼굴인지 알아낼 수 있다는 겁니다.
요즘엔 이런 최적화를 인공지능이 찾아내고 있지요.

암튼, 이 정도만으로 사람 얼굴인지를 알아낼 수 있으니 실시간 트랙킹이 가능하고
얼굴을 영역을 알아 냈으니, 같은 사람인지를 판별하는 알고리즘까지 적용하면
실시간 얼굴인식이 가능하죠

거기에 한 화면에서 여러 사람의 얼굴을 동시에 인식해서
누구인지 찾아내는 것을 실시간으로 할 수 있으면
따단~ 빅 브라더 탄생 - 이미 중국에서는 하고 있지요
사생활 침해 따윈 신경 안쓰는 나라라

원문의 설명에도 나와 있지만
좌표들의 순서가 영역을 의미하므로 마스크를 쓰고 있는 경우를 위해서 얼굴 윗 부분만 체크하도록 코드를 바꿔봤습니다

턱선 = 0–16
오른쪽 눈썹 = 17–21
왼쪽 눈썹 = 22–26
코 라인 = 27–35
오른쪽 눈 = 36–41
왼쪽 눈 = 42–47
입술 바깥쪽 = 48–60
입술 안쪽 = 61–67

이 코드를 응용하면 사람 얼굴인지 아닌지, 마스크를 썼는지 안 썼는지 체크해볼 수 있을 것 같습니다

뭐 요즘 100메가 정도는 인터넷으로 내려 보내는게 큰 부담은 아닐 수도 있지만
데이터 사이즈가 100메가면 좀 크긴 합니다

요즘엔 opencv도 자바스크립트로 동작이 가능해서 웹페이지에서도 사용 가능한데
https://madchick.tistory.com/235

웹페이지에 이 모듈 응용하기엔 100메가 내려 보내는 것 때문에 약간 부담스러울 수도 있을 것 같습니다

 

 

얼굴인식과 얼굴인증은 다른 이야기

 

캠으로 얼굴 인식 한다는 것은 결국엔 2D 사진으로 인식하는 것이니
사진으로 해봤는데, 역시 얼굴인식이 됩니다

아이폰에서 Face ID가 가능한 이유는 애플은 비싼 라이다 센서를 아이폰에 넣었고
삼성은 넣지 않아서 갤럭시는 얼굴인식이지 얼굴인증은 안됩니다.

아이폰은 실물 내 얼굴 아니면 Face ID가 안 풀리지만
갤럭시는 내 사진 보여줘도 풀립니다

애플은 지문인증 대신 얼굴인증을 하고 싶었던 것이고
삼성은 지문인증을 유지하는 결정이었기 때문에
LiDAR 센서 들어갔다고 아이폰이 더 좋거나, 우월하거나 그런건 없습니다.

아이폰에 LiDAR 센서 있다고 해서 3D 스캐닝이 될 정도는 아니니까요.

 

 

아이폰의 LiDAR 센서가 아무리 좋아도 3D 스캐닝은 무리

 

결과물이 영, 좀 그렇습니다.

https://m.blog.naver.com/bonamy/222134176142
꽤 괜찮은 3D 스캐닝이 될 지 알았는데, 아직은 시기상조인가 봅니다. 유튜브 동영상이나 이런 저런 검색을 아무리 해봐도 제대로 스캔하지는 못하는 것 같습니다.

https://www.3dscannerapp.com/ - 이 앱은 광고만 보면 꽤 쓸만 할 것 같습니다.
하지만, 정말로 결과물이 이렇게 나올지는 별로 신뢰가 가지 않습니다. 센서가 별로인데 앱이 커버해주는데 한계가 많을 겁니다.

아이폰 LiDAR 센서를 이용한 앱이 아래와 같은 정도의 특수효과 내는 것이 가능하다고 해서 기대를 해봤지만, 공간인지를 하는 것과 3D 스캐닝을 정밀하게 하는 것은 차원이 다른 이야기인가 봅니다.


실시간 화면에 3D 합성을 해서 공간을 인식하고, 실시간 영상 공간에서 흩날리다, 물체 표면에 닿으면 착륙
우아~~ 놀라운 세상 이에요

https://mobile.twitter.com/bugbear5/status/1388050058700935172

 

 

 

 

아마존 프라임 비디오, 생각보다 괜찮네요 그리고 X-Ray 기능은 짱 좋네요

아마존 프라임 비디오가 국내 서비스를 이미 개시한 것을 이제야 알았어요. 구독 중인 유튜브 채널 중에 반지의 제왕이 시리즈로 만들어진다는 내용을 보고서 알게 되었습니다. 20여편 분량으로

madchick.tistory.com

 

디즈니 플러스 국내 서비스 시작, 생각지도 못했던 반전 심슨가족

애플티비 플러스에 이어서 디즈니 플러스도 국내 서비스가 시작되었습니다. 얼른 가입해서 좀 살펴봤습니다. 역시 디즈니는 그동안 많이 사모아서 볼게 많더군요. 애플TV는 오리지널만 고집한

madchick.tistory.com

 

애플TV+ 국내 서비스 시작, 윈도우와 안드로이드에서도 시청 가능 합니다

애플TV+가 갑자기 국내 서비스를 시작했습니다. 넷플릭스와 디즈니 플러스까지, 신나네요. 파친코 때문에 애플TV에 관심을 가지고 있었는데 Dr. 브레인으로 훅 들어왔습니다. 애플 TV+ 파친코 - 애

madchick.tistory.com

 

기다리고 기다리던 넷플릭스.. 드디어 한국진출..

내년에는 드디어 미드를 제대로 즐길 수 있겠네요.. http://www.bloter.net/archives/238403 아, 이제 미드 동영상과 자막을 다운로드 하기 위해 어둠의 경로를 헤메이지 않아도 됩니다.. 원할 때, 원하는 장

madchick.tistory.com

728x90