컴퓨터공학/YOLO

[YOLO / darkflow] YOLO와 Python을 이용한 object detection (1) - 설치 및 테스트 (+20.08.13. GPU 오류 해결 완료)

Upupa epops 2019. 4. 19. 17:21

 

(+2020.8.13)

CUDA_ERROR_OUT_OF_MEMORY, CUDNN_STATUS_ALLOC_FAILED 오류 해결했습니다.

GPU를 30%정도만 사용하고 배치를 작게 잡으면 됩니다. - 맨 하단 기술함.

 

 

※ 본 포스팅은 darkflow 유투브(https://www.youtube.com/watch?v=PyjBd7IDYZs)를 참고하여 작성되었습니다.

 Windows 10 x64 환경을 사용하고 있습니다.

 

0. YOLO darkflow 설치를 위한 준비

 - Anaconda/CUDA 설치

    : 2019/01/05 - [Laboratory/인공지능] - Python/Tensorflow/Keras를 이용한 Mask RCNN (1)

 - Darkflow GitHub : https://github.com/thtrieu/darkflow

 - Darknet GitHub : https://pjreddie.com/darknet/yolo/

 

 

1. YOLO 설치를 위한 환경설정

 

  1-1. 가상환경 생성

  - 명령프롬프트(cmd)창을 연다.

  - YOLO설치를 위한 가상환경을 생성한다.

  - anaconda와 CUDA, cuDNN 등은 위의 링크 참고하여 설치한다.

 

conda create -n YOLOdark python=3.6 pip 

 

   1-2. 필요 모듈 설치

  - 가상환경 진입하여 필요모듈을 설치한다.

  - darkflow에서는 Python3, tensorflow 1.0, numpy, opencv 3을 이용한다고 되어있다.

  - cython은 파이썬 컴파일러로서 darkflow 빌드를 위해 설치한다.

 

pip install tensorflow-gpu==1.5

pip install tensorflow-gpu==1.5 
pip install scipy numpy opencv-python
pip install cython

 

 

2. YOLO darkflow 다운로드 및 빌드
 - GitHub : 
https://github.com/thtrieu/darkflow

 - GitHub에서 git을 다운받거나 git clone을 이용하여 폴더로 다운로드한다.

 

  2-1. darkflow 다운로드 (web download or git clone 중 1 택)

    - 웹페이지에서 다운받아서 폴더에 압축을 푸는 방법

 

    - git clone을 설치하여 git을 다운로드하는 방법

Conda install –c anaconda git

 

  - 폴더 내에 darkflow 라는 폴더가 생성되면 다운 완료.

 

2-2. 라이브러리 빌드(Build the library)

 - darkflow 폴더로 진입

 - darkflow에서 제공되는 setup.py 파일을 빌드한다.

 

python3 setup.py build_ext --inplace

- bulid 폴더가 생성되는 것을 확인한다.

 

  2-3. 가중치 파일(weights file) 다운로드

   - YOLO darkflow 테스트를 위해 이미 학습되어있는 가중치 파일을 다운로드한다.

   - Darknet 사이트에서 제공되는 YOLOv2 608×608 weights file을 다운받는다.

   - Darknet : https://pjreddie.com/darknet/yolo/

 

노란색 박스의 weights를 클릭하여 다운로드하자.

  - darkflow 폴더에 bin 이라는 폴더를 새로 생성하고, 폴더 안에 yolov2.weights 파일을 넣어준다.

 

 새폴더 bin 생성
생성된 bin 폴더에 가중치파일 넣어주기

 

3. YOLO darkflow 테스트 (GPU or No GPU)
 - videofile.mp4 파일을 폴더에 하나 저장하고, flow 파일을 실행시켜본다.

 

 3-1. CPU로 테스트(no GPU)

  - CUDA, CUDNN 오류가 나지 않는다.

  - 매우매우 느리다. (29초짜리 영상을 24s짜리로 변환하는데 15분정도 걸렸다. 중간에 짜증나서 취소함)

 

python flow --model cfg/yolo.cfg --load bin/yolo.weights --demo videofile.mp4 --saveVideo

 

no GPU version
YOLO를 이용한 동영상 인식 테스트

 * youtube에 있는 레이싱 영상을 녹화하여 구동해본 결과 영상니다.

   (영상 출처 : https://www.youtube.com/watch?v=eSAVhH0T3Ls&t=58s)

 

 

 

3-1. GPU를 사용하는 테스트

  - 오류 수정 예정...(2019/4/19)  오류 해결함

 

- 오류 발생

UserWaring 발생
CUDA_ERROR_OUT_OF_MEMORY, CUDNN_STATUS_ALLOC_FAILED 오류 발생

 

  ( + 2020.8.13)

 

  ※ CUDA_ERROR_OUT_OF_MEMORY, CUDNN_STATUS_ALLOC_FAILED 오류 해결 방법

   →그래픽 카드 사양이...좋지 않기때문에...............생기는 오류같습니다...

     gpu 와 batch를 이렇게 수정하면 됩니다. ㅠㅅㅠ

 

    (dell 7577 inspiron 노트북 gtx 1060max-q 기준)

 

     gpu 1.0 = gpu를 100% 쓰겠다. 이므로 0.3 정도로 하면 가까스로 돌아갑니다.

     0.4부터 제 노트북은 오류가 납니다..

 

python flow --model cfg/yolo.cfg --load bin/yolo.weights --demo videofile.mp4 --saveVideo



python flow --demo videofile.mp4 --model cfg/yolo.cfg --saveVideo --load -1 --gpu 0.3 batch 5

 

커스텀 학습 시에도 

python flow --model cfg/yolo.cfg --load bin/yolo.weights --train --annoation train/Annotations --dataset train/Images --load -1 --gpu 0.3 --batch 5  형태로 넣어주세요.

 

참고로 darkflow는 lableImg 라는 annoation 툴을 사용하셔야 합니다. 

SMALL