激光除草距离我们实际的农业生活还有多远,结合近期所见所感基于yolov8开发构建田间作物杂草检测识别系统

文章讲述了作者对德国自动化农田除草机器的感慨,以及计划利用YOLOv8开发个性化杂草检测系统的经历。通过分析不同模型的性能,强调了科技在农业中的潜力,期望看到更多智能技术应用于农业生产中以推动农村振兴。
摘要由CSDN通过智能技术生成

最近的中秋、国庆双节相信很多朋友都会回家和家人团聚,我也一样,我的家乡是比较小众偏远的乡村,童年给我的最大的记忆就是干不完的农活,而这农活中很大一部分就是蹲在田间地头去人力拔草、撒肥料等,人力终究是很慢效率也很低,跟着父母劳作在玉米田间拔草,也因此认识了很多杂草,随着后面读书、上学、工作不断地背井离乡远离我的家乡,回家的次数也越来越少,如今的村里人也不多了基本上没有什么青壮年,路边的杂草随处可见,可是我却大多忘记了这些杂草的名字,只能依稀记得几种杂草的小名(我们的家乡叫法)。

上周末刚刚回来在B站看到了一个很震撼的视频,讲的就是机械制造大国德国发布的一则全自动机械化农田除草机器工作的视频,视频中显示出来的自动智能化识别杂草并且通过发射激光照射的形式来清除作物间的杂草着实让人大开眼界,德国在自动化机械化领域一直都是领先的存在,作为传统的农业生产大国,不知道视频中展现出来的高科技生产机械手段距离我们的农业生产模式还有多远的距离,我是十分期待看到我们自己的国家能够真正落地并且广泛普及这种智能化的惠农科技技术的,而不是单纯的花架子。

上面说的只是我最近的所见所感,有感而发,业余时间里面就想着自己动手做点事情,好在很早之前这块我就做过一点相关的工作,这里正好一起整合开发了。本文的核心目的也就是想要基于YOLO系列的模型来开发构建田间作物场景下的杂草检测识别系统,激活除草本质就是:智能软件+自动化硬件,这里硬件并非是我擅长的地方,所以闲暇时间里面想动手做点实践性质的动作就只能从软件方面入手。

首先看下整体实例效果:

关于如何详细地基于YOLOv8开发构建属于自己的个性化检测系统,可以参考我前面的教程:

《基于YOLOv8开发构建目标检测模型超详细教程【以焊缝质量检测数据场景为例】》

这里就不再赘述了。

这里我们构建的数据集一共包含常见的20种杂草种类,后续如果有时间的话会继续这项工作:

白车轴草
苍耳
刺儿菜
浮萍
狗尾巴草
剪刀股
鸡眼草
卷耳
苣荬菜
马齿苋
牛筋草
蒲公英
莎草
蛇莓
通泉草
小飞蓬
鸭拓草
阴石蕨
泽漆
酢浆草

不同类别数据分布概况如下所示:

默认都是100次epoch的迭代计算,这里出于对比分析的考量,我们选取了yolov8n、yolov8s和yolov8m三款不同参数量级的模型来进行模型的开发,接下来来整体对比分析下模型的结果。

【Precision曲线】
精确率曲线(Precision-Recall Curve)是一种用于评估二分类模型在不同阈值下的精确率性能的可视化工具。它通过绘制不同阈值下的精确率和召回率之间的关系图来帮助我们了解模型在不同阈值下的表现。
精确率(Precision)是指被正确预测为正例的样本数占所有预测为正例的样本数的比例。召回率(Recall)是指被正确预测为正例的样本数占所有实际为正例的样本数的比例。
绘制精确率曲线的步骤如下:
使用不同的阈值将预测概率转换为二进制类别标签。通常,当预测概率大于阈值时,样本被分类为正例,否则分类为负例。
对于每个阈值,计算相应的精确率和召回率。
将每个阈值下的精确率和召回率绘制在同一个图表上,形成精确率曲线。
根据精确率曲线的形状和变化趋势,可以选择适当的阈值以达到所需的性能要求。
通过观察精确率曲线,我们可以根据需求确定最佳的阈值,以平衡精确率和召回率。较高的精确率意味着较少的误报,而较高的召回率则表示较少的漏报。根据具体的业务需求和成本权衡,可以在曲线上选择合适的操作点或阈值。
精确率曲线通常与召回率曲线(Recall Curve)一起使用,以提供更全面的分类器性能分析,并帮助评估和比较不同模型的性能。

【Recall曲线】
召回率曲线(Recall Curve)是一种用于评估二分类模型在不同阈值下的召回率性能的可视化工具。它通过绘制不同阈值下的召回率和对应的精确率之间的关系图来帮助我们了解模型在不同阈值下的表现。
召回率(Recall)是指被正确预测为正例的样本数占所有实际为正例的样本数的比例。召回率也被称为灵敏度(Sensitivity)或真正例率(True Positive Rate)。
绘制召回率曲线的步骤如下:
使用不同的阈值将预测概率转换为二进制类别标签。通常,当预测概率大于阈值时,样本被分类为正例,否则分类为负例。
对于每个阈值,计算相应的召回率和对应的精确率。
将每个阈值下的召回率和精确率绘制在同一个图表上,形成召回率曲线。
根据召回率曲线的形状和变化趋势,可以选择适当的阈值以达到所需的性能要求。
通过观察召回率曲线,我们可以根据需求确定最佳的阈值,以平衡召回率和精确率。较高的召回率表示较少的漏报,而较高的精确率意味着较少的误报。根据具体的业务需求和成本权衡,可以在曲线上选择合适的操作点或阈值。
召回率曲线通常与精确率曲线(Precision Curve)一起使用,以提供更全面的分类器性能分析,并帮助评估和比较不同模型的性能。

【F1值曲线】
F1值曲线是一种用于评估二分类模型在不同阈值下的性能的可视化工具。它通过绘制不同阈值下的精确率(Precision)、召回率(Recall)和F1分数的关系图来帮助我们理解模型的整体性能。
F1分数是精确率和召回率的调和平均值,它综合考虑了两者的性能指标。F1值曲线可以帮助我们确定在不同精确率和召回率之间找到一个平衡点,以选择最佳的阈值。
绘制F1值曲线的步骤如下:
使用不同的阈值将预测概率转换为二进制类别标签。通常,当预测概率大于阈值时,样本被分类为正例,否则分类为负例。
对于每个阈值,计算相应的精确率、召回率和F1分数。
将每个阈值下的精确率、召回率和F1分数绘制在同一个图表上,形成F1值曲线。
根据F1值曲线的形状和变化趋势,可以选择适当的阈值以达到所需的性能要求。
F1值曲线通常与接收者操作特征曲线(ROC曲线)一起使用,以帮助评估和比较不同模型的性能。它们提供了更全面的分类器性能分析,可以根据具体应用场景来选择合适的模型和阈值设置。

【损失值loss对比曲线】

整体结果分析来看,三款模型性能依次递增,虽然有差距,但是并不是非常大的差距,在实际使用时可能更加倾向于使用s系列的模型,能够比较好地兼顾到速度和精度的平衡。

最后以s系列的模型为例,看下结果详情:
【混淆矩阵】

【训练过程可视化】

【推理评估实例】

科技助力来改变生活方式本身就是大众期待的事情,看到已经有很先进的技术落地应用的时候不免想到我们自己,也是希望早日更多的技术能够真正意义上落地助力农业发展,这样农村振兴发展就不再会被视为是一句口号!

基于YOLOv8的各种瓶子识别检测系统源码(部署教程+训练好的模型+各项评估指标曲线).zip 平均准确率:0.95 类别:bottle 【资源介绍】 1、ultralytics-main ultralytics-main为YOLOv8源代码,里面涵盖基于yolov8分类、目标检测额、姿态估计、图像分割四部分代码,我们使用的是detect部分,也就是目标检测代码 2、搭建环境 安装anaconda 和 pycharm windows系统、mac系统、Linux系统都适配 在anaconda中新建一个新的envs虚拟空间(可以参考博客来),命令窗口执行:conda create -n YOLOv8 python==3.8 创建完YOLOv8-GUI虚拟空间后,命令窗口执行:source activate YOLOv8 激活虚拟空间 然后就在YOLOv8虚拟空间内安装requirements.txt中的所有安装包,命令窗口执行:pip install -r requirements.txt 使用清华源安装更快 3、训练模型过程 进入到\ultralytics-main\ultralytics\yolo\v8\detect\文件夹下,datasets即为我们需要准备好的数据集,训练其他模型同理。 data文件夹下的bicycle.yaml文件为数据集配置文件,该文件为本人训练自行车检测模型时创建,训练其他模型,可自行创建。博文有介绍https://blog.csdn.net/DeepLearning_?spm=1011.2415.3001.5343 train.py中238行,修改为data = cfg.data or './bicycle.yaml' # or yolo.ClassificationDataset("mnist") 237行修改自己使用的预训练模型 若自己有显卡,修改239行,如我有四张显卡,即改成args = dict(model=model, data=data, device=”0,1,2,3“) 以上配置完成后运行train.py开始训练模型,训练完毕后会在runs/detect/文件夹下生成train*文件夹,里面包含模型和评估指标等 4、推理测试 训练好模型,打开predict.py,修改87行,model = cfg.model or 'yolov8n.pt',把yolov8n.pt换成我们刚才训练完生成的模型路径(在\ultralytics-main\ultralytics\yolo\v8\detect\runs\detect文件夹下),待测试的图片或者视频存放于ultralytics\ultralytics\assets文件夹, 运行predict.py即可,检测结果会在runs/detect/train文件夹下生成。
基于YOLOv8的细胞检测计数系统源码(部署教程+训练好的模型+各项评估指标曲线).zip 平均准确率:0.98 类别:RBC、WBC、platelets 【资源介绍】 1、ultralytics-main ultralytics-main为YOLOv8源代码,里面涵盖基于yolov8分类、目标检测额、姿态估计、图像分割四部分代码,我们使用的是detect部分,也就是目标检测代码 2、搭建环境 安装anaconda 和 pycharm windows系统、mac系统、Linux系统都适配 在anaconda中新建一个新的envs虚拟空间(可以参考博客来),命令窗口执行:conda create -n YOLOv8 python==3.8 创建完YOLOv8-GUI虚拟空间后,命令窗口执行:source activate YOLOv8 激活虚拟空间 然后就在YOLOv8虚拟空间内安装requirements.txt中的所有安装包,命令窗口执行:pip install -r requirements.txt 使用清华源安装更快 3、训练模型过程 进入到\ultralytics-main\ultralytics\yolo\v8\detect\文件夹下,datasets即为我们需要准备好的数据集,训练其他模型同理。 data文件夹下的bicycle.yaml文件为数据集配置文件,该文件为本人训练自行车检测模型时创建,训练其他模型,可自行创建。博文有介绍https://blog.csdn.net/DeepLearning_?spm=1011.2415.3001.5343 train.py中238行,修改为data = cfg.data or './bicycle.yaml' # or yolo.ClassificationDataset("mnist") 237行修改自己使用的预训练模型 若自己有显卡,修改239行,如我有四张显卡,即改成args = dict(model=model, data=data, device=”0,1,2,3“) 以上配置完成后运行train.py开始训练模型,训练完毕后会在runs/detect/文件夹下生成train*文件夹,里面包含模型和评估指标等 4、推理测试 训练好模型,打开predict.py,修改87行,model = cfg.model or 'yolov8n.pt',把yolov8n.pt换成我们刚才训练完生成的模型路径(在\ultralytics-main\ultralytics\yolo\v8\detect\runs\detect文件夹下),待测试的图片或者视频存放于ultralytics\ultralytics\assets文件夹, 运行predict.py即可,检测结果会在runs/detect/train文件夹下生成。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Together_CZ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值