【基于web】利用深度学习实现病残树叶检测

本文介绍了利用YOLOv5框架进行病残树叶检测的实验过程,包括数据清洗与标注、模型训练和Web实现。作者通过Flask搭建了一个简单的网页,用户可上传图片进行目标检测。实验中,作者对比了不同大小的YOLO模型在检测速度和精度上的差异,并解决了Web端检测结果展示的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、前言

        前言即叠个甲,本人学术不精,仅了解简单的python的基础以及少许深度学习内容,这次实验任务为学校发布,实现方法多为查询使用,并非原理介绍搞懂。

二、具体实现

        目标是利用深度学习实现病残树叶检测,需要框出标注,要求速度较快精度较高,故选取YOLO进行实现,因以前尝试过YOLOv5,本次实验也仍采用yolov5进行实验。

        实验的大概流程即为:

        1).数据处理:

                将压缩包里的图片进行数据清洗,筛掉特征不明显图片,划分训练集验证集,使用  labelimg进行数据标注;

        2).参数训练:

                使用yolov5进行数据训练,得到一个效果较好的参数文件;

        3).web实现:

                通过flask搭建web网页,可以使用pc端以及移动端访问网页进行目标检测,对于前端页 面要求能用就行,后端可以调用yolo进行检测即可。

1.数据处理

        本次数据集为学校发布,包含五十张左右的树叶图片。对图片使用Labelimg进行yolo数据集的标注,每张图标注完成后以txt格式存储其框选数据。

2.数据训练

        yolov5直接在github上下载得到。github.comhttps://github.com/ultralytics/yolov5

        首先下载requirements.txt上需要的包;

        之后打开其中的data,新建一个yaml文件用于训练,(sickleave.yaml)其中的具体代码如下:

# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: *****Desktop\sickleave  # dataset root dir
train: images/train  # train images (relative to 'path')
val: images/val  # val images (relative to 'path')
test:  # test images (optional)

# Classes
nc: 1  # number of classes
names: ['sickleave']  # class names

        上半为路径,下半为分类数以及分类名,因本次实验只要求框选出坏叶,故仅有一类,名称记为sickleave。

        之后从github上下载yolov5的参数模型;

Releases · ultralytics/yolov5 · GitHubYOLOv5 🚀 in PyTorch > ONNX > CoreML > TFLite. Contribute to ultralytics/yolov5 development by creating an account on GitHub.https://github.com/ultralytics/yolov5/releases

图2.2.1 参数模型下载页面展示

        页面上有一大把,大小不一,总结一下就是越大的参数越多,精度越高,训练所需时间更长,检测需要时间更长,但是特征学习更好,检测的效果更好,这里下了俩,一个yolov5s.pt,一个yolov5x.pt(前面那个比较小,后面这个比较大)。

        之后将下好的参数文件放进yolo的文件夹根目录中。

        下一步对train进行参数修改:

        打开train的edit configuration 中 参数行打入--weights yolov5x.pt --data data/sickleave.yaml --workers 1 --batch-size 8;

        之后运行即可开始训练,训练的结果保存在runs/train/exp中,包含参数文件和一大堆训练图展示

图2.2.2 train结果展示

        weights中best.pt即为训练好的参数文件。

         之后对val进行测试,打开yolo中的detect,同上修改参数,打入--weights best.pt --source ****\Desktop\sickleave\images\val即可,之后测试的结果存入runs/val中,这里展示两张图,分别是yolov5s.pt训练好后测试得到的和yolov5x.pt训练好后得到的。

        

图2.2.3  yolov5s.pt得到的一张结果图展示

图2.2.4  yolov5x.pt得到的一张结果图展示

         因我们这个实验并未有硬性指标,故仅通过简单观察,寻求一个大致不错的weight参数即可。

3.web搭建

        本次实验在web搭建上使用的为python中的Flask进行。在相关内容学习和查询的过程中,有幸发现了一位大佬的代码,在此应用了这位大佬的web端实现,下面为这位大佬的原文地址,欢迎大家前往阅读学习尝试:

YOLOv5部署到web端(flask+js简单易懂)_yolov5部署web_帅帅帅.的博客-优快云博客https://blog.youkuaiyun.com/weixin_44902604/article/details/130085119        将static,templates以及app.py放至yolo文件中即可运行。(感谢大佬的分享)

        运行结果如图:

 图2.3.1  web页面展示

                具体使用方法即为点击选择文件,在本地上寻找一张图片,之后点击开始检测, 之后会 在本地的runs/detect/exp/filename出生成检测完成的图片,之后点击展示图片,前往URL为 ***/sh的路由(?这部分名词概念不太清楚该怎么说,见谅)出展示出图片,不过仍会存在一些小问题,如当前为****/sh的地址,若是想再次选择检测,需要先回到端口;

                且再次展示图片时会遇到报错为:

图2.3.2  报错页面展示

                错误原因:yolo的detect结果每次运行都会新建一个exp(exp1;exp2;exp3.....) ,但这个 路径是继续沿着exp里找文件的,故出现了FileNotFoundError;

                之后去看了看yolo的参数:

(2条消息) 手把手带你调参YOLOv5 (v5.0-v7.0)(推理)_yolov5调参_迪菲赫尔曼的博客-优快云博客https://blog.youkuaiyun.com/weixin_43694096/article/details/124378167

                发现管控这部分的yolo参数为(exist-ok):

      

图2.3.3  yolo参数展示

               经查询,该参数的作用为保存的路径是否有文件,已有的话不再创建新的;

                让我比较迷糊的一点就是这个明明加载调用了,但是每次检测仍会创建新的,但是将其 注释掉了之后就只剩一个exp了,问题解决,但是不知原因。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值