yolov5识别图片(YOLOv5识别图像内苹果和香蕉)
YOLOv5为目标检测带来了极大的方便 。通过简单地训练YOLOv5 ,即可以实现一个速度快 、性能高的目标检测系统 。
下面介绍如何从头开始构造一个简单的目标检测系统 ,用来识别图像内的苹果和香蕉 ,并标注他们所在的位置 。
特别强调的是 ,YOLOv5给我们提供了全套解决方案 ,整个系统并不需要我们自己手写代码 。
对于通用任务 ,我们要做的就是找到开源数据集 ,训练它 ,然后就得到了完整的可以实现目标检测的系统 。
例如 ,我们找到花卉数据集 ,通过该数据集训练 ,就可以实现一个识别花卉的系统 。我们找到一个火车轨道伤损数据集 ,通过使用该数据集训练YOLOv5,就可以得到一个火车轨道伤损识别系统 。
如果我们要进行的是一个专用任务 。我们要做的工作可能要多一些 ,此时需要我们对一些训练图像进行标注 ,对其中出现的特定目标进行标注 。当然,我们可以使用labelImg非常方便地对图像内的特定对象进行标注 。
例如 ,我们要识别非常罕见的某个物体A 、物体B 、物体C 。我们只要找到一些包含这些物体的图像 ,并使用labelImg对他们进行标注 。然后训练该数据集 ,就可以得到一个新的YOLO系统识别新的图像上出现的物体A 、物体B 、物体C。
为什么要提到罕见的物体A 、B 、C 。因为常见的物体 ,我们都可以找到别人已经构造好的数据集 ,不需要我们额外做标注工作了 。
1 概述
首先 ,我们看下具体的流程:
步骤1:训练适用于当前项目的权重文件。 步骤2:使用训练好的权重文件 ,完成识别 。
下面使用图来说明一下:
步骤1:
训练适用于当前项目的权重文件 。
步骤2:
使用训练好的权重文件 ,完成识别 。
更具体来说 ,从头开始仅仅需要六个步骤即可 。具体步骤如下:
2 实现
如果已经具备一定的深度学习基础 ,上述步骤在半个小时即可完成 。
下面 ,简单对上述六个步骤做个介绍 。
2.1 step 1 配置anaconda
为了方便 ,直接安装anaconda就好 。这样比较方便,不需要我们额外进行配置了 。
2.2 step 2 下载YOLOv5
主要包含如下几个工作:
要件1:下载YOLOv5工程文件 要件2:下载权重文件 要件3:按照requirements.txt文件 ,配置第三方库 要件4:查看测试文件
要件1:下载YOLOv5工程文件
通过搜索引擎 ,找到官网,下载即可 。
要件2:下载权重文件
它有好多预训练好的权重文件 ,我们可以根据需要下载即可 。
如果问题比较简单 ,我们直接下载“YOLOv5n ”即可 。
总体来说:
预训练文件较小时 ,它的精读低 、但是速度较快 。
预训练文件较大时 ,它的精读高 、但是速度较慢。
各个文件的大小如下:
要件3:按照requirements.txt文件 ,配置第三方库
运行YOLOv5 ,需要很多第三方库 ,直接使用YOLOv5自带的requirements.txt一次搞定 。
要件4:查看测试文件
YOLOv5给我提供了两张测试图像 ,路径如下 。
2.3 step 3 测试YOLOv5
本步骤测试YOLOv5是否能够正常运行。如下图 ,使用YOLOv5自带的测试图像 、权重文件 ,实现目标检测 。
图中:
左侧:测试图像
中间:权重文件
右侧:左侧测试图像的检测结果 。可以看到检测出了领带 、人 、车等等 。
直接运行detect.py即可 。
需要注意的是 ,要配置其参数:
source:测试文件位置
weight:权重文件位置
2.4 step 4 数据集处理
这里需要使用labelImg 。labelImg用来对图像进行标注 ,它能够根据手工标注自动给出对象在图像内的位置、对象大小 。
如下图所示,文件classes所示:共有两个分类苹果和香蕉 。苹果对应着类别0 ,香蕉对应着类别1.
如下图所示 ,图像lilizong1.jpg在labelImg处理后,会得到lilizong1.txt文件 。
lilizong1.txt中 ,共有四行 ,前三行对应着lilizong1.jpg中三个苹果 ,第四行对应着lilizong1.jpg中的一只香蕉 。
标注文件lilizong1.txt中 ,数值包含四个部分:
【分类 、对象位置(x,y) 、对象尺寸(宽度、高度)】
(x,y) 、(宽度 、高度)都是归一化的值 。
简单理解 ,原始图像的宽度 、高度都是1 。或者将未知 、尺寸都理解为原图像的百分比 。
例如 ,在lilizong1.txt中 ,第1行中:
[0,0.47,0.52,0.12,0.118]
其中数值0是分类 ,对应着apple ,(0.47,0.52)是苹果在图像中的位置 ,(0.12,0.118)是苹果的宽度和高度。
0.47表示当前的apple距离左边界的距离占图像总宽度的47%
0.52表示当前的apple距离上边界的距离占图像总高度的52%
0.12表示当前的apple的宽度占图像总宽度的12%
0.118表示当前的apple的高度占图像总高度的11.8%
labelImg安装方式如下:
pip install labelImg
labelImg的运行方式如下:
labelImg
运行labelImg ,如下图所示 。
主要操作如下:
1 、图像目录:设定要标注的图像在哪
2 、标签目录:生成的标签文件存在哪
3 、支持类型:选择【YOLO】(也支持其他类型)
4 、create rectangle(生成标注框)
5 、设置默认标签
导入图像后 ,框定图像内的对象 、设定标签即可获取对应的包含类别 、位置 、宽高的标注文件 。
这里主要分为四部分:
1、data.yaml:配置文件
2 、train:训练文件
3 、val:验证文件
4、test:测试文件
配置文件(data.yaml)的内容主要包含:
1 、设定好目标检测的分类
2 、nc:类的个数(nubmer of class)
3 、train:训练文件的路径
4 、val:验证文件的路径
需要注意,使用yolov5 ,既要包含训练文件 、又要包含验证文件。无论训练文件 ,还是验证文件其中的图像都要包含对应对应的标签 。
2.5 step 5 训练YOLOv5
训练过程,就是使用训练文件 、验证文件 ,获取权重文件的过程 。
运行train.py完成YOLOv5的训练 。需要注意的是 ,要配置其对应的参数 ,主要包含:
--batch-size="2" :批处理大小
--epochs="200" :训练轮次
--data="lilizong/data.yaml":数据源位置
--weights=".\weight\yolov5n.pt":使用的权重
配置方式如下:
2.6 step 6 目标检测
使用训练好的权重 ,进行目标检测 。
运行train.py ,实现目标检测 。需要配置参数如下:
--source=".\lilizong\test" :原文件路径
--weights=".\runs\train\exp\weights\best.pt":训练好的权重
配置方式如下:
识别香蕉和苹果(目标检测)的结果如下所示:
视频课程地址:
YOLOv5实战(检测苹果和香蕉)--计算机视觉视频教程-人工智能-CSDN程序员研修院
创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!