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드라이브에 설치를 진행하였구요.

추후 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