YOLOv5识别图像内苹果和香蕉

news2025/7/22 11:10:40

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程序员研修院

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/35610.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HTML5学习笔记(三)

离线应用 HTML5新增了一个离线存储的API,用于实现本地数据的缓存,从而使得开发离线应用成为可能。 所谓“离线存储”,指的是建立一个URL列表,该列表可以包含HTML文件、CSS文件、JavaScript文件和图片等。当与服务器建立连接时&am…

dragTabs(vue)

vue实现tabs拖拽 效果图 dragTab.vue <template><div class"yh-tabs"><draggable :list"tabList" :group"groupName" animation"300" item-key"id" end"dragEnd"><template #item"{ …

CANoe-vTESTstudio之Test Diagram编辑器(功能介绍)

1. 阶段 Test Diagram从测试设计到测试执行,分为5个阶段: Test Design 在测试设计阶段,测试设计人员使用图形元素和分配的测试代码对测试用例进行建模。这个阶段的结果是生成一个测试图表 Evaluation 生成的测试图表,需要评估其正确性。在评估期间,将验证各个元素及其…

3.7 学会这2招,让你的笔记分分钟上热门 【玩赚小红书】

什么是上热门&#xff1f; 上热门之前&#xff0c;我们先了解一下什么是上热门。上热门就是笔记被系统主动推荐&#xff0c;并在很长一段时间里&#xff0c;有源源不断的粉丝点赞、收藏&#xff0c;相当于平台给你的笔记开了专属流量口&#xff0c;推送给那些平常关注该笔记类型…

vue实战项目之vue-cli脚手架搭建过程详解

目录 1.可以参考vue-cli的中文文档进行下载安装 2.查看node和npm版本 3.安装依赖包 4.依赖包以前版本太老&#xff0c;如何更新&#xff1f; 5.创建一个项目 6.图形化界面 1.可以参考vue-cli的中文文档进行下载安装 vue-cli中文文档 2.查看node和npm版本 在cmd或者编译…

【数据库原理及应用】——关系数据库的规范化理论(学习笔记)

&#x1f4d6; 前言&#xff1a;关系数据库的规范化理论是数据库设计的一个理论指南&#xff0c;提供了判断一个关系模式优劣的理论依据。本章讨论的关系数据库的规范化理论主要包含三方面内容&#xff1a;函数依赖、范式和模式分解准则。函数依赖起着核心作用&#xff0c;是模…

易基因|TSD物种全基因组DNA甲基化模式对孵育性别和过去孵育温度的响应 | 性别决定

易基因&#xff5c;TSD物种全基因组DNA甲基化模式对孵育性别和过去孵育温度的响应 | 性别决定 大家好&#xff0c;这里是专注表观组学十余年&#xff0c;领跑多组学科研服务的易基因。 2022年8月23日&#xff0c;《MOLECULAR ECOLOGY》杂志发表题为“Genome-wide DNA methyla…

[附源码]java毕业设计幼儿园管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

[附源码]Python计算机毕业设计二手书交易软件设计与实现

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

嵌入式驱动初级-字符设备驱动基础

文章目录前言一、驱动学习预备知识1.什么是设备驱动程序2.向内核添加新功能方法2.1新功能源码与Linux内核源码不在同目录下2.2在Ubuntu下加载和删除ko文件步骤2.3在开发板下加载和删除ko文件步骤2.4内核模块基础代码解析二、字符设备驱动框架2.1Linux内核对设备的分类2.2字符设…

css点击文字(非按钮) 能自动改变颜色。

实现功能说明&#xff1a; 如下图&#xff0c;点击不同的文字能够切换不同的页面&#xff0c;同时这个tab的文字能够相应的变色&#xff0c;其他未选中的状态默认为灰色。 方案一&#xff1a; 使用css的伪类。 :active&#xff0c;元素被点击时变色&#xff0c;但颜色在点击后…

为什么 NGINX 的 reload 命令不是热加载?

这段时间在 Reddit 看到一个讨论&#xff0c;为什么 NGINX 不支持热加载&#xff1f;乍看之下很反常识&#xff0c;作为世界第一大 Web 服务器&#xff0c;不支持热加载&#xff1f;难道大家都在使用的 nginx -s reload 命令都用错了&#xff1f;带着这个疑问&#xff0c;让我们…

DiffusionDet: Diffusion Model for Object Detection

paper: https://arxiv.org/abs/2211.09788 code&#xff1a;https://github.com/ShoufaChen/DiffusionDet 探索了扩散模型在非生成类任务&#xff08;目标检测&#xff09;中的应用。相较于传统Coarse-to-fine方法&#xff0c;基于扩散思路训练有两个特点&#xff1a;1&…

网络编程/计算机网络

目录 一、网络基本概念 1.网络 2.互联网 3.ip地址 4.MAC地址 5.端口号Port 6.网络协议 二.网络分层模型 1.数据链路层 2.网络层 3.传输层 4.应用层 三、网络应用程序通信流程 四、socket 网络编程 1.主机字节序列和网络字节序列 2.套接字地址结构 &#xff08…

离群点检测和新颖性检测

引言 在异常检测领域中&#xff0c;我们常常需要决定新观测点是否属于与现有观测点相同的分布&#xff0c; &#xff08;则称它们为inlier),或被认为是不同的(outlier). 在这里&#xff0c;必须做出两个重要的区别&#xff1a; 异常值检测&#xff1a;outlier detection 训练…

List接口与实现类

目录 一、List接口 1.特点&#xff1a; 2.方法&#xff1a; 二、List接口的使用 三、List实现类 1.ArrayList&#xff08;重点&#xff09; &#xff08;1&#xff09;特点 &#xff08;2&#xff09;示例 &#xff08;3&#xff09;源码分析 2.Vector &#xff08;1…

Python列表推导式——List

目录 遍历列表 range函数 列表推导式(★★★★★)五星技能点 五万次【列表推导式】与【for】遍历计算消耗时间对照表&#xff1a; 列表推导式逻辑判断 遍历列表 通过for in循环来遍历集合列表 range函数 我们基础range函数是参数范围是range(start,stop)&#xff0c;在下…

利用天翎知识文档+群晖NAS搭建企业知识库,享用智能检索

编者按&#xff1a;检索是知识文档管理中常见切十分重要的功能&#xff0c;搭建企业知识库必不可少。本文分析了智能检索的特点&#xff0c;并介绍了其在知识文档管理系统中的实现。 关键词&#xff1a;智能检索&#xff0c;移动端&#xff0c;群晖NAS 知识管理中的检索功能 …

基于Java+SpringBoot+Mybaties+Vue 在线问卷调查系统设计与实现

一.项目介绍 本项目 可支持注册、登录 创建问卷、设置问卷内容&#xff08;支持单选、多选、问答题&#xff09; 分享问卷链接、分析问卷 查看问卷库、以及填写问卷内容 等功能 该项目采用 Springboot Mybaties Vue element UI 框架实现 二.环境需要 1.运行环境&#xff1…

教育科技创新即将崛起

随着“双减”政策的不断落实&#xff0c;真正具有创新精神和懂得教育科技的人&#xff0c;他们所创造的新模式、新生态即将崛起&#xff0c;属于教育科技和创新的春天即将到来。 那么&#xff0c;教育科技化和创新在不同的教育场景有什么体现呢&#xff1f; 我们先来看看目前…