动手实践
[图像处理] 基于yolov5的水果识别
00 min
Nov 15, 2023
Feb 25, 2024
type
status
date
slug
summary
tags
category
icon
password

前言


这几天一方面在忙着工训的实习,明天就到工训实习的实习的最后一天的,已经五六天没写文章了。简单回顾一下,

正文


这部分主要介绍是怎么认识yolov5的,起因是电子课程设计,选择了基于图像处理的水果识别的这个课题,然后开始查资料,了解相关的技术路线。由于是第一次做这种课题,并且还得负责主要任务,心累之余做肯定是要做的。我先去bilibili查找了相关的课题,大多数是通过matlab进行相对应的识别的,但是我觉得似乎不是很符合我的预期。
notion image

基本思路


于是我打算更进一步去想如何去做这个问题,当然解决问题,和写报告是很不一样的思路,写报告是不管怎么样,尽可能可读性强,但是解决问题,最主要的是理清楚思路。既然bilibli的综合排序没有找到我要的效果,通过询问gpt我大概得出了以下的思路:
起初我想从比较熟悉的FPGA的相关的技术路线进行尝试,也查阅了相关的材料,但是实现的难度有点高。涉及到特征提取的有Sobel算法,可以对轮廓做很好的处理。
然后还发现一个up主做的毕设和这个也是相关的,很有意思。
然后查找了一些文献,如下:
在文献1,当中采取的方式,首先是先对图像进行预处理,对图像进行平滑去噪,图像增强,完成图像从环境中分离出来。然后进行特征提取,其中有颜色特征,纹理特征,然后放入BP神经网络分类器进行训练。
在文献2,主要是针对方案一中的图像预处理进行了相对应的优化,采用了FPGA当中的Soebl边缘化提取特征向量。然后对比SSD、YOLO、CenterNet等方式的性能。 在文献3,基本思路是和文献1类似的,多出了一些特征,比如面积特征,周长特征,弧度特征,颜色特征,然后通过神经网络进行分类。 在文献4,采用的方式是进行YOLOv5模型进行水果自动识别,但是对模型进行了一些改进。在yolov5对网络后面又增加了一层网络,按照重要程度强化有用的特征,抑制掉无用的特征,替换了边框回归损失函数,提升了预测的精度。
在文献5,同样也是对yolov5算法进行优化和改进,也是通过更换深度可分离卷积和添加注意力机制模块,提升准确度和降低网络负担。
 

选择yolov5


因为刚接触这个问题,通过查阅的文献,感觉选择yolo的方式更加便于实践学习和操作。
关于yolov5的简介:
好在,可以站在巨人的肩膀上。我通过博主:思绪无限 的文章进行了学习。

环境配置


对于刚开始使用pycharm的我,来说,配置环境还是走了不少弯路的,前期,要下载pycharm和anaconda,用于配置环境,一开始我在Mac系统上配置环境没有成功,一直不知道如何把pycharm关联anaconda的环境,后来就转到win下进行操作。关于如何搭建并配置深度学习环境,我参考了up主:思绪无限的教程,初步完成了环境的激活。
 

训练自己的数据集


这部分介绍如何训练自己的数据集。

采集所需要的识别物体的图像


我是通过手机进行摄影,然后通过usb上传到电脑,然后手机拍摄的图片肯定太大了,而且在yolov5的官方文档上说,训练的数据集最好能达到1500张以上。然后非常感谢一个宝藏的批量图片裁剪在线网页,没有广告,而且效率很高,我把770多张图片裁剪为640*640的大小,减小图片的体积。 11.18更新:今天用safari测试才发现,可能是我在win上开了插件,所以没广告,所以也在safari上装了插件。
 

labelimg


之前通过23张图片,简单熟悉了yolo的训练流程,后面购买了,红富士,黄元帅,和国光,三种类型的苹果进行数据采集,目的是为了通过yolov5来训练模型识别这三种水果的能力。
前期通过不同角度完成了对数据集的拍摄,共计770张图片,然后次日花了很久用labelimg软件对图片进行数据标注,在此不得不提一下。labelimg软件我刚开始觉得非常难用,因为需要配置python环境,而且动不动就闪退。就在我找不到头绪之际,非常感谢up主:小周不会做 提供的灵感,up主提供了labelimg的打包版,这样子就可以启动并进行使用了,让图片得到顺利的标注。
 

正确配置路径


然后可以现在本地环境上进行调试一下,可以参考这位up主:遗落的教程,讲解得很详细。还有怎么用快捷键打标签,可以参照这位up主:圣音去扉教程。然后需要现在本地环境能够正常的跑成功,在这前提下,可以尝试使用带有GPU的云服务器进行训练。
 

AutoDL


关于如何使用AutoDL,非常感谢up主:你可是处女座啊教程,介绍得很详细,如何上传文件夹到服务器,可以使用scp命令,也可以使用网页进行上传。
然后,你还需要配置CUDA环境,在服务器上安装必要的环境,然后就可以开始使用gpu进行愉快的训练了。我使用的是英伟达的3080显卡,速度已经感觉很快了,但是770张200轮跑下来,也花了一个半小时。
 

总结


后续还需要进行参数微调,但是自我感觉时间有限,还有点累,所以,这篇文章后面就写得很简单,我又得做又得写报告,虽然很难崩得住,但是也得顶住啊。

Comments