目录
前言
一、读取标记数据
1.数据下载
2.数据示例
3.数据预处理
二、数据分析
三、算法介绍
1.卷积神经网络
2.yolov5
3.数据增强
4.自适应锚框
5.遗传算法实现超参数演化
一个小细节,best.pt的意义
四、云训练环境的搭建
五、训练结果
其实是前段时间参加泰迪杯的赛题记录啦。
在农业生产中预防虫害的工作异常重要,传统的监视、检测方法不能适应工业化农业生产对虫害预防工作的需要。本文结合具体的数据特点,主要应用了yolov5算法建立农田害虫图像识别模型,确定害虫具体位置及类别,并对不同种类的害虫进行了数量统计。
数据是泰迪杯主办方提供的已经标记好的数据,4k画质的图片,总大小8个G
链接:https://pan.baidu.com/s/1fvmNHGrLvflEovjfCjDLOw?pwd=6666
提取码:6666
(如果过期了可以联系我补)
图片
标签
yolov5要求的输入格式是txt,所以要把csv转成txt,
对于标签需要进行编码,比如这里的虫子编号7,228转成1号和13号,否则实测会报错,这是yolov5框架目前的缺陷
对于坐标进行归一化处理
2022泰迪杯自动提取csv表格文件中的数据,保存到符合YOLOv5格式的txt文件中,并修改标签值的代码实现_Flying Bulldog的博客-CSDN博客_csv转yolo
分析使用的是泰迪杯平台提供的SPSSPRO数据分析平台,功能差不多就是Tableau+Spss,熟悉这两个软件的小伙伴应该懂我意思(笑)
由上图可以看出只有少部分图片中的害虫个数超过10个,大部分图片的害虫个数都是1到2个
由上图可知到标记样本的害虫目标绝大多数分布在图片的中间位置,极少数出现在图片的边缘
由上图和下表可知61%的图片里是没有害虫的,而在这些有标签的图片中只有八种害虫超过了总数的1%,其中八点灰灯蛾数量最多,占9.3%。
害虫名称 |
无 |
八点灰灯蛾 |
褐飞虱属 |
白背飞虱 |
二化螟 |
蟋蟀 |
黄足猎蝽 |
黄毒蛾 |
粘虫 |
频数 |
1637 |
247 |
150 |
120 |
90 |
87 |
59 |
40 |
27 |
百分比(%) |
61.634 |
9.3 |
5.648 |
4.518 |
3.389 |
3.276 |
2.221 |
1.506 |
1.017 |
累计百分比(%) |
61.634 |
70.934 |
76.581 |
81.099 |
84.488 |
87.764 |
89.985 |
91.491 |
92.508 |
实际上在标签数据极少的情况下,那些在图片中出现频率低的害虫将很难被识别,样本标签不平衡是我比赛时没有想到的问题
卷积神经网络主要由这几类层构成:输入层、卷积层,ReLU层、池化(Pooling)层和全连接层。通过将这些层叠加起来,就可以构建一个完整的卷积神经网络。
—— https://zhuanlan.zhihu.com/p/47184529
yolo系列模型是图像目标检测领域的一种分支,是和R-CNN并称两个大方向,二者的最终目的都是为了在给定的图像中识别出目标,但是yolo是一步到位,后者则一般分为两步执行,所以论速度yolo更快
深入浅出Yolo系列之Yolov3&Yolov4&Yolov5&Yolox核心基础知识完整讲解_江大白*的博客-CSDN博客_江大白yolov3深入浅出Yolo系列之Yolov5核心基础知识完整讲解 - 知乎深入浅出Yolo系列之Yolov3&Yolov4&Yolov5&Yolox核心基础知识完整讲解_江大白*的博客-CSDN博客_江大白yolov3
以上两点是模型的基础知识,下面是本文采用的前沿优化
目标检测 YOLOv5 - 数据增强_西西弗Sisyphus的博客-CSDN博客_yolov5数据增强
yolov5中的初始anchor值以及根据数据集中的目标进行聚类等计算得到自适应anchor_沉醉,于风中的博客-CSDN博客_yolov5自适应锚框
YOLOv5的Tricks | 【Trick5】遗传算法实现超参数进化(Hyperparameter Evolution)_Clichong的博客-CSDN博客k
看起来很高端,但其实都是在框架内部已经实现的算法,只需要启用并根据实际情况调参即可(ಥ _ ಥ)
http://t.csdn.cn/13bNiyolov5中的best.pt_EXYlkx的博客-CSDN博客http://t.csdn.cn/13bNi
云GPU运行yolov5模型训练_EXYlkx的博客-CSDN博客
这里的val是十折交叉验证,准确率98%左右。当然这终究是在标签集上的准确率,在比赛的测试数据上,目测有个40%就不错了。。图像识别领域目前整体就只能做到这个程度了
yolov5的detect输出可以设置输出图片和txt
如果需要csv,也可以用numpy很容易的转换
实现批量读取txt文件数据并写入csv文件_cyzzzm的博客-CSDN博客_批量txt转csv