微擎做的网站好排名吗,深圳建设项目环保网站办事指南,网站在线支付功能,最近国内重大新闻一文学习yolov5 实例分割#xff1a;从训练到部署 1.模型介绍1.1 YOLOv5结构1.2 YOLOv5 推理时间 2.构建数据集2.1 使用labelme标注数据集2.2 生成coco格式label2.3 coco格式转yolo格式 3.训练3.1 整理数据集3.2 修改配置文件3.3 执行代码进行训练 4.使用OpenCV进行c部署参考文… 一文学习yolov5 实例分割从训练到部署 1.模型介绍1.1 YOLOv5结构1.2 YOLOv5 推理时间 2.构建数据集2.1 使用labelme标注数据集2.2 生成coco格式label2.3 coco格式转yolo格式 3.训练3.1 整理数据集3.2 修改配置文件3.3 执行代码进行训练 4.使用OpenCV进行c部署参考文献 1.模型介绍
1.1 YOLOv5结构
SF-YOLOv5: A Lightweight Small Object Detection Algorithm Based on Improved Feature Fusion Mode论文中给出了yolov5的结构框图 SPPF块与传统的SPP之间的差异
特征融合的几种结构 YOLOV5的特征融合结构
Ultralytics YOLOv5 Architecture 官方文档给出的详细的整体架构如下
1.2 YOLOv5 推理时间
YOLOv5 CPU Export Benchmarks 给出的CPU推断时间
benchmarks: weightsyolov5s.pt, imgsz640, batch_size1, data/usr/src/app/data/coco128.yaml, device, halfFalse, testFalse, pt_onlyFalse
Checking setup...
YOLOv5 v6.1-174-gc4cb7c6 torch 1.11.0cpu CPU
Setup complete ✅ (96 CPUs, 1007.7 GB RAM, 1948.4/3519.3 GB disk)Benchmarks complete (128.39s)Format mAP0.5:0.95 Inference time (ms)
0 PyTorch 0.4623 56.52
1 TorchScript 0.4623 59.21
2 ONNX 0.4623 60.95
3 OpenVINO 0.4623 27.44
4 TensorRT NaN NaN
5 CoreML NaN NaN
6 TensorFlow SavedModel 0.4623 70.84
7 TensorFlow GraphDef 0.4623 72.44
8 TensorFlow Lite 0.4623 130.43
9 TensorFlow Edge TPU NaN NaN
10 TensorFlow.js NaN NaNhttps://learnopencv.com/custom-object-detection-training-using-yolov5/给出的时间
2.构建数据集
参考labelmeyolov5实例分割自定义数据集制作、训练与注意点使用labelme来构建yolov5支持的数据集。
2.1 使用labelme标注数据集
pip安装labelme打开目录进行标注。
2.2 生成coco格式label
使用位于labelme-main\examples\instance_segmentation目录下的labelme2coco.py文件。
python labelme2coco.py labelme标注json文件夹 coco目标文件夹 --labels labels.txt路径查看设置的生成目录存在以下三个文件
2.3 coco格式转yolo格式
使用官方提供的转换工具 general_json2yolo.py
代码中稍加修改2出
修改1
if __name__ __main__:source COCOif source COCO:convert_coco_json(../datasets/coco/annotations, # directory with *.jsonuse_segmentsTrue,cls91to80True,)改为
if __name__ __main__:source COCOif source COCO:convert_coco_json(上一步生成的coco文件目录, # directory with *.jsonuse_segmentsTrue,cls91to80False,# 这里修改成False)修改2 修改为 # Writewith open((fn / f[11:]).with_suffix(.txt), a) as file: #去掉字符串的父路径for i in range(len(bboxes)):line (*(segments[i] if use_segments else bboxes[i]),) # cls, box or segmentsfile.write((%g * len(line)).rstrip() % line \n)运行
转换后的结果位于此文件同目录下的new_dir文件夹/labels/annotations目录中。一张图片对应一个txt文件。
3.训练
3.1 整理数据集
将上面环节生成的数据集保存成以下层次
datasetimagestrainvallabelstrainval3.2 修改配置文件
在git主目录下的data文件夹下新建或者修改自定义项目的数据集配置文件
path:数据集目录
train:训练集目录
val:验证集目录# Classes
names:0: cat11: cat2...3.3 执行代码进行训练
python segment/train.py --model yolov5s-seg.pt --data data/custom.yaml --epochs 5 --img 6404.使用OpenCV进行c部署
https://github.com/doleron/yolov5-opencv-cpp-python/tree/main
参考文献
[1] https://learnopencv.com/custom-object-detection-training-using-yolov5/ [2] YOLOv5 CPU Export Benchmarks [3] https://github.com/ultralytics/yolov5/releases [4] https://sh-tsang.medium.com/brief-review-yolov5-for-object-detection-84cc6c6a0e3a [5] Ultralytics YOLOv5 Architecture [6] SF-YOLOv5: A Lightweight Small Object Detection Algorithm Based on Improved Feature Fusion Mode [7] labelmeyolov5实例分割自定义数据集制作、训练与注意点