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;

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐