VGGNet VGGNet은 카렌 시모니안(Karen Simonyan)과 앤드류 지서만(Andrew Zisserman)이 2015 ICLR에 게재한 “Very deep convolutional networks for large-scale image recognition” 논문에서 처음 발표했습니다. VGGNet은 합성곱층의 파라미터 수를 줄이고 훈련 시간을 개선하려고 탄생했습니다. 즉, 네트워크를 깊게 만드는 것이 성능에 어떤 영향을 미치는지 확인하고자 나온 것이 VGG입니다. VGG 연구 팀은 깊이의 영향만 최대한 확인하고자 합성곱층에서 사용하는 필터/커널의 크기를 가장 작은 3×3으로 고정했습니다. 네트워크 계층의 총 개수에 따라 여러 유형의 VGGNet(VGG16, VGG19 등)이 있으며, 이 중 ..
ResNet은 마이크로소프트에서 개발한 알고리즘으로 “Deep Residual Learning for Image Recognition”이라는 논문에서 발표되었습니다. ResNet 핵심은 깊어진 신경망을 효과적으로 학습하기 위한 방법으로 레지듀얼(residual) 개념을 고안한 것입니다. 일반적으로 신경망 깊이가 깊어질수록 딥러닝 성능은 좋아질 것 같지만, 실상은 그렇지 않습니다. “Deep Residual Learning for Image Recognition” 논문에 따르면, 신경망은 깊이가 깊어질수록 성능이 좋아지다가 일정한 단계에 다다르면 오히려 성능이 나빠진다고 합니다. 다음 그림과 같이 네트워크 56층이 20층보다 더 나쁜 성능을 보임을 알 수 있습니다. 즉, 네트워크 깊이가 깊다고 해서 무조건..
https://github.com/facebookresearch/SlowFast GitHub - facebookresearch/SlowFast: PySlowFast: video understanding codebase from FAIR for reproducing state-of-the-art video mo PySlowFast: video understanding codebase from FAIR for reproducing state-of-the-art video models. - GitHub - facebookresearch/SlowFast: PySlowFast: video understanding codebase from FAIR for reprod... github.com Requirements..
OpenCV에서 Mask R-CNN을 사용하는 방법 Python 파일에서 모델이 OpenCV와 함께 작동하도록 하려면 로드할 파일의 올바른 경로를 입력하도록 주의하면서 cv2.dnn.readNetFromTensorflow 함수를 사용합니다. # Loading Mask RCNN net = cv2.dnn.readNetFromTensorflow("dnn/frozen_inference_graph_coco.pb", "dnn/mask_rcnn_inception_v2_coco_2018_01_28.pbtxt") 물체 감지(상자 그리기) 이미지를 모델이 읽을 수 있는 형식으로 변환해야 합니다. # Detect objects blob = cv2.dnn.blobFromImage(img, swapRB=True) net.set..
part4에서 한개의 삼각형만 맞춰봤는데 전체 삼각형에 대해 회전, 변형을 해서 타겟 얼굴 삼각형과 일치시켰다. 첫 번째 이미지에서 삼각형을 뒤틀린 후 두 번째 면과 같은 크기와 위치로 뒤틀린 첫 번째 면을 재구성합니다. # Reconstructing destination face img2_new_face_rect_area = img2_new_face[y: y + h, x: x + w] img2_new_face_rect_area = cv2.add(img2_new_face_rect_area, warped_triangle) img2_new_face[y: y + h, x: x + w] = img2_new_face_rect_area 얼굴이 삼각형을 결합하여 재구성되면 마스크를 만들어 얼굴을 선택하고 검은색은 i..
원본 얼굴의 삼각형이 타겟 얼굴의 삼각형과 모양과 크기가 정확히 일치하도록 해당 삼각형을 선택하고 왜곡하는 방법을 입니다. import cv2 import numpy as np import dlib def extract_index_nparray(nparray): index = None for num in nparray[0]: index = num break return index img = cv2.imread("bradley_cooper.jpg") img2 = cv2.imread("jim_carrey.jpg") img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) img2_gray = cv2.cvtColor(img2, cv2.COLOR_BGR2GRAY) mask = np..
포인트의 인덱스 번호를 이용하여 다른 특징을 가진 두 얼굴의 같은 포인트 인덱스 번호 위치의 삼각형을 판별하고 해당 삼각형으로 원본 얼굴에서 타겟얼굴로 매칭을 해줍니다. 랜드마크 포인트 배열에서 삼각형의 인덱스를 추출하기 위해 나중에 필요한 함수를 만들었습니다. import cv2 import numpy as np import dlib def extract_index_nparray(nparray): index = None for num in nparray[0]: index = num break return index 교환하려는 두 이미지를 로드하고 그레이스케일로 변환한 다음 얼굴 렌드마크 검출기도 로드합니다. img = cv2.imread("bradley_cooper.jpg") img2 = cv2.imr..