본문 바로가기

컴퓨터비전

(11)
컨볼루션 연산(CNN용, pytorch 코드로 보기) 컴퓨터 비젼 분야에서 컨볼루션 연산은 2D 데이터인 이미지의 특징(feature)을 구하는데 사용합니다. 컨볼루션 연산으로 구한 이미지의 특징은 이미지 분류(image classification), 물체 검출(object detection), 물체 추적(object tracking), 물체 분할(object segmentation) 등에 활용할 수 있습니다. 1. 1채널 2D 컨볼루션 녹색: 픽셀(6*6 이미지에 속함) 노란색: 컨볼루션 필터(3*3) 보라색: 컨볼루션 결과 컨볼루션 필터가 이미지의 픽셀들을 순회하면서 컨볼루션 결과(특징맵, 4*4)을 생성합니다. 노란색 필터의 크기를 receptive field라고 하며, 필터의 영역에 해당하는 픽셀들의 정보를 특징으로 나타냅니다. 이는 사람이 이미지의..
Yolo inference C++ example(VS2022+Darknet DLL) Darknet 프레임워크의 프로젝트에서 DLL을 생성하여 추론하는 과정입니다. Darknet dll은 GPU용 솔루션과 CPU용 솔루션이 나눠져있습니다. 각 솔루션을 빌드하면 dll파일이 생성됩니다. OpenCV의 GPU 기능을 사용하려면 OpenCV를 빌드할 때 extra 모듈을 추가해서 CUDA관련 모듈을 함께 빌드해야 합니다. yolo 추론용 DLL은 C++ 클래스 형태로 제공해서 다른 프로젝트로 쉽게 사용할 수 있습니다. 프로젝트는 아래 링크의 프로젝트를 활용합니다. GitHub - AlexeyAB/darknet: YOLOv4 / Scaled-YOLOv4 / YOLO - Neural Networks for Object Detection (Windows and Linux version of Dark..
Darknet + Visual Studio 2019,2022(C++ build) Darknet은 딥러닝 프레임워크입니다. Darknet을 사용하는 대표적인 모델이 Yolo입니다. 윈도우 상에서 손 쉽게 빌드할 수 있게 만들어둔 Git 페이지가 있습니다. 아래 링크에서 프로젝트를 다운받아 적당한 위치에 압축을 해제합니다. Visual Studio 2019에서 빌드 가능합니다. NVIDIA CUDA는 11.1로 설치해주시고 CuDNN도 CUDA 버전에 맞게 추가하시면 됩니다. (타 IDE또는 VS다른 버전, CUDA 다른 버전 관련한 custom build는 다루지 않습니다.) Visual Studio 2022에서 빌드하려면 Nvda.Build.CudaTasks.v11.1.dll를 darknet.sln이 있는 폴더에 가져오시거나 dll 경로를 지정해주셔야 합니다. GitHub - Ale..
Yolov4 inference C++ example(VS2022+OpenCV4.5.5) 22.02.06 NMS(Non Maximum Suppression) 추가, 내용 추가 Opencv3.3.1부터 추가된 readNetFromDarknet() 함수를 사용하여 Yolo 네트워크 정보(cfg파일)와 학습된 가중치 정보(weights)를 불러올 수 있습니다. OpenCV로 영상과 Yolo 모델을 읽어와서 읽은 영상 내의 물체를 검출합니다. cfg와 weights파일은 아래 사이트에서 다운받으실 수 있습니다. AlexeyAB/darknet: YOLOv4 / Scaled-YOLOv4 / YOLO - Neural Networks for Object Detection (Windows and Linux version of Darknet ) (github.com) GitHub - AlexeyAB/darkn..
NMS(Non Maximum Suppression) 겹치는 바운딩 박스(물체 검출 영역)들에 대해서 가장 confidence가 높은 바운딩 박스만 남기는 방법입니다. Yolo같은 경우 아래 그림과 같이 어떤 물체에 대해서 여러 개의 바운딩 박스가 검출됩니다. NMS(Non Maximum Suppression)를 사용하면 중복되는 바운딩 박스들을 없앨 수 있습니다. 겹치는 정도가 바운딩 박스를 제거하는 조건이 됩니다. 어느 정도 겹쳐야 되는가에 대한 판단 중 하나로 IOU(Intersection Over Union)를 사용합니다. IOU는 두 사각형이 위치상으로 어느 정도 유사한지 알 수 있는 측정 척도 중 하나입니다. 겹치는 정도를 알 수 있습니다. IOU(Intersection Over Union) (tistory.com) NMS 처리 후 결과입니다. ..
핀홀 카메라 모델(pinhole camera model) CS231A: Computer Vision, From 3D Reconstruction to Recognition (stanford.edu) CS231A: Computer Vision, From 3D Reconstruction to Recognition web.stanford.edu CS231A 수업의 요약본을 정리했습니다. 컴퓨터 비젼이나 영상 처리 등의 분야에서는 현실 공간(3D)에서 이미지 공간(2D)으로 영상 데이터를 받아옵니다. 핀홀 카메라 모델은 카메라 구경(aperture) 크기가 최소인 상황에서 3D 물체의 점들이 2D 이미지 평면에 투영되는 관계를 설명하기 위한 모델입니다. 핀홀 카메라는 아주 작은 카메라 구경(aperture)로 빛이 통과한다고 가정합니다. 그래서 현실의 3D 물체와 fi..
Shortcut Layer Yolov3, Darknet-53[1]에서 사용된 레이어입니다. shortcut layer는 학습의 효율을 높이기 위해서 사용합니다. 문제: 그레이디언트 배니싱(vanishing gradients) 출력단의 오차가 지속적인 경사하강법을 거치면서 입력단쪽으로 전달되는 값들이 사라지는 문제 딥러닝 네트워크에서 층이 깊어질수록 그레이디언트 배니싱(vanishing gradients) 현상이 심해집니다. 이 문제로 네트워크의 오차가 커지게 됩니다. 개선: shortcut layer 적용 shortcut layer를 적용하여 학습과 추론 각각에 대한 error를 줄이는 효과가 있다는 방법이 제시되었습니다.[2] 또한 연산이 단순히 값들을 더하는 것이라 덧셈 연산만 추가되고 별도의 파라미터가 필요없다는 이점이 있습..
IOU(Intersection Over Union) IOU는 두 사각형이 위치상으로 어느 정도 유사한지 알 수 있는 측정 척도 중 하나입니다. 그림으로 살펴보면 아래와 같습니다. IOU = 사각형이 겹치는 부분의 넓이(주황색 사각형) / 사각형을 합친 부분의 넓이(녹색 사각형) IOU는 0부터 1까지의 값을 가집니다. 두 사각형이 완전히 일치하면 겹치는 사각형과 합친 사각형이 같아지므로 IOU는 1이 됩니다. 반면에 두 사각형이 겹치는 부분이 없으면 겹치는 사각형 넓이가 0이므로 IOU는 0이 됩니다. 두 사각형이 1에 가까울수록 많이 겹치고 위치상으로 더 관련이 있을 것으로 해석할 수 있습니다. 활용예시 - Object Detector에 대한 성능 평가 일반적으로 두 사각형 중 하나는 GT(Ground Truth), 나머지 하나는 측정한 값으로 IOU를..