YOLOv2 darknet on python(1)

3 minute read

Intro

기존 프로젝트에 사용했던 YOLO v2 darknet 을 windows10에 설치하는 과정을 기록하려고합니다.
포맷 이후에 뒤늦게 논문을 작성해야하는데 성능 테스트 과정에 대한 자료가 ㅠㅠ 부족해서 결국 다시 프로젝트를 빌드해줘야했기 때문입니다.

논문은 정말 프로젝트 개발 중에 함께 작성해야 좋은 것 같습니다..


참고 자료 : https://reyrei.tistory.com/19
다크넷 : https://github.com/pjreddie/darknet
다크넷 for windows : https://github.com/AlexeyAB/darknet

Check Requirments

다크넷 깃허브 저장소에 들어가서 요구사항들을 확인해보면 아래와 같습니다.

OperationSystem

첫 번째, 제 PC OS는 Windows입니다.

CMake

두 번째, CUDA에 사용될 CMake입니다.
먼저 설치가 완료된 분이시라면 visual studio installer를 이용하여 수정을 눌러 아래 창을 확인해주세요.
저 목록들 중 데스크톱용 VC++ 2015.3 v14.00(v140) 도구 집합이 설치되어있어야 합니다.
저의 경우엔 설치가 안되어있으니 설치를 진행하겠습니다.
CUDA 설치 전에 미리 설치가 되어있어야한다네요..

CUDA

세 번째, CUDA를 설치해줍니다.
저의 경우 CUDA10.0과 cuDNN7 이상의 버전은 darkflow를 설치하기 위해서 이미 설치해두었습니다.(참고하러 가기)
위 링크에서 CUDA와 cuDNN 설치 과정만 따라해주시면 됩니다.

OpenCV

네 번째, OpenCV를 설치할겁니다.
OpenCV 호환을 위하여 Visual Studio 2017 내지는 2015버전을 다운받기를 권장합니다.

Visual Studio 2017 v14.0과 호환되는 OpenCV 2.4.13버전은 여기에서 설치 실행 파일을 다운 받았습니다.
이후 C드라이브에 설치를 진행하였구요.

그런데 전 오류가 나길래 opencv 3.4.0으로 설치하여 해결했습니다.
opencv 3.4.0 버전은 여기에서 다운로드할 수 있습니다.

추후 Visual Studio에서 OpenCV 라이브러리를 사용하기 위하여 시스템 환경변수에 추가해줍니다.
내PC > 마우스 우클릭 > 속성 >고급 시스템 설정 > 환경 변수 까지 진입하시면 아래와 같은 팝업창이 확인되실 겁니다.

여기에서 시스템 변수 중 path 변수에 값을 추가해줄 것이므로 path를 선택한 후 편집 버튼을 눌러서 openCV DLL파일이 설치된 경로를 적어주셔야합니다.
저는 C:\에 설치했기 때문에 경로가 아래 캡처에 담긴대로 확인됩니다.

cuDNN

다섯 번째, cuDNN 설치하기입니다.
먼저 설치한 CUDA의 버전과도 호환이되어야하므로 이 부분 역시 이곳을 참고해주세요.
cuDNN의 환경변수 등록까지 마쳐주시기 바랍니다.

etc

여섯 번째, 컴퓨팅 호환 버전이 3.0보다 큰 GPU가 있다고 가정하고 작성한 포스트입니다.

일곱 번째, 전 Windows 환경이므로 MSVC를 통합 설치할 수 있는 Visual Studio 2017을 설치해주었습니다.
제 PC에는 visual studio 2019가 기존에 설치되어있었으나 먼저 프로젝트를 진행 중일 때 개발환경과 동일하게 해주기 위해 2017버전으로 굳이 재설치해주었습니다.
때문에 2019와 2017 패키지 간 영향을 미칠 수 있어 2019를 완전히 삭제하고 2017 버전을 설치해줍니다.

https://visualstudio.microsoft.com/vs/older-downloads/ 에서 로그인 후 visual studio older version인 2017을 다운받을 수 있습니다.

Darknet

여덟 번째, 비로소 Darknet을 설치 및 빌드합니다.
집 해제 후 darknet\build\darknet\darknet.sln을 실행해줍니다. 그러면 vs studio 2017을 통하여 프로젝트가 열릴 텐데 상단 메뉴에서 Release, x64로 변경해줍니다.

openCV 라이브러리를 올바르게 가져다 사용할 수 있도록 프로젝트 속성을 변경해줍니다.

프로젝트 속성 > C/C++ > 일반 > 추가 포함 디렉터리에서 opencv 경로를 넣어줍니다.


프로젝트 속성 > 링커 > 일반 > 추가 라이브러리 디렉터리에서 opencv 라이브러리 경로를 넣어줍니다.

빌드 종속성을 자신의 CUDA 버전에 맞게 수정합니다.

CUDA 10.0을 선택하고 확인버튼을 눌러주세요.

여기까지 완료했다면 ctrl + shift + b를 눌러 프로젝트를 빌드해주면됩니다.

빌드에 실패했다면 darknet.sln 파일과 같은 디렉토리에 있는 daknet.vcxproj파일을 메모장으로 열어 아래와 같이 자신의 툴 버전에 맞게 수정해주시기 바랍니다.

그래도 빌드 실패라면 darknet 폴더 안쪽에 Makefile이라는 파일을 메모장으로 열어 CUDA와 cuDNN과 OpenCV 사용을 1로 세팅해줘야합니다.

  • CUDA를 설치했다면, GPU=1
  • OpenCV를 설치했다면, OPENCV=1
  • cuDNN을 설치했다면, CUDNN=1
    로 변경 후 저장해주세요.

다시 한 번 리빌드 해보면 잘 될 겁니다!

+

하지만 제 경우엔 여전히 빌드가 되지 않아 삽질을 계속해서 해봤는데요ㅠㅠ, 아무래도 아래 캡처의 오류를 미루어보아 visual studio 2017 데스크톱용 VC++ 2015.3 v14.00(v140) 도구 집합이 설치되기 전에 CUDA를 먼저 설치했던 것이 문제가 되는 것 같습니다.


그래서 다시 CUDA를 전체 삭제하고 재설치 해보았습니다.
참고로 삭제하는 방법으로는 제어판에서 CUDA 및 NVIDIA 드라이버를 모두 찾아 삭제한 뒤 C:\Program Files(x86)\나 Program Files 폴더 내에 있는 NVIDA Corporation 폴더를 모두 삭제해주면 됩니다.

저와 같은 상황이시라면 CUDA 재설치 이후 잘 되는지 확인해주시면 됩니다.

그래도… 아래와 같이 오류가 발생하며 잘 되지 않는다면

이렇게 CUDA 툴킷의 설치 경로를 작성해주시면 됩니다.

나중에 알게 된 것 인데, 툴킷 버전을 알맞게 바꿨는데도 프로젝트 로딩부터 잘 되지 않는다면 CUDA 설치 이후에 Visual Studio를 설치한 경우 해당 설정파일이 있는 경로로 바꿔줘야한다고 합니다.

어찌되었든 저는 이렇게 하고 드디어 빌드에 성공했습니다..!

개인이 공부하고 포스팅하는 블로그입니다. 작성한 글 중 오류나 틀린 부분이 있을 경우 과감한 지적 환영합니다!

(수정중) 참고중 https://medium.com/analytics-vidhya/installing-darknet-on-windows-462d84840e5a https://murra.tistory.com/100 [https://medium.com/analytics-vidhya/installing-darknet-on-windows-462d84840e5a] (https://medium.com/analytics-vidhya/installing-darknet-on-windows-462d84840e5a) https://reyrei.tistory.com/19