https://github.com/ConfusionTechnologies/ros-yolov5-node
For ROS2, uses ONNX GPU Runtime to inference YOLOv5
https://github.com/ConfusionTechnologies/ros-yolov5-node
Last synced: about 2 months ago
JSON representation
For ROS2, uses ONNX GPU Runtime to inference YOLOv5
- Host: GitHub
- URL: https://github.com/ConfusionTechnologies/ros-yolov5-node
- Owner: ConfusionTechnologies
- Created: 2022-07-04T23:58:19.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2022-10-13T09:21:11.000Z (over 2 years ago)
- Last Synced: 2024-08-03T01:25:01.111Z (11 months ago)
- Language: Python
- Homepage:
- Size: 75.2 KB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-yolo-object-detection - ConfusionTechnologies/ros-yolov5-node - yolov5-node?style=social"/> : For ROS2, uses ONNX GPU Runtime to inference YOLOv5. (Other Versions of YOLO)
- awesome-yolo-object-detection - ConfusionTechnologies/ros-yolov5-node - yolov5-node?style=social"/> : For ROS2, uses ONNX GPU Runtime to inference YOLOv5. (Other Versions of YOLO)
README
# ros-yolov5-node
For ROS2, uses ONNX GPU Runtime (Python SDK) to inference YOLOv5.
## Comparisons
- : seems hardcoded to do post/pre-processing for specifically Tiny-YOLOv2 and caters to only object detection and object pose. Unfortunately isn't a library for running ONNX models in general then supplying your own pre/post-processing code.
- : requires Conda so is not `rosdep` compatible, plus PyTorch is huge. Does not support ROS2.
- : clones YOLOv5 from source as a submodule then needs to install its `requirements.txt` so not `rosdep` compatible. Does not support ROS2 either.## Interesting
Rename to onnx_yolo_ros?
Why? Because implementation language & deep learning framework aside, the pre & post-processing code for YOLO models are largely the same between variants. Hence, once the model is exported/standardized to ONNX, it is possible to just swap which YOLO model you want to use. For example, from YOLOv5 to YOLOv4 or even YOLOv7.
That said, I have yet to thoroughly test the above. Even more so given YOLOv7 heavily uses YOLOv5's codebase. Separate implementations might be needed for different variant "generations".
## Note
Whenever you see size or shape, it has been converted to be `(width, height)`. Be mindful that numpy images are still `(height, width, channel)`, so you might want to apply `img.shape[1::-1]`.