使用yolov5实现图像识别

news2024/11/25 14:50:41

在这里插入图片描述

在这里插入图片描述

文章目录

      • 开始之前
      • 下载依赖
      • 下载数据集
      • 标记数据集
      • 整理文件
      • 新建 yaml 文件
      • 开始训练
      • 模型选择
      • 训练完成
      • 使用模型进行识别
      • 自定义模型下载
      • 数据集下载地址分享
      • 问题

开始之前

你应当先克隆这个仓库

git clone https://github.com/ultralytics/yolov5 # clone

下载完毕后,进入克隆的仓库目录

cd yolov5

下载依赖

pip install -r requirements.txt # install

下载数据集

这里有个数据集,为了节省训练时间,文件不是很大。结尾处我会推荐几个大型数据集下载地址

数据集下载
提取码:crnr

解压后,你会看到这几个文件夹:

请添加图片描述

标记数据集

可以登录 https://www.makesense.ai/ 网站去标记数据,当然,你也可以使用其他标记网站。

在这里插入图片描述

选择数据集目录,然后点击Object Detection,其中Image recognition主要用于图像分类。

在这里插入图片描述

注意注意注意 ⚠️ ⚠️ ⚠️ :请牢记你导入的图片,推荐你新建一个目录单独存储你需要标记的图片文件,这一步很关键,不然一会图片标签对应不上,你将白忙活一场!!!

在这里插入图片描述

这里我们可以首先添加几个标签,比如我想训练它识别苹果香蕉,那你就可以设置两个标签,分别为:apple,banana

根据我们的数据集,这里我们选择设置一个名为plastic的标签名,我使用的数据集是下面这个目录。

请添加图片描述
如果你想同时训练这些所有类型的目录,你可以把他们集合起来,放在同一个目录当中然后导入到这个标记网站。

在这里插入图片描述

标记你需要识别的部分,然后点击选择标签

在这里插入图片描述

标记过程非常无聊,很多次我想睡觉。这里我只标记了200个,理想情况下,需要更多的数据,如果你的时间充沛或者对识别结果要求很高,请尽量多标记一些数据,过程是很辛苦的。

以此类推,等你标记完所有数据,点击Export Annotations

在这里插入图片描述

在这里插入图片描述

导出之后,我们将看到一个包含很多txt文件的文件夹。

请添加图片描述

plastic1.txt 文件就是代表 plastic1.jpg 图片的标记文件。以此类推。

请添加图片描述

其中的 0 就是代表我们的标签,一会训练的时候,你可以设置多个标签,比如设置 0 代表塑料,1代表纸箱等。

剩下那几个代表我们标记图像在整个图片当中的位置。

整理文件

这里我创建了一个名为 mydata 的文件夹。你应当记住你的文件路径。

文件夹内包含了两个文件夹,分别为 trainval

请添加图片描述
train 文件夹内又包含了 imageslabels两个文件夹。

当然,val 文件内也需要这个两个文件夹。

在这里插入图片描述

  1. images:我们标记的图片
  2. labels:标记位置的 txt 文件

请添加图片描述

请添加图片描述

新建 yaml 文件

我这里新建了名为 mydataset.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: mydata  # dataset root dir
train: shuju  # train images (relative to 'path') 128 images
val: shuju  # val images (relative to 'path') 128 images
# test:  # test images (optional)

names:
  0: plastic
  • path: 数据集的根目录。所有其他路径(如训练集和验证集)都是相对于这个路径的。
  • train: 训练数据集的路径。
  • val: 验证数据集的路径
  • test: 可选字段,指定测试数据集的路径。

这里配置文件的意思就代表 mydata/shuju

举个例子,如果你的 mydata(包含了train,val的文件夹) 目录在 /aaa/bbb/ccc/mydata,那你的配置文件应该如下。

# 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: /aaa/bbb/ccc/mydata  # dataset root dir
train: train  # train images (relative to 'path') 128 images
val: val  # val images (relative to 'path') 128 images
# test:  # test images (optional)

names:
  0: plastic

它就代表: /aaa/bbb/ccc/mydata/train. /aaa/bbb/ccc/mydata/val.

这里的 0 就是我们标签,如果你当时在一个图片内标记了好几个物体。例如,你不仅标记塑料还标记了纸,那你的配置文件就应该为:

names:
  0: plastic
  1: paper

相应的你的 txt 文件也会自动出现多个标签,如果你标记数据时同时在一张图片内标记了多个物体的话。

开始训练

这个 mydataset 就是你配置文件的地址。

python train.py --img 640 --epochs 3 --data mydataset.yaml --weights yolov5s.pt

这里使用了 yolov5s

模型选择

执行训练的时候使用了 --weights yolov5s.pt ,这是一种模型,你可以参考下图具体选择,如我们选择 yolov5x ,就可以使用 --weights yolov5x.pt ,推荐使用 yolov5s,除非你要求的准确度非常高,不然你需要花费非常长的时间和足够的硬件支持来训练它。

在这里插入图片描述

训练完成

训练好的模型在 runs/train/exp**/weights/best.pt

使用模型进行识别

这里的 best.pt 是你训练的模型地址。 –source 后面是你需要识别的图片地址。

python detect.py --weights best.pt --img 640 --source plastic184.jpg

在这里插入图片描述

在这里插入图片描述

自定义模型下载

如果你不想进行从头训练模型,可以下载这个已经训练好的模型进行上一步的 测试模型进行预测

分类模型下载

提取码:vvd6

数据集下载地址分享

1:数据集下载地址1

2:数据集下载地址2

问题

如果运行当中出现问题,欢迎咨询。

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

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

相关文章

【轻量化网络系列(5)】ShuffleNetV2论文超详细解读(翻译 +学习笔记+代码实现)

前言 今天我们要讲的是ShuffleNetV2,它是由旷视科技团队在 2018 年提出的,原论文发表在ECCV上。在同等复杂度下,ShuffleNetV2比ShuffleNet和MobileNetv2更准确。这篇论文除了提出这个全新的轻量化网络结构以外,还创新性地提出四…

redis第二章-第二课-主从模式和哨兵模式原理

主从模式 1、复制一份redis.conf,命名为redis-6380.conf文件 2、修改该文件,修改端口号,线程文件,日志文件,以及指定文件存放目录 3.在从节点上配置,这是核心配置 从本机6379的redis实例复制数据 replica…

如何准备一场面试

目录 一、心理准备1、内心的答案2、表述的答案 二、简历准备三、知识准备&面试流程1、一面:技术面2、二面:BOSS面3、终面:HR面 四、面试的技巧有哪些1、自信2、真诚3、主动4、复盘 五、补充:其他面试内容1、逻辑思维2、技术开…

圆柱点云展开为平面点云

文章目录 简单计算图示目标:将圆柱点云展开为平面点云用途(目前想到的)思路:本文展开思路关键点 简单计算图示 目标:将圆柱点云展开为平面点云 注意:工业实际场景中只能获取可见区域的圆柱侧面&#xff0c…

CC2530+ESP8266与手机APP通信

一、案例介绍 下面是一个基于CC2530和ESP8266的项目示例,演示了如何使用CC2530与ESP8266通信以及使用AT指令控制其WiFi模块设置和数据传输。 项目概述: 通过CC2530控制ESP8266将其配置成AP+TCP服务器模式,并通过手机APP连接到TCP服务器并完成数据传输。ESP8266将作为一个热…

基于Nginx部署的LNMP及搭建论坛

文章目录 1.部署LNMPLNMP架构拓扑图1.安装Nginx服务😊2.安装MySQL服务🤣3.安装配置PHP解析环境😂 2.部署Discuz社区论坛Web应用3. 部署WordPress社区论坛Web应用4. fpm参数优化 1.部署LNMP LNMP架构拓扑图 1.安装Nginx服务😊 ##…

DPDK相关开源代码汇总

上篇《DPDK相关学习资料汇总》中,我们讲了学习DPDK的相关资料,今天我们来讲一下DPDK相关的开源代码。 1、suricata Suricata引擎能够进行实时入侵检测(IDS)、内联入侵预防(IPS)、网络安全监控(NSM)和离线pcap处理。是一款开源、快速、高度稳定的网络入…

【Python wxPython】零基础也能轻松掌握的学习路线与参考资料

wxPython是一个基于wxWidgets C类库的Python GUI框架,使用它可以轻松创建跨平台的可视化应用程序。此外,wxPython与Python语言天然融合,让Python程序员可以轻松使用Python编写图形界面程序。因此,学习wxPython实际上就是学习如何用…

基本思维方式

经济学定义 人的欲望是无止境的,而资源有限,这是一个矛盾。 经济学是研究个人和社会如何最优利用由自然和前人提供的有限资源的学问。 经济学的范围 Microeconomics 微观经济学 研究各个行业的运作的以及企业和个人的决策行为的经济学分支。Macroeco…

BTC API:如何在比特币网络上创建应用程序?

比特币是一种去中心化的数字货币,可以通过比特币API与比特币网络进行交互。比特币API是一组允许开发人员与比特币网络进行交互的编程接口,可以帮助开发者构建各种比特币应用程序。 比特币API可以用于创建区块浏览器、钱包和比特币支付。其中利用比特币A…

机器视觉_HALCON_编程指南_多线程编程

文章目录 一、前言二、HALCON并行编程2.1 深入可重入性⭐2.2 多线程编程设计问题2.3 多线程算子2.4 示例 三、结语 一、前言 本文是HALCON的 programmers_guide(编程指南) 中的2.2章节,章节名直译是——用HALCON进行并行编程,实际…

C++入门:命名空间、函数重载、缺省参数

目录 一:命名空间 1.命名空间的意义 2.命名空间的定义 3.如何使用命名空间中成员? 小结 二:C的输入输出 三:函数重载 1.概念 2.实例 3.为什么C能支持函数重载而C不行? 【1】先看一段C语言代码 【2】我们把上…

基于单片机的七彩音乐喷泉设计

目录 一、方案流程及技术规格书设计 二、系统硬件电路设计 三、软件编写及调试 四、系统调试测试与分析 前言 随着时代的进步,人们对生活质量的要求也在不断提升,因此,51单片机七彩音乐喷泉系统应运而生,它不仅可以满足人们对…

I.MX RT1170加密启动详解(3):HAB加密启动原理

上一节使用对镜像进行签名认证,这可以防止镜像被篡改。但我们还是希望Flash中的程序不会被别人看到,所以这就需要加密启动了。 文章目录 1 HAB加密启动流程2 扩展知识: DCP和SNVS 1 HAB加密启动流程 如下图所示就是HAB加密启动的整个流程&a…

蓝桥杯国赛备赛(嵌入式组)

一、数码管(拓展板)(共阴接法) 引脚控制 PA3 :RCLK 串型存储时钟输入 (上升沿有效) PA2 :SCK 串行移位时钟输入(上升沿有效) PA1 :SER 串型数据输入 发送数据时先发高位&#xff1…

【UnityShader入门精要】【总结记录】【第二章-1】

☀️博客主页:CSDN博客主页 💨本文由 萌萌的小木屋 原创,首发于 CSDN💢 🔥学习专栏推荐:面试汇总 ❗️游戏框架专栏推荐:游戏实用框架专栏 ⛅️点赞 👍 收藏 ⭐留言 📝&a…

使用 Access SQL 插入、更新和删除表格记录

参考链接 使用 Access SQL 插入、更新和删除表格记录 | Microsoft Learnhttps://learn.microsoft.com/zh-cn/office/vba/access/concepts/structured-query-language/insert-update-and-delete-records-from-a-table-using-access-sql 将记录插入表格 基本上有两种方法可以向…

client-go架构与原理介绍

个人博客 一、架构展示 client-go 库中的各种组件架构如下图所示: 二、目录结构 client-go 是用 Golang 语言编写的官方编程式交互客户端库,提供对 Kubernetes API server 服务的交互访问。 其源码目录结构如下: . ├── discovery …

再识openmmlab,用mmDeploy实现部署的前期需要了解一些内容

OpenMMLab 是一个用于学术研究和工业应用的开源算法体系,于2018年年中开始,由 MMLab(香港中文大学多媒体实验室)和商汤科技联合启动。 如果第一接触的话,还是建议参考官方环境配置教程:Windows 环境配置 -…

Midjourney万能高清咒语,真正的近看也美

明明我都拿人家的图垫图了,为什么质量还是很差? 明明别人都把咒语分享出来了,为什么质量还是很差? 今天我们就来解决这两个问题,看到就是缘分,点点手指来个小心心不过分吧,哈哈 什么你在怀疑我的…