티스토리 뷰
sinanju06/딥러닝 환경 셋팅 및 코드 분석
NVIDIA Jeston 환경 셋팅 4편 (YOLO-ROS 설치 및 실행)
hanyangrobot 2021. 1. 5. 17:58작성자 : 한양대학원 융합로봇시스템학과 유승환 석사과정 (CAI LAB)
오늘은 YOLO-ROS를 설치하겠습니다! Jeston Nano를 기준으로 설명을 합니다. YOLOv2-tiny와 YOLOv3-tiny를 ROS로 구동하는 것은 성공했지만, YOLOv4-tiny는 실패했습니다... YOLOv4-tiny를 실행시키면 nano 시스템이 다운이 되버리네요ㅜㅜ 메모리 부족 문제인지, 제 코드의 문제인지는 모르겠지만... 일단은 YOLOv3-tiny를 베이스로 설명하겠습니다.!
- 참고 링크 (YOLO-ROS) : github.com/leggedrobotics/darknet_ros
1. YOLOv3-ROS 설치
- 먼저 workspace를 생성합니다.
## Create workspace for ROS, Change directory
mkdir -p workspace/src
cd workspace/src
## init workspace
catkin_init_workspace
## Make
cd ../
catkin_make
- 이제 깃헙에서 git 명령어를 활용하여 소스코드를 가져옵니다.
cd workspace/src
git clone --recursive git@github.com:leggedrobotics/darknet_ros.git
cd ../
- 소스코드를 build 해줍니다.
catkin_make -DCMAKE_BUILD_TYPE=Release
- 빌드를 하면 Cmake 에러가 발생할 겁니다.
- 에러 내용 : (Project 'cv_bridge' specifies '/usr/include/opencv' as an include dir, which is not found. It does neither exist as an absolute directory nor in '${{prefix}}//usr/include/opencv'.)
- 이럴 때는 다음의 링크를 참고하여 아래와 같이 cv_bridgeConfig.cmake 파일을 수정하면 해결됩니다! : 95mkr.tistory.com/entry/ROS6
pkg-config --cflags opencv
# -I/usr/local/include
sudo gedit /opt/ros/melodic/share/cv_bridge/cmake/cv_bridgeConfig.cmake
# in cv_bridgeConfig.cmake in line 94~96
# before
if(NOT "include;/usr/include;/usr/include/opencv " STREQUAL " ")
set(cv_bridge_INCLUDE_DIRS "")
set(_include_dirs "include;/usr/include;/usr/include/opencv")
# after
if(NOT "include;/usr/include;/usr/include/opencv " STREQUAL " ")
set(cv_bridge_INCLUDE_DIRS "")
set(_include_dirs "include;/usr/include;/usr/local/include/opencv")
- 빌드에 성공했다면, yolov3-tiny와 관련된 파일을 다운받아야 합니다.
- (1) yolov3-tiny.cfg 다운 : raw.githubusercontent.com/AlexeyAB/darknet/master/cfg/yolov3-tiny.cfg
- (2) yolov3-tiny.weight 파일 다운 : pjreddie.com/media/files/yolov3-tiny.weights
- 다운을 받은 후, 각 cfg, weight 파일은 ~/workspace/src/darknet_ros/darknet_ros/yolo_network_config/ 내의 cfg, weights 폴더에 각각 넣어줍니다.
- 이제 yolov3-tiny를 사용하도록 몇 가지 파일을 수정해야 합니다.
- (1) ~/workspace/src/darknet_ros/darknet_ros/config/ 위치에서 yolov3-tiny.yaml 파일 생성 :
- yolov3.yaml 파일을 복사해서 yolov3-tiny.yaml 파일로 이름을 바꾼 후에,
- config_file과 weight_file의 name을 yolov3-tiny.cfg와 yolov3-tiny.weights로 수정해줍니다.
- (2) ~/workspace/src/darknet_ros/darknet_ros/config/ 위치에서 ros.yaml 파일 수정 :
- ros.yaml 파일에서 camera_reading 부분의 topic을 자신의 카메라 환경에 맞게 바꿔줍니다.
- 저는 리얼센스의 컬러 이미지 토픽이 /camera/color/image_raw여서 이렇게 수정했습니다.
- (3) ~/workspace/src/darknet_ros/darknet_ros/launch/ 위치에서 darknet_ros.launch 파일 수정 :
- Line 14 : yolov2-tiny.yaml -> yolov3-tiny.yaml 으로 수정
- Line 6, 24 : 카메라 이미지 토픽이 다르다면, 토픽에 맞게 설정 (ex : /camera/color/image_raw)
2. YOLOv3-ROS 실행
- 먼저 카메라 노드를 킵니다. 저는 real-sense의 컬러 이미지 노드를 키겠습니다.
# 터미널 1 : 카메라 키기
roslaunch realsense2_camera rs_camera.launch
- 이제 darknet-ros 노드를 킵니다! 그러면 창이 뜨면서 카메라에서 검출되는 물체들을 보여줍니다ㅎㅎ 실습 끝~!
# 터미널 2 : darknet_ros 구동
roslaunch darknet_ros darknet_ros.launch
'sinanju06 > 딥러닝 환경 셋팅 및 코드 분석' 카테고리의 다른 글
NVIDIA Jeston 환경 셋팅 1-2편 (JetPack 설치 On Jeston Nano) (10) | 2021.02.19 |
---|---|
NVIDIA Jeston 환경 셋팅 번외편 (Pytorch, yolov4, yolov5 설치) (23) | 2021.01.05 |
NVIDIA Jeston 환경 셋팅 2-1편 (OpenCV 3.4.0 설치 on Jeston Nano) (16) | 2021.01.04 |
딥러닝 모델 아키텍쳐를 그림으로 확인해보기! : NETRON (2) | 2020.12.21 |
Object Detection & Tracking : YOLOv4 + Deep_SORT 환경 셋팅 및 실습 (15) | 2020.12.09 |
댓글