DY N DY
YOLO: Real-Time Object Detection 실습해보기 본문
앞서 우분투에 darknet을 설치했다면 (http://dyndy.tistory.com/245)
이제 yolo를 사용해 볼 수 있다.
이해한 바로는
darknet은 단지 neural network framework일 뿐이고
여기서 각종 RNN, CNN등의 복잡한 분류 알고리즘을 이미 학습된 weight값과 신경망 연산을 통해서 이루어진다고 한다.
그중 유명한 것이 CNN을 이용한 AlexNet이 있는데 이것도 darknet에서 사용해볼 수 있다. (CUDA가 있어야 빠를 것 같다.)
여기선 그런 여러가지 deep learning 알고리즘 중 하나인 YOLO라는 것을 사용해 볼 것이다.
YOLO는 single neural network를 사용하기 때문에 엄청 빠르다는 장점이 있다고 하는데... (http://pjreddie.com/darknet/yolo/)
paper를 읽어도 잘 모르겠으나 아무튼 빠른건 맞는 것 같다.
페이지에 아래와 같이 써있다.
This makes it extremely fast, more than 1000x faster than R-CNN and 100x faster than Fast R-CNN. See our paper for more details on the full system.
엄청 빠른가보다.
아무래도 기존 영상처리 알고리즘에 비해 딥러닝을 이용하면 연산량이 엄청나게 증가하여 느리기 마련이라 제한된 환경에서는 딥러닝을 사용하기 어려웠는데 YOLO를 사용하면 될 것도 같다.
1. YOLO를 사용하기 위해서는 우선 config file과 미리 트레이닝 된 weight file이 필요하다.
config file은 darknetd을 받았다면 이미 darknet/cfg 디렉토리 내에 있을 것이므로 weight파일만 받으면 된다.
darknet 디렉토리에서
1 | wget http://pjreddie.com/media/files/yolo.weights | cs |
받아준다. 700메가가 넘으니 꽤나 오래 걸린다.
2. 실습을 해본다.
1 | ./darknet yolo test cfg/yolo.cfg yolo.weights data/dog.jpg | cs |
아래가 조금 짤렸지만 결과값은 저렇게 나온다.
dog 이미지에 대한 실험은 오른쪽 이미지처럼 나온다. 잘 나온다. 세상이 이렇게나 좋아졌다니..
3. 추가실습
3-1. YOLO도 크다고 해서 tiny한 YOLO도 있다. 미리 트레이닝된 weight가 기존에 비해 1/7도 안된다. 100메가정도..
1 | wget http://pjreddie.com/media/files/tiny-yolo.weights | cs |
실습은 별로 다를 것 없다.
1 | ./darknet yolo test cfg/tiny-yolo.cfg tiny-yolo.weights data/person.jpg | cs |
확실히 그냥 YOLO에 비해 layer수가 반정도로 줄어든 것을 볼 수 있다. (연산수도 확 줄었을 것이다.)
결과는 복잡한 이미지가 아니라서 그런지 이쁘게 잘 나온다.
3-2 옵션도 줄 수 있다.
1 | ./darknet yolo test cfg/yolo.cfg yolo.weights data/dog.jpg -thresh 0 | cs |
threshold값을 0으로 주는 옵션으로 기본적으로는 0.2보다 같거나높은 값만 보여준다고 한다. (-thresh 값)
이렇게 0으로 주면 0보다 같거나 높은 모든 찾아낸 object를 표시해준다. 난잡하다.
실습 끝. 윈도우에서도 해봐야겠다.
'PARK > 영상처리 관련' 카테고리의 다른 글
bomi 개발 시작 (0) | 2016.11.17 |
---|---|
opencv dilate/erode 연산 정리 (1) | 2016.11.08 |
우분투 16.04.1에 darknet 설치 (2) | 2016.10.19 |
우분투 16.04.1에 opencv 3.1 설치 (2) | 2016.10.18 |
open cv 설치 및 세팅 (0) | 2016.09.20 |