딥러닝 Windows 10에서 YOLO 환경 구성하기.
페이지 정보
본문
안녕하세요. 엔지엠소프트웨어입니다. [ 이전 글 ]에서 도커 컨테이너로 CentOS에 Darknet YOLO를 설치해서 간단하게 테스트를 진행했습니다. 정상적으로 테스트는 가능했으나 성능 이슈로 인해 CUDA와 cuDNN을 설치하려고 했는데요. 예상하지 못한 문제가 발생했습니다. Host와 NVIDIA Driver가 호환되지 않는다는겁니다. 리눅스에서는 Host와 Container가 드라이버를 공유할 수 있지만, 윈도우 환경에서는 Container가 VM에서 실행되기 때문에 드라이버를 공유할 수 없더군요^^; 몇일을 Container에 NVIDIA Driver를 설치하기위해 삽질한걸 생각하면... 눈물이 앞을 가립니다ㅠㅠ;
언젠가는 윈도우 환경의 Docker에서 NVIDIA 드라이버를 설치할 수 있는 솔루션이 나오겠죠? 그때가서 다시 알아보기로 하고, 우선은 윈도우 환경에서 욜로(YOLO)를 구성하고 학습하는 방법을 알아봐야겠습니다. 이 내용을 진행하려면 아래와 같은 환경이 구성되어 있어야 합니다.
테스트 환경
- Windows 10 Pro 64bit
- Visual Studio 2019 Community
- CUDA 11+
- cuDNN 11+
- OpenCV 4+
1. CUDA, cuDNN 설치하기
http://ngmsoftware.com/bbs/board.php?bo_table=tip_and_tech&wr_id=102
2. OpenCV 설치하기
OpenCV를 설치하기 위해 [ 공식 사이트 ]로 이동합니다. 그리고 Releases를 클릭하세요.
Windows를 클릭하세요. 다운로드 페이지로 이동되고, 5초 후 자동으로 다운로드가 진행됩니다.
기본 위치에 압축을 풀어줍니다.
그리고, 미리 빌드된 폴더만 C:\OpenCV-4.4.0에 복사합니다.
Visual Studio에서 OpenCV를 테스트하려면 아래 링크를 참고하세요.
http://wearedev.net/217?PHPSESSID=06e960d955e2edd5a897ab3699ec5500
3. 다크넷 설치하기
다크넷 프로젝트를 다운로드하기 위해 깃헙으로 이동합니다.
https://github.com/AlexeyAB/darknet
Visual Studio 2019를 관리자 권한으로 실행합니다. 그리고, Darknet 솔루션 파일을 열어주세요.
darknet 프로젝트에서 우클릭 후 속성을 선택하세요.
4. 다크넷 비주얼 스튜디오 설정
CUDA C/C++이 있는지 확인하세요.
CUDA C/C++이 없으면 NVIDIA사이트에서 Nsight를 설치해야 합니다. 설치하기 전 트레이의 NVIDIA Geforce Experence를 종료하고 진행하세요.
https://developer.nvidia.com/gameworksdownload#?dn=nsight-visual-studio-edition-2020-1
Nsight 설치가 완료되면 위 그림처럼 CUDA C/C++이 표시됩니다. 아래 그림을 참고해서 C/C++ > 일반 > 추가 포함 디렉터리 > 편집을 클릭하세요.
아래 그림과 같이 OpenCV, CUDA의 include를 추가하세요. 기존에 입력되어 있던 불필요한 정보는 삭제하세요.
전처리기에 OPENCV와 CUDNN이 있는지 확인하고 없다면, 추가하세요.
링커 > 일반 > 추가 라이브러리 디렉터리 > 편집을 클릭하세요.
OpenCV의 lib 폴더를 추가하세요.
F5를 눌러서 실행해보세요. 에러가 없이 COMMAND가 나타났다 사라지면 정상적으로 컴파일이 된겁니다. 출력 내용을 확인하려면, 솔루션 탐색기에서 솔루션 빌드를 해야 됩니다.
5. 다크넷 샘플 학습 모델 테스트
간단한 테스트를 위해 이미 학습된 YOLO v3의 weight 파일을 다운로드 받아서 컴파일된 폴더에 복사합니다. 위치는 다를 수 있으니 자신의 다크넷 폴더에 넣으세요.
C:\Users\ngmas\Downloads\darknet-master\darknet-master\build\darknet\x64
- yolov3.cfg (236 MB COCO Yolo v3) - requires 4 GB GPU-RAM: https://pjreddie.com/media/files/yolov3.weights
- yolov3-tiny.cfg (34 MB COCO Yolo v3 tiny) - requires 1 GB GPU-RAM: https://pjreddie.com/media/files/yolov3-tiny.weights
- yolov2.cfg (194 MB COCO Yolo v2) - requires 4 GB GPU-RAM: https://pjreddie.com/media/files/yolov2.weights
- yolo-voc.cfg (194 MB VOC Yolo v2) - requires 4 GB GPU-RAM: http://pjreddie.com/media/files/yolo-voc.weights
- yolov2-tiny.cfg (43 MB COCO Yolo v2) - requires 1 GB GPU-RAM: https://pjreddie.com/media/files/yolov2-tiny.weights
- yolov2-tiny-voc.cfg (60 MB VOC Yolo v2) - requires 1 GB GPU-RAM: http://pjreddie.com/media/files/yolov2-tiny-voc.weights
- yolo9000.cfg (186 MB Yolo9000-model) - requires 4 GB GPU-RAM: http://pjreddie.com/media/files/yolo9000.weights
폴더에 컴파일된 폴더에 아래 파일을 더블 클릭해서 실행하세요.
결과가 잘 나옵니다.
리얼타임으로 오브젝트를 디텍팅하는 테스트도 진행해봅니다. 테스트를 위한 mp4 동영상을 알아서 하나 구하세요. 만약, 노트북 또는 캠이 있다면 스트리밍으로 바로 처리도 가능합니다. darknet_yolo_v3_video.cmd 를 더블클릭하여 실행하세요.
아래는 mp4 동영상으로 테스트한 영상입니다. gpu 모드에서 상당히 빠른 디텍팅을 보여주고 있습니다. 잠깐잠깐 등장하는 사람, 의자, 장갑등등... 제대로 표시하고 있습니다. 용량 문제로 이미지를 너무 작게 만들어서 확인이 안되지만~ 직접 테스트해보면 성능에 만족하실거라 생각합니다. 물론, 자신의 데이타셋과 학습 모델로는 어떨지 모르겠지만요^^;
다음에는 학습하기 위한 데이타셋을 만드는 방법에 대해 알아보도록 하겠습니다.
개발자에게 후원하기
추천, 구독, 홍보 꼭~ 부탁드립니다.
여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~
감사합니다~
- 이전글Darknet - YOLO 데이타셋 만들기. 20.08.03
- 다음글Docker Image 사용하기. (NGMsoftware YOLO) 20.07.31
댓글목록
알리님의 댓글
알리 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일 Date안녕하세요. 늦게나마 머신러닝에 발들이기 시작한 학생입니다. 연필이나 지우개 같은 물체를 detection하고, 그 물체의 색깔, 글자같은 특징을 뽑아서 텍스트로 나타내는 작업을 수행하고 싶은데 yolo를 쓰면 될까요? yolo나 다른 object detection 모델들은 전부 다른 종류의 물체들이 사진안에 있고, 각각 어떤 물체인지 결과를 나타내주는데 저는 지우개 하나로만 정해서 작업을 하고싶어서요.. 저같은 경우에는 그냥 classification만 해도 되는걸까요? 그리고 색깔, 글자를 텍스트로 나타내는 작업은 Opencv를 사용하면 될까요? 너무 무지한지라 질문남겨봅니다..ㅠㅠ
ukwon95님의 댓글
ukwon95 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일 Date
메뉴얼 대로 해도 잘 안되시면 아래글 참고해보세요~
이것도 구글링해서 찾은 다른 yolo 환경구성 메뉴얼인데 에러에 대한 대처방법이 몇몇 포함되어있습니다.
----------------------------------------------------
https://swiftcam.tistory.com/344
https://junsik-hwang.tistory.com/43
----------------------------------------------------