meine
meine 🌒 - A CLI file manager and system utility built with Textual. It combines intuitive command parsing with rich t…
Example of using ultralytics YOLO V5 with OpenCV 4.5.4, C++ and Python
git clone https://github.com/doleron/yolov5-opencv-cpp-python.gitdoleron/yolov5-opencv-cpp-pythonExample of performing inference with ultralytics YOLO V5, OpenCV 4.5.4 DNN, C++ and Python
Looking for YOLO V4 OpenCV C++/Python inference? Check this repository
This code is explained in this medium article
Make sure you have already on your system:
IMPORTANT!!! Note that OpenCV versions prior to 4.5.4 will not work at all.
The python code is here.
git clone https://github.com/doleron/yolov5-opencv-cpp-python.git cd yolov5-opencv-cpp-python python python/yolo.py
If your machine/OpenCV install are CUDA capable you can try out running using the GPU:
git clone https://github.com/doleron/yolov5-opencv-cpp-python.git cd yolov5-opencv-cpp-python python python/yolo.py cuda
The C++ code is here.
git clone https://github.com/doleron/yolov5-opencv-cpp-python.git cd yolov5-opencv-cpp-python g++ -O3 cpp/yolo.cpp -o yolo_example `pkg-config --cflags --libs opencv4` ./yolo_example
Or using CUDA if available:
git clone https://github.com/doleron/yolov5-opencv-cpp-python.git cd yolov5-opencv-cpp-python g++ -O3 cpp/yolo.cpp -o yolo_example `pkg-config --cflags --libs opencv4` ./yolo_example cuda
PS.: Video sample from https://www.youtube.com/watch?v=NyLF8nHIquM
This repository uses YOLO V5 but it is not the only YOLO version out there. You can read this article to learn more about YOLO versions and choose the more suitable one for you.
Check here: ultralytics/yolov5#251
My commands were:
git clone https://github.com/ultralytics/yolov5 cd yolov5 pip install -r requirements.txt
And then to convert the model:
$ python3 export.py --weights yolov5n.pt --img 640 --include onnx
export: data=data/coco128.yaml, weights=['yolov5n.pt'], imgsz=[640], batch_size=1, device=cpu, half=False, inplace=False, train=False, optimize=False, int8=False, dynamic=False, simplify=False, opset=12, verbose=False, workspace=4, nms=False, agnostic_nms=False, topk_per_class=100, topk_all=100, iou_thres=0.45, conf_thres=0.25, include=['onnx']
YOLOv5 🚀 v6.0-192-g436ffc4 torch 1.10.1+cu102 CPU
Fusing layers...
Model Summary: 213 layers, 1867405 parameters, 0 gradients
PyTorch: starting from yolov5n.pt (4.0 MB)
ONNX: starting export with onnx 1.10.2...
/home/user/workspace/smartcam/yolov5/models/yolo.py:57: TracerWarning: Converting a tensor to a Python boolean might cause the trace to be incorrect. We can't record the data flow of Python values, so this value will be treated as a constant in the future. This means that the trace might not generalize to other inputs!
if self.onnx_dynamic or self.grid[i].shape[2:4] != x[i].shape[2:4]:
ONNX: export success, saved as yolov5n.onnx (7.9 MB)
Export complete (1.33s)
Results saved to /home/doleron/workspace/smartcam/yolov5
Visualize with https://netron.app
Detect with `python detect.py --weights yolov5n.onnx` or `model = torch.hub.load('ultralytics/yolov5', 'custom', 'yolov5n.onnx')
Validate with `python val.py --weights yolov5n.onnx`
$
First time I got an error with protobuf version:
"AttributeError: module 'google.protobuf.descriptor' has no attribute '_internal_create_key"?
I fixed it by running:
pip install --upgrade protobuf
more like this
meine 🌒 - A CLI file manager and system utility built with Textual. It combines intuitive command parsing with rich t…
search projects, people, and tags