본문 바로가기
졸업 작품 (Capstone)/Theft Chaser (YOLO)

[8] 우분투(Ubuntu) 16.04.1 LTS 에 YOLOv3 설치 및 예제 실행

by Late Bloomer Lee 2019. 6. 16.
728x90

YOLO 개발자의 사이트입니다 ( 여기도 설명 잘 되어있습니다 ) -> https://pjreddie.com/darknet/yolo/

 

YOLO: Real-Time Object Detection

YOLO: Real-Time Object Detection You only look once (YOLO) is a state-of-the-art, real-time object detection system. On a Pascal Titan X it processes images at 30 FPS and has a mAP of 57.9% on COCO test-dev. Comparison to Other Detectors YOLOv3 is extremel

pjreddie.com

바로 설명 들어가도록 하겠습니다.

 

(1) 터미널을 켜서 이 경로에서 작업을 해야 한다. ~/opencv/opencv-3.2.0/build 

 

(2) ~/opencv/opencv-3.2.0/build 폴더(build)에서 아래 코드를 차례대로 입력한다.

 

sudo apt install git   // git 설치
git clone https://github.com/pjreddie/darknet.git cd darknet    //darknet 폴더로 이동
make

 

(3) vi Makefile // Makefile 이란 파일을 열어준다. 아래 사진의 빨간 네모 박스와 같이 1로 수정해주고 저장한다.

 

일전에 우리는 GPU, cuDNN, OpenCV 를 모두 설치했고, 사용할 것이므로 1로 바꿔준다.

 

(4) 수정이 끝났으면 다시 make 명령어를 입력해준다.

 

(5) YOLO 기본 가중치 데이터( 파일 확장자에 .weights 가 붙음 )를 가져오자. 다운 받는데 시간이 좀 걸릴 것이다.

   

// 버전 중에 가벼운 버전인 tiny 버전이 있다.
// 이미지 파일은 결과가 괜찮게 나와도, 동영상이나 웹캠 테스트시 fps만 잘 뽑힐뿐,
// 객체 인식에는 영 아니다...

wget https://pjreddie.com/media/files/yolov3.weights   // 기본 버전
wget https://pjreddie.com/media/files/yolov3-tiny.weights   // tiny(가벼운) 버전

 

(6) 그다음엔 이 명령어를 실행해보자. 이미 학습된 가중치 데이터를 가져와서 객체(물체)에 대한 인식 결과를 보여준다.

 

./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg   // 기본 버전
./darknet detect cfg/yolov3-tiny.cfg yolov3-tiny.weights data/dog.jpg   // tiny 버전으로 실행시

 

*(6 - 1) 만약 아래와 같은 오류가 난다면, 

 

./darknet: error while loading shared libraries: libopencv_highgui.so.3.2: cannot open shared object file: No such file or directory

 

 

아래 코드를 차례대로 입력해주자. 그 다음 실행해보자.

 

sudo find / -name "libopencv_core.so.3.2*"
sudo ldconfig -v

 

*(6 - 2) 그런데! 또 아래와 같은 오류가 생긴다면??? 그래픽 카드 성능이 안 좋은 것이다. 물론 해결책이 있다.

 

CUDA Error: out of memory
darknet: ./src/cuda.c:36: check_error: Assertion `0' failed.
중지됨 (core dumped)

 

 

- 터미널에서 현재 디렉토리인 darknet에서 cd cfg( cfg 폴더에 들어간다 ) 입력.

- vi yolov3.cfg ( yolov3.cfg 파일을 열어준다 ) 입력.

- 그러면 아래와 같은 사진이 나온다.

 

위 사진은 이미 수정한 상태다.

 

- 여기서 잠깐 설명!

 

[ batch : 한 번에 몇 장을 처리할지 정한다. 웬만하면 건드리지 말자. ]
[ subdivisions : batch를 이 값만큼 나누어서 처리한다. 이 부분을 적절히 수정해줄 필요가 있다. ]
[ height, width : 입력되는 이미지의 크기다. ]

[ learning_rate=0.001 : 그래픽 카드가 1개 그대로 두자. 만약 2개를 사용한다면 0.0005 가 된다. 4개는 0.00025]

 

- 난 여기서 subdivisions, height, width를 건드려주었다.

- height, width의 해상도가 낮을수록 fps는 더더욱 올라간다.

- 적절히 수정이 끝났다면 esc:wq 혹은 shift+z+z 입력 후에 빠져나온다.

 

(7) cd .. 입력 후에, 다시 darknet 폴더로 돌아와 준다. 그리고 아래 명령어를 쳐서 예제를 다시 실행해보자.

 

./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg

 

(8) 아래와 같은 사진들이 나오면 성공한 것이다. 인식률이 %로 나온다.

 

 

(9) 종료는 터미널에서 키보드 Ctrl + c 를 눌러주면 된다.

 

(10) 실행이 끝나면 darknet 폴더에 predictions.jpg 파일이 생성된다. 아까 실행한 dog.jpg 이미지다.

 

 

 

// 띄어쓰기 조심!!!

* 동영상 실행 시 : ./darknet detector demo cfg/coco.data cfg/yolov3.cfg yolov3.weights [동영상 이름.확장자] 

* 웹캠 실행 시 : ./darknet detector demo cfg/coco.data cfg/yolov3.cfg yolov3.weights 

 

다음 포스팅에는 YOLO 및 Darknet 폴더와 파일에 대한 간략한 분석을 하겠습니다.

 

 

 

참고 블로그 : https://juni-94.tistory.com/9?category=802791 

728x90

댓글