Yolov3을 이용한 Unity 사물인식 제작 정리(1)
Yolov3을 이용한 Unity 사물인식 제작 정리(1)
그동안에 Yolo를 이용하여 사물인식을 제작한 모든 과정을 기록으로 남기고자 한다. 분명 시간이 지나면 다 까먹을 것이다.
물론 상위버전들도 있고 더 쉽게 구현이 가능할 수 있으나 주어진 환경과 프로그램 버전의 제약으로 Yolov3으로 진행하게 되었다.
진행은 최종적인 플랫폼인 Android OS의 App에서 작동할 것이므로 Yolov3-tiny 버전으로 할 것이지만 일부 수정 및 보완을 거치게 되면 Yolov2, Yolov2-tiny, Yolov3, Yolov3-tiny에서 호환되어 작동할 수 있다. 결과적으로 Unity의 환경의 App 제작에 따른다.
목차는 다음과 같다.
1. 시스템 확인 및 필수 소프트웨어 설치
2. 환경설정
3. Python(Anaconda3) 및 관련 패키지 설치
4. Darknet 및 Unity 설치
5. 커스텀 데이터셋 준비
6. Darknet 훈련
7. ONNX 컨버팅
8. Unity의 App 설정
9. 빌드 및 테스트
그러면 목차대로 작성해 본다.
1. 시스템 확인 및 필수 소프트웨어 설치
우선 Yolo를 사용하기 위해서는 가장 많이 사용하는 window 시스템에서 진행할 것이다. 여러 형태의 플랫폼으로 사용할 수 있겠으나 일반적으로 사용하기 간편한? Window에서 진행하도록 한다.
현재 진행된 시스템 사양은 다음과 같다. 더 좋은 시스템이면 훈련시간이 상당히 단축될 것이라 판단된다.
CPU : 펜티엄 골드
VGA : nvidia GTX 1050 2GB, Driver Version : 556.12
RAM : 16GB
OS : Windows 10
*그래픽카드 드라이버 버전이 낮다면 업그레이드 시켜줘야 한다.
이제 GTX 1050에 맞는 cuda 버전을 찾아서 설치한다.
cmd 창에서 nvidia-smi를 치면 정보가 나온다. 이를 토대로 설치하면 된다.
이제 GPU의 Cuda와 cuDNN을 사용할 예정이므로 nvidia 사이트에서 다음 버전을 각각 다운로드하여 설치한다.
cuda 12.0.1
cuDNN 9.0 (8.9도 될 것 같다)
CUDA Toolkit Archive | NVIDIA Developer
CUDA Toolkit Archive
Previous releases of the CUDA Toolkit, GPU Computing SDK, documentation and developer drivers can be found using the links below. Please select the release you want from the list below, and be sure to check www.nvidia.com/drivers for more recent production
developer.nvidia.com
https://developer.nvidia.com/rdp/cudnn-archive
cuDNN Archive
Download releases from the GPU-accelerated primitive library for deep neural networks.
developer.nvidia.com
이제는 OpenCV를 설치해 주도록 한다.OpenCV는 3.4.16을 다운로드하여 설치했었는데 왜 이 버전인지는 기억이 안 난다.;;
Darknet에서 필요에 따라 영상처리를 하니 설치해야 한다.
Releases
OpenCV Releases Are Brought To You By Intel Intel is a multinational corporation known for its semiconductor products, including processors that power a wide range of computing devices, from personal computers to servers and embedded systems. Read More Mic
opencv.org
2. 환경설정
기본적인 설치는 끝났으니 설치된 소프트웨어들의 라이브러리들을 어떤 상황에서도 불러올 수 있도록 시스템의 환경변수에 등록해 줘야 한다. 아울러 필요한 것을 복사해서 같이 공유하도록 한다.
- 라이브러리 공유
내컴퓨터의 속성에서 고급 시스템 설정으로 들어가면 환경변수를 설정 할 수 있다.
새로 만들기를 통해서 다음과 같이 변수명과 값을 적용해 준다. 값은 설치된 경로를 입력해 준다.
cuDNN도 마찬가지로 설정해 준다.
그리고 중간에 변수명에 Path가 미리 등록되어 있다. 여기에 라이브러리들을 새로 만들기로 추가 입력해 주어야 한다.
opencv의 경로도 설정해 주며 추후에 설치할 anaconda3의 path도 설정해 준다.
그리고 일단 cuda의 라이브러리를 cuDNN의 경로에 복사해 두었다. bin, lib, include 폴더를 공유하도록 함.
일반적인 시스템 환경 설정은 이쯤이면 되는데 추가되는 사항이 있으면 추가하도록 하겠다.
시스템 설정은 대부분 동일한 방식이라서 다른 블로그를 찾아도 많이 나오니까 쉽게 참고할 수 있다.
3. Python(Anaconda3) 및 관련 패키지 설치
이제 python을 설치하면 되는데 기본적인 패키지 등의 관리를 편하게 해주는 anaconda를 설치하면 된다.
Anaconda | The Operating System for AI
Anaconda | The Operating System for AI
Democratize AI innovation with the world’s most trusted open ecosystem for data science and AI development.
www.anaconda.com
현재 본인의 설치 버전은 아래와 같다. 설치 버전에 따라 python의 버전이나 기타 설치 패키지가 다를 수 있다.
아무래도 시스템이 오래되다 보니 최신것과의 문제가 있을 것 같아 구버전들을 설치하게 되었다.
Anaconda3-2020.02-Windows-x86_64
python : 3.7.6
설치 시 위의 python 버전과 다르다면 업그레이드나 다운그레이드를 해야 한다.
각각의 패키지 버전들이 잘 맞아야 오류가 없다. 뭐가 안 맞으면 정말 해결하기 힘든 많은 오류들이 발생한다. 꼬리에 꼬리를 무는 오류들이다.
anaconda를 설치하는 방법은 일반적인 프로그램 설치와 동일하다. 다만 설치 시 다음을 체크하는 편이 좋다.
설치를 다 하고 나면 시작프로그램에서 Anaconda3 (64-bit) 폴더가 생성될 것이다. 해당 폴더에 보면 jupyter notebook도 설치되어 있다.
처음 ONNX의 컨버팅을 시도할때 jupyter notebook를 주로 활용했었다. 버전별 명령어 히스토리 기능 및 관리 기능이 잘 되어 있어서 잘 활용했었다.
다만, object의 detecting 방식으로 onnx 모델로 컨버팅 했지만 unity에서 되질 않아 쓰지 않게 되었다. 이상하게 같은 환경인데도 프롬프트에서 잘 되던 게 jupyter notebook에서는 안된다. 하지만 classifier 방식은 컨버팅이 아주 잘 되니 그쪽은 문제가 없다. Teachable Machine과 같이 사용하면 쉽게 변환할 수 있다.
일단 설치가 다 되었으면 주로 사용할 것은 Anaconda Prompt 이다. 실행하면 윈도우 cmd와 같은 창이 나온다.
이제 패키지들을 설치할텐데 중요한 것은 현재의 default(base)에다가 설치하지 말고 가상의 환경을 만들어서 설치하는 것이 좋다.
시행착오를 많이 겪었는데 그때마다 어떤 패키지의 버전이 잘못되었는지 잘 몰라서 갈아엎는 경우가 많았다. Anaconda를 몇 번을 설치했는지...
따라서 가상환경으로 하면 해결하기 어려운 치명적인 오류가 발생해도 가상환경 자체는 통째로 지웠다가 다시 만들 수 있으니 훨씬 용이하다.
이제 다음의 패키지들을 설치해 준다. 패키지의 순서는 추후 Darknet 설치 후 해줘도 되는데 일단 순서상 지금 설치한다.
우선 다음 명령어를 통해 가상환경을 만들어준다.
conda create -n tf python=3.7.6
tf라는 가상환경을 만들어 주는 것이다.
그리고 가상환경을 활성화시켜주어야 한다.
conda activate tf
그러면 드라이브폴더명 앞에 (base)가 (tf)로 변경된다.
이제부터 패키지를 각각 설치한다. 설치된 버전이 매우 중요하다. 가장 많은 시행착오를 겪은 것이 버전차이로 인한 오류들이다.
python = 3.7
tensorflow / tensorflow-estimator = 1.15.1
keras = 2.3.0
numpy = 1.18.5
onnx = 1.14.1
keras2onnx = 1.7.0
h5py = 2.10.0 >> uninstall 후 재설치
protobuf > 3.20.2 >> uninstall 후 재설치
coremltools = 4.1
onnxmltools = 1.3.2
설치시 먼저 "conda list"로 현재 설치된 패키지들의 버전을 확인해 본다.
그다음 버전이 다르다면 "pip uninstall 패키지명"으로 제거해 주고 맞는 버전을 다시 설치해 준다.
python의 설치 명령어는 간단하게 아래와 같다.
pip install 패키지명==version
conda install 패키지명=version
모든 과정을 다 거쳤음에도 패키지의 오류가 난다면 위의 python을 제외한 나머지 패키지들을 순차적으로 다시 설치해 본다.
모든 패키지들의 리스트를 텍스트파일로 만들어서 한번에 설치할 수 있다.
이외에도 간혹 무슨 모듈이 없다면서 오류가 나는데 내용을 잘 보면 요구되는 모듈명이 나오는 경우가 있다. 그 모듈을 설치하면 간단히 해결되기도 한다.
다음 포스팅에서 계속...