Python基于改进YOLOv5的烟叶病害检测系统(附带源码)
Python基于改进YOLOv5的烟叶病害检测系统(附带源码)
1.背景
烟草作为我国重要的经济作物之一,在国民经济中占据着重要地位。同时,烟草病害严重威胁烟叶质量,制约卷烟质量,给农业生产造成严重损失。因此,烟草病害防治是一个亟需解决的问题。
传统的烟草病害诊断方法不能及时,准确地解决实际栽培中遇到的病害种类识别问题,这就可能错失了防治病害的最佳时期。
2.前言
Python、Anacanda、Pycharm、CUDA和cuDNN等基础的环境安装部署可以参考博主的B站视频教程
[2022手把手教学版]Python&Anacanda&Pycharm安装,虚拟环境配置
[CUDA&cuDNN]炼丹师手把手带你安装CUDA&cuDNN(win10)
3.烟叶数据集的采集
4.烟叶数据集的标注
labelimg是一款开源的图像标注工具,标签可用于分类和目标检测,它是用python写的,并使用Qt作为其图形界面,简单好用(虽然是英文版的)。其注释以 PASCAL VOC格式保存为XML文件,这是ImageNet使用的格式。此外,它还支持 COCO数据集格式。
labelimg的使用可以参考:
LabelImg(目标检测标注工具)的安装与使用教程
5.烟叶检测训练&识别效果
训练的教程可以参考博主的博文:
6.病害数据集的采集
7.病害数据集的标注
8.YOLOv5网络的改进
由于病害目标非常的小,原始的YOLOv5的最小的检测头的感受野依旧大于目标的尺寸,所以有必要对原始网络进行改进
通常目标检测的结构包含下图的模块
我们可以从上面的每个模块入手提出改进的点,例如我们从优化算法下手,Yolov5的作者提供了两个优化函数Adam和SGD(默认),并且都预设了匹配的训练超级参数。
我建议,如果您需要训练较小的自定义数据集,则Adam是更合适的选择。如果训练了较大的数据集,SGD对于Yolov5比Adam更好。
事实上,学术界还没有关于SGD和Adam之间哪个更好的统一结论,这取决于实际项目情况。
同时我们可以改进激活函数,Yolov5的作者使用leaky-relu 和 sigmoid激活函数。在Yolov5中,中间/隐藏层使用泄漏relu激活函数,最后一个检测层使用S形激活函数。Yolov4使用mish激活功能。
我们可以改进损失函数,Yolo级数的损失计算基于目标得分、类概率得分和边界框区域得分
Yolo V5使用GIOU损失作为边界框的损失。
Yolo V4使用CIOU损失作为边界框的损失。与上述其他方法相比,CIOU损失带来更快的收敛速度和更好的性能。
9.如何通过代码修改模型
(1)首先,您需要在models/common.py中实现mobilenetv2的瓶颈和PW_ Conv。
(2)然后,您需要更改代码(models/yolo.py的parse_model函数),以读取yolo V5中的模型配置文件,从而调用上述模块。
(3)并且PW_ Conv瓶颈MOB需要在导入参考处添加,
(4)然后,我们构建模型配置文件,我在yolov5s.yaml的基础上对其进行了修改
10.病害检测训练&识别效果
11.系统整合
最终我们将烟叶检测和病害检测的系统整合到一起,实现操作者只需看一眼,就可以对所有烟叶的健康状况有所知悉,同时,每一片烟叶的病害种类、位置和数量都很清晰的标注在叶片上。鲁棒性好、识别率高、准确性强。
PPT资源
[PPT]Python基于改进YOLOv5的烟叶病害检测系统PPT
相关完整源码代码
相关文章
- python中矩阵的转置_[转]Python中的矩阵转置[通俗易懂]
- python socket recvfrom_Python:socket.recvfrom()不返回任何地址
- Python实现自动回复_python 微信机器人
- python chmod_Python os.chmod用法及代码示例
- Python 操作XML文件一文通
- 人生苦短,我用Python-手把手教你如何使用python写串口调试助手
- Python实现智能互动拍照系统(毕设源码)
- 9个Python 内置装饰器: 显著优化代码
- Python爬虫源码搭建量化交易合约系统开发理论讲解(成熟技术)
- 用python制作学生信息管理系统
- python-Python与PostgreSQL数据库-使用Python执行PostgreSQL查询(一)
- Python 基于python实现的http+json协议接口自动化测试框架源码(实用改进版)详解编程语言
- Linux下如何快速卸载Python环境(linux如何卸载python)
- Linux系统快速运行Python脚本(linux运行python脚本)
- Linux系统如何运行Python脚本(linux执行python脚本)
- 自动化测试常用断言的使用方法(python)详解编程语言
- Linux下的Python开发环境探索(linuxpythonide)
- 在Linux系统中使用Python编程语言(linux中python)
- 用smtplib和email封装python发送邮件模块类分享