Mediapipe FaceMesh 공식 문서 Face Mesh Cross-platform, customizable ML solutions for live and streaming media. google.github.io mediapipe에서 제공하는 Face Mesh는 얼굴의 랜드마크를 검출해준다. Face Mesh는 모바일 GPU 환경 또는 CPU 환경에서 잘 작동하도록 제작되었기 때문에 고성능 컴퓨팅 자원을 요구하지 않고 한 대의 RGB 카메라만으로도 잘 동작한다는 점이 큰 장점이다. 또한 데이터를 학습하는 과정에서 여러 조명(lighting) 환경에서 촬영된 데이터를 사용했기 때문에 빛의 영향을 적게 받는다는 것을 경험적으로 확인할 수 있었다. 게다가 기존의 방식은 영상의 모든 프레임에서 dete..
dlib 모델 불러오기 # Conda 설치 > conda install -c conda-forge dlib # PIP 설치 > pip install dlib dlib의 get_frontal_face_detector는 HOG(Histogram of Oriented Gradient) + SVM을 활용해 사람의 얼굴을 인식한다. import dlib detector = dlib.get_frontal_face_detector() faces = detector(이미지) 위와 같이 함수를 이용해 detector객체를 가져오고 사람 얼굴이 포함된 이미지를 입력하면 관련 정보를 반환한다. 얼굴 인식 import cv2 import dlib detector = dlib.get_frontal_face_detector() ..
DFS (Depth-Fisrt Search) DFS: 깊이 우선 탐색 트리 상에서 자식 노드가 있다면, 아래(자식 노드)로 계속 전진하여 탐색하는 방법. 위 그림에서 각 노드의 번호는 탐색 순서를 뜻한다. 1번 노드는 2, 5번 노드를 자식으로 가진다. 하지만 2번 노드가 자식 노드를 가지기 때문에 5번 노드를 탐색하기 전 3, 4번 노드를 우선 탐색한다. 2번 노드에 다른 자식 노드가 없기 때문에 다시 5번 노드를 탐색하는 형태이다. 구현 - Python - open 리스트: 탐색하지 않은 상태(노드)들 - close 리스트: 탐색을 마친 상태(노드)들 DFS는 스택(stack)을 이용하여 구현할 수 있다. (FILO) def dfs(graph, start_node): # open list: stack..
하노이 탑 문제: 3개의 기둥이 있으며 한 기둥에 원판들이 쌓여있다. 그리고 아래 규칙에 따라 원판을 다른 기둥으로 이동시켜야 한다. 규칙: 한 번에 하나의 원판을 이동시킬 수 있으며, 큰 원판이 작은 원판 위에 있으면 안 된다. 문제 해결 문제를 일반화하기 전, 3개의 원판을 가진 하노이탑 문제를 고민해보면 아래 그림과 같다. 3개의 원판을 이동시키기 위해서는 먼저 2개의 원판을 임시 기둥(B)으로 옮겨야 한다. 그런 후, 가장 큰 원판을 목표 기둥(C)으로 옮길 수 있다. 같은 원리로 2개의 원판을 목표 기둥(B)으로 이동하기 위해서는 임시 기둥(C)으로 작은 원판을 이동해야 한다. 문제 일반화 1. n개의 원판을 옮기기 위해 n-1개의 원판을 목표 기둥이 아닌 임시 기둥으로 옮겨야 한다. (n≥2)..