NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • 학습
  • 매뉴얼

    학습


    딥러닝 Windows 10에서 YOLO 환경 구성하기.

    페이지 정보

    본문

    안녕하세요. 엔지엠소프트웨어입니다. [ 이전 글 ]에서 도커 컨테이너로 CentOS에 Darknet YOLO를 설치해서 간단하게 테스트를 진행했습니다. 정상적으로 테스트는 가능했으나 성능 이슈로 인해 CUDA와 cuDNN을 설치하려고 했는데요. 예상하지 못한 문제가 발생했습니다. Host와 NVIDIA Driver가 호환되지 않는다는겁니다. 리눅스에서는 Host와 Container가 드라이버를 공유할 수 있지만, 윈도우 환경에서는 Container가 VM에서 실행되기 때문에 드라이버를 공유할 수 없더군요^^; 몇일을 Container에 NVIDIA Driver를 설치하기위해 삽질한걸 생각하면... 눈물이 앞을 가립니다ㅠㅠ;

    u5LSvfQ.jpg

     

     

    언젠가는 윈도우 환경의 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를 클릭하세요.

    f3N0S3y.png

     

     

    Windows를 클릭하세요. 다운로드 페이지로 이동되고, 5초 후 자동으로 다운로드가 진행됩니다.

    dM0rjz4.png

     

     

    기본 위치에 압축을 풀어줍니다.

    Mnpt5k5.png

     

     

    그리고, 미리 빌드된 폴더만 C:\OpenCV-4.4.0에 복사합니다.

    0DG8iXe.png

     

     

    Visual Studio에서 OpenCV를 테스트하려면 아래 링크를 참고하세요.

    http://wearedev.net/217?PHPSESSID=06e960d955e2edd5a897ab3699ec5500

     

    3. 다크넷 설치하기

    다크넷 프로젝트를 다운로드하기 위해 깃헙으로 이동합니다.

    https://github.com/AlexeyAB/darknet

    OhnrOg7.png

     

     

    Visual Studio 2019를 관리자 권한으로 실행합니다. 그리고, Darknet 솔루션 파일을 열어주세요.

    i4do28P.png

     

     

    darknet 프로젝트에서 우클릭 후 속성을 선택하세요.

    dLSMlPP.png

     

     

    4. 다크넷 비주얼 스튜디오 설정

    CUDA C/C++이 있는지 확인하세요.

    xO4dm2U.png

     

     

    CUDA C/C++이 없으면 NVIDIA사이트에서 Nsight를 설치해야 합니다. 설치하기 전 트레이의 NVIDIA Geforce Experence를 종료하고 진행하세요.

    https://developer.nvidia.com/gameworksdownload#?dn=nsight-visual-studio-edition-2020-1

    wTusZO8.png

     

     

    Nsight 설치가 완료되면 위 그림처럼 CUDA C/C++이 표시됩니다. 아래 그림을 참고해서 C/C++ > 일반 > 추가 포함 디렉터리 > 편집을 클릭하세요.

    ypI7jID.png

     

     

    아래 그림과 같이 OpenCV, CUDA의 include를 추가하세요. 기존에 입력되어 있던 불필요한 정보는 삭제하세요.

    xtJSH2y.png

     

     

    전처리기에 OPENCV와 CUDNN이 있는지 확인하고 없다면, 추가하세요.

    BISTUYA.png

     

     

    링커 > 일반 > 추가 라이브러리 디렉터리 > 편집을 클릭하세요.

    Xv5rjZR.png

     

     

    OpenCV의 lib 폴더를 추가하세요.

    nxFYeCT.png

     

     

    F5를 눌러서 실행해보세요. 에러가 없이 COMMAND가 나타났다 사라지면 정상적으로 컴파일이 된겁니다. 출력 내용을 확인하려면, 솔루션 탐색기에서 솔루션 빌드를 해야 됩니다.

    tq4MHCq.png

      

      

    5. 다크넷 샘플 학습 모델 테스트

    간단한 테스트를 위해 이미 학습된 YOLO v3의 weight 파일을 다운로드 받아서 컴파일된 폴더에 복사합니다. 위치는 다를 수 있으니 자신의 다크넷 폴더에 넣으세요.

    C:\Users\ngmas\Downloads\darknet-master\darknet-master\build\darknet\x64

      

    폴더에 컴파일된 폴더에 아래 파일을 더블 클릭해서 실행하세요.

    KaMkyzq.png

     

     

    결과가 잘 나옵니다.

    8SOw1Tv.png

     

     

    리얼타임으로 오브젝트를 디텍팅하는 테스트도 진행해봅니다. 테스트를 위한 mp4 동영상을 알아서 하나 구하세요. 만약, 노트북 또는 캠이 있다면 스트리밍으로 바로 처리도 가능합니다. darknet_yolo_v3_video.cmd 를 더블클릭하여 실행하세요.

    eEygwlY.png

     

     

    아래는 mp4 동영상으로 테스트한 영상입니다. gpu 모드에서 상당히 빠른 디텍팅을 보여주고 있습니다. 잠깐잠깐 등장하는 사람, 의자, 장갑등등... 제대로 표시하고 있습니다. 용량 문제로 이미지를 너무 작게 만들어서 확인이 안되지만~ 직접 테스트해보면 성능에 만족하실거라 생각합니다. 물론, 자신의 데이타셋과 학습 모델로는 어떨지 모르겠지만요^^;

    zvxuG1F.gif

     

     

    다음에는 학습하기 위한 데이타셋을 만드는 방법에 대해 알아보도록 하겠습니다.

     

    개발자에게 후원하기

    MGtdv7r.png

     

    추천, 구독, 홍보 꼭~ 부탁드립니다.

    여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~

    감사합니다~

     

    • 네이버 공유하기
    • 페이스북 공유하기
    • 트위터 공유하기
    • 카카오스토리 공유하기
    추천0 비추천0

    댓글목록

    profile_image

    알리님의 댓글

    no_profile 알리 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일 Date

    안녕하세요. 늦게나마 머신러닝에 발들이기 시작한 학생입니다. 연필이나 지우개 같은 물체를  detection하고, 그 물체의 색깔, 글자같은 특징을 뽑아서 텍스트로 나타내는 작업을 수행하고 싶은데 yolo를 쓰면 될까요? yolo나 다른 object detection 모델들은 전부 다른 종류의 물체들이 사진안에 있고, 각각 어떤 물체인지 결과를 나타내주는데 저는 지우개 하나로만 정해서 작업을 하고싶어서요.. 저같은 경우에는 그냥 classification만 해도 되는걸까요? 그리고 색깔, 글자를 텍스트로 나타내는 작업은 Opencv를 사용하면 될까요? 너무 무지한지라 질문남겨봅니다..ㅠㅠ

    profile_image

    엔지엠소프트웨어님의 댓글

    엔지엠소프트웨어 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 작성일 Date

    YOLO를 사용해서 Detection+Classification으로 감지된 물체의 위치를 찾아냅니다. 그리고, Color Picker로 색깔을 뽑아내면 됩니다.
    Opencv는 필요 없을듯하고 YOLO와 Color Picker로 색은 알 수 있어요. 글자 인식은 테서랙트를 사용해보세요.

    profile_image

    ukwon95님의 댓글

    no_profile ukwon95 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일 Date

    메뉴얼 대로 해도 잘 안되시면 아래글 참고해보세요~
    이것도 구글링해서 찾은 다른 yolo 환경구성 메뉴얼인데 에러에 대한 대처방법이 몇몇 포함되어있습니다. 
    ----------------------------------------------------
    https://swiftcam.tistory.com/344
    https://junsik-hwang.tistory.com/43
    ----------------------------------------------------