YOLOv8目标检测(一)_检测流程梳理
YOLO检测流程梳理
YOLOv8目标检测(一)_检测流程梳理:YOLOv8目标检测(一)_检测流程梳理_yolo检测流程-CSDN博客
YOLOv8目标检测(二)_准备数据集:YOLOv8目标检测(二)_准备数据集_yolov8 数据集准备-CSDN博客
YOLOv8目标检测(三)_训练模型:YOLOv8目标检测(三)_训练模型_yolo data.yaml-CSDN博客
YOLOv8目标检测(三*)_最佳超参数训练:YOLOv8目标检测(三*)_最佳超参数训练_yolo 为什么要选择yolov8m.pt进行训练-CSDN博客
YOLOv8目标检测(四)_图片推理:YOLOv8目标检测(四)_图片推理-CSDN博客
YOLOv8目标检测(五)_结果文件(run/detrct/train)详解:YOLOv8目标检测(五)_结果文件(run/detrct/train)详解_yolov8 yolov8m.pt可以训练什么-CSDN博客
YOLOv8目标检测(六)_封装API接口:YOLOv8目标检测(六)_封装API接口-CSDN博客
YOLOv8目标检测(七)_AB压力测试:YOLOv8目标检测(七)_AB压力测试-CSDN博客
这期是一个大纲总结供大家参考学习,让大家做到心中有数。一些细节会专门再出一期详细说明,比如数据处理所用的代码等等。
一、确认需求
1.1明确检测目标
明确你要检测什么,如:车、人、玩手机、背包、工具箱等等。
注:建议大家也有个规范的文档,比如你的需求是什么、数据来源等等,有助于你梳理清晰思路,做项目也是这样。
1.2思路梳理
这里举个检测车的例子:
1.2.1检测目标种类
轿车、卡车、三轮车、货车、自行车、摩托车等等。
1.2.2标注界定规则
标注数据时需要界定一些规则,比如:车出现大于50%标、卡车只标车头、自行车不标、三轮车标等等。
1.2.3明确应用场景
做完之后你要应用到哪些场景?比如:检测自己拍摄的数据(角度1)、某工厂大门(角度2)、某超市小门(角度3);
最理想的是你要检测的场景,都能收集到部分数据;但大部分都是不理想的情况,那你需要收集更多的数据来保证准确。
二、准备数据
收集数据是笔者认为比较困难的:
素材网的素材是收费的、公开免费的数据集是比较难合预期的、爬虫爬到的有效数据是比较少的。
理想的状态是:客户需求检测工厂门口车辆,最好拿到一批这个门口录像的部分数据作为自己训练的数据。
2.1数据收集
2.1.1素材网下载
在素材网寻找合适的视频或图片(一般都收费,发挥你聪明的小脑瓜),下载到本地,如:
新片场素材https://stock.xinpianchang.com/

2.1.2数据集网站
公开免费数据集网站,搜索需要的数据集直接下载。如:飞浆https://aistudio.baidu.com/overview

2.1.3爬虫
跑脚本搜寻相关图片下载到本地
注意:确保目标网站允许爬取,避免违反其使用条款。
2.2数据处理
收集到的数据可能是图片也可能是视频,笔者一般都会收集视频再进行处理。
2.2.1视频抽帧
将视频数据,抽帧成图片数据。
2.2.2图片梳理
按需剔除模糊、无目标的图片,保留高质量图片。
注:建议不同来源的数据都要进行不同方式命名方便区分,最好英文命名图片,正样本和负样本笔者都会进行不同命名区分,方便查看,或者训练效果不佳,增删一些数据,总之自己的数据要规整!数据要规整!要规整!
数据处理一些脚本的积累还是比较重要的,后期我专门出一篇分享给大家我常用的脚本。
三、图片标注
3.1为什么要标注图片?
告诉模型目标对象的位置和类别,帮助模型学习如何在图片中检测和分类目标对象
3.2用什么标注?
笔者常用的是labelimg,界面图如下:

四、数据集划分
4.1标注后文件结构
需要跑脚本将标注好的数据进行划分,正常标注后数据格式如下:
dataset/
├── images/
└── labels/
4.2YOLO训练数据结构
yolo训练数据有固定的结构要求。
dataset/
├── train/
│ ├── images/
│ └── labels/
└── val/
├── images/
└── labels/
将标注好的数据集划分为训练集(80%)、验证集(20%)。
4.3训练集、验证集、测试集
4.3.1训练集作用
用于训练模型,让模型学习数据的特征和规律。
4.3.2验证集作用
用于调整超参数和监控模型性能,避免过拟合。
4.3.3测试集作用
用于最终评估模型的泛化能力和实际性能。
五、数据上传
将数据上传到服务器指定位置,这里说明一下yolo训练用自己电脑是非常非常慢的,一般都是租用服务器,再服务器上训练。
如:AutoDL官网网址https://www.autodl.com/home

六、yolo训练
笔者常用命令行命令训练,读者也可以选择将命令参数写成脚本运行
yolo task=detect mode=train model=yolov8n.yaml data=./data_vehicle.yaml pretrained=/data/yolov8n.pt imgsz=640 save=True epochs=400 patience=50 resume=True
具体参数介绍会专门出一期讲解。
七、写服务
7.1为什么要写服务?
将训练好的模型部署为一个接口,使其能够接收图片或视频输入,实时检测目标并返回检测结果,方便在实际应用中集成和使用。
简单来说:就是怎么用你的训练结果best.pt。
举个例子:写逻辑时,要求先判断是不是白天,如果是白天那么检测,如果是黑天则不检测;或者是当人和车同时出现再检测等等。
八、压力测试
8.1为什么要进行压力测试
评估其在高并发和大负载下的性能表现,确保系统能够在实际使用场景中稳定运行,并找到潜在的瓶颈或优化点。
ab -n 1000 -c 5 -r -p /data/null_test_playphone.json -T 'application/json' '<http://127.0.0.1:5000/predict>'
简单来说:测一测好多人访问调用,这个地址会不会崩掉,速度怎么样。
九、模型导出
将训练好的模型导出为适合服务部署的格式,如ONNX、TensorFlow;
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)