yolov5-v7.0实例分割快速体验
简介
🚀yolov5-v7.0版本正式发布,本次更新的v7.0则是全面的大版本升级,最主要的功能就是全面集成支持了实例分割,yolov5已经集成检测、分类、分割任务。
前面几篇文章已经介绍过关于Yolov5的一些方面
yolov5目标检测:https://blog.csdn.net/qq_45066628/article/details/129470290?spm=1001.2014.3001.5501
yolov5分类:https://blog.csdn.net/qq_45066628/article/details/129594154?spm=1001.2014.3001.5501
yolov5网络结构及训练策略简介:https://blog.csdn.net/qq_45066628/article/details/129715417?spm=1001.2014.3001.5501
检测 分类 分割区别
- 图像分类(image classification)
识别图像中存在的内容,如下图,有人(person)、树(tree)、草地(grass)、天空(sky)
- 目标检测(object detection)
识别图像中存在的内容和检测其位置
- 语义分割(semantic segmentation)
对图像中的每个像素打上类别标签,如下图,把图像分为人(红色)、树木(深绿)、草地(浅绿)、天空(蓝色)标签,简而言之就是对一张图片上的所有像素点进行分类。
- 实例分割(instance segmentation)
其实就是目标检测和语义分割的结合。相对目标检测的边界框,实例分割可精确到物体的边缘;相对语义分割,实例分割需要标注出图上同一物体的不同个体。对比上图、下图,如以人(person)为目标,语义分割不区分属于相同类别的不同实例(所有人都标为红色),实例分割区分同类的不同实例(使用不同颜色区分不同的人)
- 全景分割(panoptic segmentation)
全景分割是语义分割和实例分割的结合。
跟实例分割不同的是:实例分割只对图像中的object进行检测,并对检测到的object进行分割,而全景分割是对图中的所有物体包括背景都要进行检测和分割。
快速体验
项目下载
git clone https://github.com/ultralytics/yolov5 # clone
cd yolov5
pip install -r requirements.txt # install
数据集准备
- 准备训练数据,如果自己没有数据可以去Roboflow官网 或kaggle官网 下载数据
- Roboflow官网 https://universe.roboflow.com/paul-guerrie-tang1/asl-poly-instance-seg/dataset/25
- Kaggle官网 https://www.kaggle.com/datasets
- 数据标注,可以使用Labelimg数据标注工具,之前文章已经讲过了,这里就不赘述了
- 数据划分,划分格式如下
下载权重文件
官网地址;https://github.com/ultralytics/yolov5/releases/v7.0
配置文件参数修改
- 将Models下的segment下的自己下载的对应权重文件-seg.yaml(例如yolov5l-seg.yaml)里面的nc改为自己的类别数
- 在data下的coco128-seg.yaml里修改训练,验证及测试的路径已经,类别种类
运行方式一:在segment下的train里面改模型,配置文件,数据路径,其余参数可根据需要配置
改完后执行python train.py后开始训练
运行方式二:直接执行命令
python segment/train.py --data coco128-seg.yaml --weights yolov5m-seg.pt --img 640 --cfg models/segment/yolov5m-seg.yaml
推理和验证
也可通过修改segment下的predict.py和val.py 或者直接执行命令,weights为自己训练后的模型best模型路径
验证:
python segment/val.py --weights yolov5s-seg.pt --data coco.yaml --img 640
推理:
python segment/predict.py --weights yolov5m-seg.pt --data data/images/bus.jpg
onnx导出
python export.py --weights yolov5s-seg.pt --include onnx engine --img 640 --device 0