랜드마크(조정)
key point detection이라고 함. 카메라 앱을 만들 경우 얼굴에서 눈, 코, 입과 같은 기준이 되는 위치를 찾는 것을 의미함.
사용 라이브러리 / 패키지
import os
import cv2
import matplotlib.pyplot as plt
import numpy as np
import dlib
openCV: 문서 참고
dlib 사용: 해당 패키지는 HOG, SVM을 사용해 얼굴을 검출함
여기서는 얼굴이냐 아니냐를 구분하는 것
sliding window: 작은 영역(window)을 이동해가며 확인하는 방법, 여기서는 얼굴 영역을 확인하는 방법으로 쓰임. 큰 이미지를 작은 영역으로 잘라 얼굴이 있는지 확인하고, 다시 작은 영역을 옆으로 옮겨 얼굴이 있는지 확인하는 방식
upsampling: 데이터의 크기를 키우는 방법. downsampling의 반대 개념, 특히 이미지를 upsampling 기법으로 키우는 것을 이미지 피라미드라고 함.
face landmark localization: 이목구비 위치를 추론하는 기술. object keypoint estimation 중 하나
object keypoint estimation의 방식
1) top-down : bounding box를 찾고 box 내부의 keypoint를 예측
2) bottom-up : 이미지 전체의 keypoint를 먼저 찾고 point 관계를 이용해 군집화 해서 box 생성
실습엔 무료 이미지와 연예인 이미지를 활용했다.
ValueError: operands could not be broadcast together with shapes
브로드캐스팅 에러..
numpy에서는 모양이 다른 배열끼리 연산이 불가능하기 때문에 일어나는 에러이다.
얼굴에 랜드마크 위치가 표시되지 않는 현상
⇒ 그냥 표시하는 점 크기가 너무 작아서 그렇다. 크기만 키워주면 된다.
이미지 색상이 저절로 반전되는 현상
해결책을 못 찾았다.. 코드를 싹 지우고 다시 입력하니 됐다.
이미지 색상을 바꾸고 싶을 때
코드로 하지 말고 그냥 이미지 자체를 바꾸는게 정신건강에 이롭다..
exploration은 언제나 그렇듯 코드도 다 이해 못했는데 직접 만들어보라고 해서 당황스럽다. 하지만 어찌저찌 해냈다.. 늘 그렇듯 조각보 코드,, 이미 있는 코드에서 변수만 바꾸기,, 그래도 여러 가지 경우에 적용하다보니 반복되는 코드가 많아 그런 부분을 나름 함수로 선언도 하고 바꿔보려고 노력했다. 나중엔 모듈로 따로 저장해도 될 거 같다.
솔직히 다 이해하고 넘어가는 건 아니지만 일단 이런 분야에서 이런 원리를 이용하면 아이디어를 실현할 수 있다는 정도만 알고, 나중에 특정 분야에 관심이 생겼을 때 더 깊게 파는 것도 나쁘지 않을 거 같다... 사실 머리에 더 안들어갈 거 같아서긴 한데, 와중에 구체적인 절차는 모르더라도 대강의 틀을 안다면 되는 거 아닐까 하는 생각이다. 지금 하기 싫어서 합리화하는 것이 아니다....
오늘도 수고하셨습니다 ~! 매일 정리하는 것 멋져요 👏