본문 바로가기
개발Study/사물인식

yolo v3 트레이닝 - 환경구성

by happy90 2021. 11. 17.
SMALL

window에서 yolo training을 하기 위한 환경구성.
필요한 것들 설치 후 yolo detecting sample code 실행까지 해본다.

 

< 환경구성순서 요약 >
1. visual studio 설치
2. cuda toolkit & cudnn설치
3. opencv 설치
4. darknet build

 

1. visual studio 설치

https://visualstudio.microsoft.com/ko/downloads/

 

Visual Studio Tools 다운로드 - Windows, Mac, Linux용 무료 설치

Visual Studio IDE 또는 VS Code를 무료로 다운로드하세요. Windows 또는 Mac에서 Visual Studio Professional 또는 Enterprise Edition을 사용해 보세요.

visualstudio.microsoft.com

opencv를 빌드하기 위해선 c++컴파일러가 설치되어있어야 하므로 꼭 선택한다.

2. cuda toolkit & cudnn설치
 cuda는 NVIDIA GPU 사용시 설치.
 올바른 버전을 설치하기 위해 본인 PC의 GPU가 cuda 몇버전을 지원하는 그래픽카드인지 알아야 한다.
 장치관리자 - 디스플레이 어댑터에서 확인. 내 PC의 GPU는 GTX960.
 아래 페이지에서 GTX960이 cuda 몇버전을 지원하는지 찾는다.

https://en.wikipedia.org/wiki/CUDA#Version_features_and_specifications

compute capability(version)이 5.2이다.
이 표의 위로 가서 5.2를 찾아본다.

5.2가 포함되는 SDK를 찾아본다. 맨 마지막의 SDK 11.1 - 11.5까지 사용가능한 모양이다.
그렇지만 나는 최신버전을 믿지 못하는 성격이라 11.1.0으로 받아보기로 함.

https://developer.nvidia.com/cuda-toolkit-archive

위 링크에서 다운받으면 된다. 로그인 필수. 윈도우즈용 다운로드 후 실행시키면 설치된다.

설치에 한 20분 안되게 소요된 듯.

설치완료 후 cudnn 설치.

https://developer.nvidia.com/rdp/cudnn-archive

알맞은 버전 다운받아서 압축해제.
내용물 전체를  앞에서 설치한 cuda toolkit경로에 복사해주면 끝이다.

설치가 잘 되었는지 확인하기 위해 명령프롬프트를 열어 명령어를 입력한다.

nvcc --version

설치된 버전 정보가 나타난다.

 

3. opencv 설치
cuda toolkit 및 cudnn을 설치완료하고 나면 opencv 빌드시 옵션으로 CUDA를 줄 수 있다.
있는 GPU 써먹어야지.

https://github.com/opencv/opencv

opencv 다운받은 후 압축해제.

https://github.com/opencv/opencv_contrib

확장모듈 다운받은 후 압축해제.


CMAKE GUI 실행. 없으면 설치. https://cmake.org/download/

 

opencv source code 경로를 선택하고, 빌드결과물을 저장할 경로를 선택한다. 나는 build 폴더를 만들었다.
그리고 왼쪽 아래의 Configure버튼 클릭.
그러면 앞에서 설치한 visual studio version이 선택되어 있다. Finish 클릭.

그럼 이제 configure가 진행된다. 수십초 소요됨. 아래는 configuration 결과이다.

cuda관련 옵션을 찾아서 value에 체크를 해주어야 한다.
search에 cuda를 입력하면 나온다.

내가 사용할 python version도 확인하고.
java필요없으니까 제외하고.

opencv와 함께 다운로드받았던 opencv contrib 경로 지정 필요.

darknet 빌드시 opencv추가하면 opencv_world.lib를 찾는다.
그것을 모르고 걍 빌드했다가 지금 opencv만 몇번째 빌드하는지.


Generate 버튼을 누르면 아래와 같이 뜬다.

앞에서 만든 build 폴더를 확인해보면 visual studio solution file이 생성된 것을 볼 수 있다.

얘를 실행시키면 프로젝트가 열린다.
솔루션탐색기에서 CMakeTargets - INSTALL의 마우스 오른쪽 클릭하여 빌드를 클릭한다.

빌드에 한 세네시간 소요...되었는데 cudnn test build하다가 실패했다.
cmake를 다시 열어 test관련 빌드를 제거하고 다시 빌드 진행하여 빌드에 성공했다.

이후 임시저장이 날아가서 다시 작성하는 바람에 중간중간 내용이 없을 수 있습니다...

4. darknet build

아래 사이트에서 소스코드를 다운로드받은 후 압축해제한다.
https://github.com/AlexeyAB/darknet

압축해제 후 build - darknet 폴더 아래에 darknet.sln 파일을 실행시켜준다.

솔루션탐색기의 darknet 마우스우클릭 - 속성을 누른다.

속성페이지에서 windows SDK버전을 최근 설치된 버전으로 선택하고, 플랫폼 도구 집합은 현재 visual studio version을 선택한다.

C/C++ - 일반 - 추가 포함 디렉터리 (편집..)을 눌러 아래와 같이 입력해준다.
사실 직접 입력한거 몇개 없는데 언제 저리 포함된건지 모르겠다.

C/C++ - 전처리기 - 전처리기 정의

링커 - 일반 - 추가 라이브러리 디렉터리 (편집..)을 눌러 아래와 같이 입력해준다.

 

build target 설정. 요즘 x64아닌 컴터가 보기힘들지. 본인 컴터 사양에 맞춰 설정하기.

그리고 빌드를 하는데, 빌드하다가 에러가 발생하면 자세한 내용은 build - darknet - x64 - debug - darknet.log에서 확인할 수 있다.

 

cuda architecture관련 에러가 있었던 것 같음.
이 에러는 darknet.vcxproj를 txt파일로 열어서 지원하지 않는 architecture를 삭제해줘서 해결했다.

이런 식으로 vcxproj파일을 수정해줘서 해결한게 몇번 있었던듯.
다행히도 darknet은 1분이면 빌드완료된다.

빌드가 완료되면 아래와 같이 darknet.exe가 생성된다.

 

darknet으로 사물인식 테스트해보기.
이거하는데 msvcp140d.dll없다고 나와서 당황했었다.
visual studio 설치폴더 아래에 있는 비슷한이름 네개정도 없다고 떴음.
해당 경로를 환경변수에 넣어주어 해결했다.

ㅎㅎ... 첨에 x64말고 x86넣어서 다른 에러에 삽질하다가 뒤늦게 발견하고 고쳐서 해결했음.ㅡㅡ

yolov3.weights 다운로드: https://pjreddie.com/darknet/yolo/

일단 sample로 인식 테스트하는 명령어:

darknet detector test data/coco.data yolov3.cfg yolov3.weights data/dog.jpg

명령프롬프트에서 darknet.exe가 있는 경로로 가서 위 명령어를 입력.

 

인식결과:

에러가 끝이 없네?

no kernel image is available for execution on the device darknetPC와 GPU간 환경 설정이 잘못된 것이라고 한다.

도움이 될까 싶어 darknet 실행 시작부분을 캡쳐해둠. compute_capability = 520인데, 내가 빌드할때 입력한게 뭐더라?

다르다. 다시 입력하고 빌드해서 실행시켜보자. 프로젝트파일 너덜더널해짐.

 

그리고 다시 detect 시도

드디어 됐다.

어우 진짜힘드네

이제 yolo training 해봐야지~^^

LIST

'개발Study > 사물인식' 카테고리의 다른 글

Object Detection - YOLO & R-CNN  (0) 2021.11.09

댓글