Yolo v5 ROS에 올리기

OpenJR·2022년 7월 4일
0

Yolov5를 ROS에서 Sub/Pub이 가능하도록 설정하였다.
내 로컬은 우분투 18.04로 로스 멜로딕이 설치가 가능하다. 하지만 Yolo와 같은 딥러닝 모델들은 파이썬 3점대 버전에서 개발이 되므로, 멜로딕이 아닌 노에틱으로 ROS를 설치해야 하므로 도커 환경을 사용했다. 딥러닝 인퍼런스에 GPU도 사용되므로, docker-nvidia도 설정해주어야한다.

$ docker pull osrf/ros:noetic-desktop-full
$ docker run -it --gpus all --net=host -v /tmp/.X11-unix:/tmp/.X11-unix:ro -e DISPLAY=unix$DISPLAY --privileged --name "ROS_noetic" osrf/ros:noetic-desktop-full

기본 준비 사항

깃 클론 받기전 환경 설정을 해주어야 한다.

$ cd
$ mkdir yolo && cd yolo && mkdir src

.bashrc파일에도 다음 명령어들을 추가해준다.

alias cm='cd ~/yolo && catkin_make'
alias cs='cd ~/yolo/src'

source /opt/ros/noetic/setup.bash

yolo 폴더에 먼저 catkin_make를 해준다

$ cm

깃 클론 받기

https://github.com/mats-robotics/yolov5_ros
위 사이트에 README를 참고하여 빌드를 해준다.

그후 아래의 명령어를 .bashrc에 추가해준다.
source ~/yolo/devel/setup.bash

에러 해결

분명 언제나 그렇듯 에러가 발생한다.

1. from detection_msgs.msg import BoundingBox, BoundingBoxes

메세지를 사용할수 없다고 No module 어쩌구 저쩌구가 뜬다.

해결법
그냥 bash를 껏다가 킨다.

2. attributeerror: 'upsample' object has no attribute 'recompute_scale_factor'

해결법 아래와 같이 수정해 준다.
usr/local/lib/python3.8/dist-packages/torch/nn/modules/upsampling.py

def forward(self, input: Tensor) -> Tensor:
        # return F.interpolate(input, self.size, self.scale_factor, self.mode, self.align_corners,
        #                      recompute_scale_factor=self.recompute_scale_factor)
        return F.interpolate(input, self.size, self.scale_factor, self.mode, self.align_corners)
profile
Jacob

0개의 댓글