Darknet, YOLO 란?
1. Darknet, YOLO?
1) Darknet
- Joseph Redmon이 독자적으로 개발한 신경망 프레임워크(neural network framework)로서 dnn(deep neural network)들을 학습시키고 실행시킬 수 있는 틀(framework)이다.
- C, CUDA로 작성된 오픈 소스, 연산이 빠르고 설치가 쉽고 CPU 및 GPU 연산을 지원한다.
2) YOLO(You Only Look Once)
- YOLO는 빠르게 이미지에서 객체를 탐지하는 모델, 이 또한 Joseph Redmon이 개발되었다.
- 기존 모델들 보다 더 높은 정확도를 추구하는 것이 아닌, 근접한 정확도를 가지면서 더 많은 양의 이미지를 처리할 수 있는 실시간 객체 탐지를 하고자 등장했다.
- YOLOv1, v2, v3까지 개발하고 잠정 중단했지만(2020.02.21) 현재 다른 개발자에 의해 v4, v5까지 나온 상태이다.
3) 관련 자료 링크
Darknet: Open Source Neural Networks in C
Nightmare Use Darknet's black magic to conjure ghosts, ghouls, and wild badgermoles. But be warned, ye who enter here: no one is safe in the land of nightmares.
pjreddie.com
You Only Look Once — 다.. 단지 한 번만 보았을 뿐이라구!
이번 포스팅에서는 객체 탐지(Object Detection)분야에서 많이 알려진 논문인 “You Only Look Once: Unified, Real-Time Object Detection (2016)”을 다룬다[1]. 줄여서 흔히 YOLO라고…
medium.com
2. Darknet with ROS
1) ROS에서도 Darknet을 구성해서 YOLO를 쓸 수 있게 오픈소스로 제공한다.
2) YOLOv2, YOLOv2-tiny, YOLOv3, YOLOv3-tiny 등 여러가지 버전이 존재, 또한 버전내에도 아래 표와 같은 마이너한 버전이 존재한다.

3) 관련 자료 링크
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
다양한 YOLO 버전, 어떤 버전을 선택해야 할까
YOLO로 프로젝트를 진행하며, 다양한 YOLO 버전이 있음을 알게 되었다. 2020년에 들어서 새로 등장한 YOLO 버전만 3개.. 가장 근본인 YOLO부터 YOLOv3, 가장 최근의 PP-YOLO 까지 YOLO 버전에 대해서 알아보고
yong0810.tistory.com
4) Install
$ cd ~/{workspace}/src $ git clone --recursive https://github.com/leggedrobotics/darknet_ros.git $ cd .. $ catkin_make -DCMAKE_BUILD_TYPE=Release $ rospack profile |
3. Darknet Ros Run!
1) 구성된 환경
- OS : linux ubuntu18.04LTS (virtual box)
- ROS : melodic
- camera : 노트북 내장 카메라
2) Darknet 실행
- 실행하기 전 launch 파일 내 imgae 에 해당하는 argument를 rostopic list에서 검색해서 입력해야한다.
- launch 파일 위치는 다음의 명령어로 이용해 찾을 수 있다.
$ roscd darknet_ros/launch |

- launch 파일 중 darknet_ros.launch 파일을 에디터로 열고, rostopic 중 camera image 관련 토픽명을 찾아 camera argument에 입력한다.
- ros topic 리스트는 다음의 명령어로 출력 가능하다.
$ rostopic list |

- gedit으로 launch파일을 열 경우, 다음의 명령어로 가능하다.
$ gedit darknet_ros.launch |

- 6번째 줄 <arg name="image" default="/camera/rgb/image_raw" /> 부분을 아래와 같이 수정한다.
- 참고로 camera image 관련 topic은 환경에 따라서 달라질 수 있으니, 입력된 device의 topic을 검색해보고 수정하길 바란다.

- 수정이 끝나면 다음의 명령어로 launch 파일을 실행한다.
$ roslaunch darknet_ros darknet_ros.launch |
3) 실행 결과
- 해당영상은 GPU 관련 라이브러리나 툴을 설치하지 않고, CPU로만 돌렸을 때 영상이다.
- 프레임이 확연히 낮고(약 1.0 fps) 검출 속도가 느린 것을 확인할 수 있다.

4. 마무리
- darknet_ros를 GPU로 돌렸을 때 속도 개선이 얼마나 되는지 궁금하다.
- 학습방법 및 yolo에 대해서도 더 알아야겠다.
- 참고 링크
[ROS] n. darknet_ros를 활용한 Yolo-v3 사용법
darknet_ros 이번 포스팅은 ROS에서 darknet을 간단하게 사용 가능하도록 지원하는 오픈소스 darknet_ros를 통하여 Yolo를 사용하는 방법을 설명합니다. darknet_ros의 Github 주소는 다음과 같습니다. https://gi..
taemian.tistory.com