개발 관련/SW, App 관련

Yolov3을 이용한 Unity 사물인식 제작 정리(2)

소서리스25 2024. 11. 10. 20:06
반응형

Yolov3을 이용한 Unity 사물인식 제작 정리(2)

 

4. Darknet 및 Unity 설치

우선 Unity부터 설치해 준다. 현재는 Unity6까지 해서 최신 버전들이 많겠지만 진행하고자 하는 사항은 Unity의 barracuda를 이용한 것이므로 낮은 버전을 다운로드하여야 한다. 

 

다음의 Unity Archive에서 2018.4.xx를 다운 받는다. 다만, barracuda를 사용하는 것이기 때문에 더 상위버전인 unity 2019도 잘 될 것 같다. 혹시나 그다음 버전들이 Unity plugin package로 barracuda를 지원한다면 될 것도 같다. 하지만 확인을 못해봐서 현재는 알 수 없다.

 

다운로드 아카이브

 

다운로드 아카이브

다운로드 아카이브

unity.com

 

다운을 받게 되면 Unity 뿐만 아니라 Visual Studio도 함께 설치된다. Darknet을 이용한 훈련을 하기 위해서는 먼저 설치되어 있어야 한다.

 

Unity를 설치한 후 이제는 Darket를 설치해야 한다.

설치 방법은 아는것이 별로 없지만 2가지로 본다. git에서 clone을 통한 복제하기, 아니면 git에서 직접 다운로드하기..

본인은 잘 몰라서 일단 직접 압축파일을 다운로드했다. 가장 큰 이유는 코드 만지다가 문제가 생기면 지웠다가 다시 압축을 풀면 되니까..전자의 것도 가능하리라 본다.

 

아래의 유명한 사이트에서 받아보자.

 

YOLO: Real-Time Object Detection

 

YOLO: Real-Time Object Detection

YOLO: Real-Time Object Detection You only look once (YOLO) is a state-of-the-art, real-time object detection system. On a Pascal Titan X it processes images at 30 FPS and has a mAP of 57.9% on COCO test-dev. Comparison to Other Detectors YOLOv3 is extremel

pjreddie.com

 

GitHub - AlexeyAB/darknet: YOLOv4 / Scaled-YOLOv4 / YOLO - Neural Networks for Object Detection (Windows and Linux version of Darknet )

 

GitHub - AlexeyAB/darknet: YOLOv4 / Scaled-YOLOv4 / YOLO - Neural Networks for Object Detection (Windows and Linux version of Da

YOLOv4 / Scaled-YOLOv4 / YOLO - Neural Networks for Object Detection (Windows and Linux version of Darknet ) - AlexeyAB/darknet

github.com

 

깃에서 연계되어 있는 다음의 미리 훈련된 가중치 파일도 함께 다운로드하여 놓는다. 훈련 시 필요하다.

yolo v2 weight
yolo v2-tiny weight
yolo v3 weight
yolo v3-tiny weight

 

모두 다운로드하여 적절한 폴더에 정리해 두었다면 내 시스템을 통한 Darknet으로 훈련시킬 실행파일을 생성해야 한다.

폴더에서 다음의 파일을 클릭하여 Visual Studio를 실행한다.

visual studio 실행
visual studio 실행

 

실행 후 프로젝트 속성을 보면 다음과 같다. 아래것은 이미 설정되어 있어 이에 맞추면 된다.

간혹 unity의 버전에 따라 Visual Studio의 버전이 다를 수 있다. 현재 사용한 버전은 2017이다.

속성 설정하기
속성 설정하기

 

확인할 것은 SDK 버전과 플랫폼 도구집합으로 2017의 세부 버전일 것이다. 그냥 맞춰주면 된다.

 

다음으로 VC++ 디렉터리 설정이다. 이전에 cuda와 cuDNN의 라이브러리등의 설치 경로를 등록해 준다.

 

C/C++에 대한 설정이다. 위와 마찬가지로 각각의 라이브러리등의 경로를 등록해 준다.

 

링커의 일반 설정이다. 마찬가지로 각각의 라이브러리 등의 경로를 등록해 준다.

 

링커의 입력 설정이다. 등록의 경우 텍스트로 작성하면 된다.

 

 

다음으로 프로젝트의 빌드 종속성 설정하기.

솔루션 탐색기 > darknet에서 마우스 우측버튼 > 빌드종속성 선택

 

cuda의 빌드 지정 파일의 위치는 다음과 같은 것으로 등록하면 된다. 

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.0\extras\visual_studio_integration\MSBuildExtensions

 

다음으로 중요한 것은 darknet 폴더에 빌드에 필요한 라이브러리 파일을 복사해 주어야 한다. 

opencv, cuda의 bin 폴더 및 하위폴더(12.3) 등에서 복사해서 darknet/build/darknet/x64 폴더에 넣어주어야 한다.

우측의 .../x64폴더로 복사
우측의 .../x64폴더로 복사

 

동일한 파일을 요구하면서 버전이 다를 경우가 있는데 같은 파일을 복사해서 이름만 변경해 주는 파일도 있다.

본인의 예로 빌드시 cudart64_101.dll이 없다고 나오는데 cudart64_12.dll의 이름만 바꿔서 똑같이 복사해 주면 된다.

 

그리고 다음 파일을 수정해 주도록 한다.

darknet 폴더에 보면 Makefile 파일(파일 확장자 없음)이 있다. 이 파일의 내부를 현재 빌드하는 시스템에 맞춰 다음과 같이 변경한다.

해당 부분만 수정하고 나머지는 그대로 두면 된다.

GPU=1
CUDNN=1
CUDNN_HALF=0
OPENCV=1
AVX=0
OPENMP=0
LIBSO=0
ZED_CAMERA=0
ZED_CAMERA_v2_8=0

# set GPU=1 and CUDNN=1 to speedup on GPU
# set CUDNN_HALF=1 to further speedup 3 x times (Mixed-precision on Tensor Cores) GPU: Volta, Xavier, Turing, Ampere, Ada and higher
# set AVX=1 and OPENMP=1 to speedup on CPU (if error occurs then set AVX=0)
# set ZED_CAMERA=1 to enable ZED SDK 3.0 and above
# set ZED_CAMERA_v2_8=1 to enable ZED SDK 2.X

USE_CPP=0
DEBUG=0

ARCH= -gencode arch=compute_61,code=[sm_61,compute_61]

OS := $(shell uname)

 

현재 펜티엄 골드에서는 AVX를 지원하지 않아 0 값으로 두었다.

 

특히 ARCH 부분은 다음의 nvida 사이트를 참조하여 본인의 GPU에 맞게 수정해 주도록 한다.

CUDA GPUs - Compute Capability | NVIDIA Developer

 

CUDA GPUs - Compute Capability

Explore your GPU compute capability and CUDA-enabled products.

developer.nvidia.com

 

아울러 Visual Studio 설정에서 빠진 사항이 있었는데 여기에도 위와 같이 ARCH에 해당하는 값을 넣어주어야 한다.

 

마지막으로 build 설정을 debug로 되어 있다면 Release로 변경해 준다. 그냥 다 Release로 변경해 준다.

이제 모든 설정은 끝났다. (혹시나 안된 것이 확인된다면 추가 예정)

 

그러면 Visual Studio에서 빌드하면 darkenet.exe 파일이 생성된다.

다음 단계에서 이를 토대로 이제 커스텀 데이터를 통해 훈련을 시도하면 되겠다.

 

다음 포스팅에서 계속...

반응형