【Yolo】YoloV5训练自定义模型

news2024/11/19 2:19:01

【Yolo】Jetson Orin Nano下部署 YoloV5

        上一篇博文主要记录了在Jetson Orin Nano下部署YoloV5环境,并运行了yoloV5n.pt模型,本篇在上一篇的基础上,进一步记录如何训练自己的目标模型,我们以一根口香糖盒子为训练对象进行说明。

一、目标资源标记

1. 安装labelimg

       通过以下命令安装labelimg软件,labelimg用于在待训练的图片上进行目标标记。可以在windows和ubuntu下安装和使用,本文为了方便在Window10下安装,标记完再把生成的文件拷贝到Jetson Orin Nano下进行训练,因为我的Win10电脑没有显卡而Jetson Orin Nano的显卡非常牛逼。

pip install labelimg

安装完毕后,即可通过labelimg命令直接启动它,长这个样子。

 2. 准备素材

       2.1 建立目录

           新建一个文件夹用来存放训练资源,我们暂且将它命名为“CustomDataset”,在里面再按以下目录结构建立空文件夹:

                         Parent

                        ├── CustomDataset

                                └── images

                                         └──train

                                         └──val

                                └── labels

                                         └──train

                                         └──val

    2.2  准备图片

           多拍点待测物照片,放到一个文件夹CustomDataset/images/train里,这里拍了22张口香糖盒子的照片,从各个角度拍的照片越多,训练结果也就越聪明,后期识别就越精准。

 

 2.3 labimg标记资源

       通过Open Dir指定CustomDataset/images/train,载入所有图片,通过Change Save Dir指定CustomDataset/labels/train为标记文件的生成目录,在下图红色1的位置单击按钮切换到YOLO格式,它将来会生成*.txt格式的标记文件,如果是默认的VOC,它将生成*.xml格式的标记文件,虽然可以转换成*.txt,但我们为了方便直接选yolo格式。单击Create RectBox按钮然后框选目标,并输入一个类型名后面每个图片的标记,就都用这同一个类型名,我这里是“YourYiDa”。后面依次把每个图片都要进行同样的标记,记得Ctrl+S保存

 ​​​

 

 2.4 拷贝资源

       现在将CustomDataset/images/train里面的所有图片一份到val文件夹下,同样的把CustomDataset/labels/train里面的所有*.txt文件拷贝一份到val文件夹。然后把整个CustomDataset文件夹复制到Jetson Orin Nano下,为了跟yolov5源码隔离开,我将它跟yolov5的代码放到同一级目录(yolov5的克隆,见上一篇第五节内容)。

3.修改配置

      进入yolov5/data目录下,新建一个YourYiDa_data.yaml文件,名字可以自定义,取一个跟项目相关的名字就好,然后把以下内容贴进去,其中train目录为刚才拷贝进来的CustomDataset/images/train和val的实际路径。nc表示只识别目标物体种类,如果是多个也可以按实际个数去写,但下面names的类型名集合,就要跟nc个数保持一致,采用"names : ["YourYiDa", "Person", "Apple"]"这样的形式。这里为了方便记录,只识别一种。

#train and val data
train : ../../CustomDataset/images/train
val   : ../../CustomDataset/images/val

#number of classes
nc    : 1

#class names
names : ["YourYiDa"]

 进入yolov5/models目录下,将yolov5/models目录下的yolov5n.yaml复制一个,重命名为YourYiDa_model.yaml,并将其中的 nc节改为跟上面配置文件一致,本文是nc=1

 4. 训练

     进入yolov5目录下,执行以下命令:

python train.py --data ./data/YourYiDa_data.yaml  --cfg ./models/YourYiDa_model.yaml  --weight ./yolov5n.pt  --epoch 100 --batch 16 --device 0

 如果失败,请检查路径是否正确,另外资源被占用,内存不够也可能导致失败,可以关闭其他程序多试几次。正常训练如下图所示。

 训练成功后会输出best.pt权重文件,路径如下图,即在yolov5文件夹下的runs/train/exp7/weights目录下。

   如果此时Jetson Orin Nano上插着一个usb摄像头,那么就可以直接测试训练效果,命令如下:其中source 1表示USB摄像头,它的设备号为1,CSI摄像头设备号为0,具体查询设备号见上一篇第二节内容。

python detect.py --source 1 --weights ./runs/train/exp7/weights/best.pt --img 640

                                  

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

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

相关文章

Kali Linux 操作系统安装详细步骤——基于 VMware 虚拟机

1. Kali 操作系统简介 Kali Linux 是一个基于 Debian 的 Linux 发行版,旨在进行高级渗透测试和安全审计。Kali Linux 包含数百种工具,适用于各种信息安全任务,如渗透测试,安全研究,计算机取证和逆向工程。Kali Linux 由…

学习笔记(4)页面开发

目录 1,页面开发1.1,标签类1.2,资源引用1.3,页面跳转 2,开发规范2.1,应用生命周期2.2,页面生命周期:2.3,条件编译 3,注意事项 1,页面开发 1.1&am…

真实业务场景使用-模板模式+策略模式组合

模板和策略设计模式一般是使用最频繁的设计模式,模板的场景主要是处理一系列相同的流程,将这些流程放到模板里,每个流程里的处理可能有一些不一样的地方,则可以抽象出一个方法,由每一个有实际意义的子类实现。 策略模…

从供应链角度看进销存:区别与联系

供应链和进销存是两个紧密相关的概念,它们都涉及到企业在商品贸易中的运作过程。虽然它们有一些相似之处,但是它们也有一些显著的区别。本文将从几个方面探讨供应链和进销存的区别。 一、概念定义 供应链的定义:供应链是一系列的活动&#…

WPF 多媒体MediaElement 的使用(一)

本章讲述MediaElement的简单使用: WPF 中对于多媒体的支持非常完整,可以使用MediaElement 为应用程序添加媒体播放控件,以完成播放音频、视频功能。MediaElement 属于UIElement,同时也支持鼠标及键盘的操作。 想以交互方式停止、…

通达信N字形态选股公式,突破前期高点发出信号

行情经历一波上涨之后回调,然后再次上涨,形态类似于字母N,这就是N字形态。该形态在不同的分析方法中均有描述,如123法则、波浪理论等,只是名称不同而已。 本文的N字形态选股公式,以突破前期波段高点发出信号…

2023年留学基金委(CSC)青年骨干教师出国研修项目解读及建议

5月4日,国家留学基金委(CSC)公布了2023年青年骨干教师出国研修项目通知,知识人网小编现将其选派工作流程、选派办法、申请材料及说明原文转载并加以解读、提出建议。 知识人网解读及建议 一、2023年的通知精神与往年相比&#xf…

MySQL索引、事务与存储引擎

数据库索引 是一个排序的列表,存储着索引值和这个值对应的物理地址,在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址(类似于C语言的链表通过指针指向数据记录的内存地址)无需对整个表进行扫描,而是先通…

C++图文安装教程,计算机零基础都能懂

系统:win11 软件:code blocks&DEV-CPP 文章目录 一、Dev-Cpp安装步骤1.点击安装包2.选择我们的语言为English3.选择我同意即可4.点击next就可以,最后一个框除非是你之前有写过C的项目,想要清除,否则我们不用…

【Java|golang】2432. 处理用时最长的那个任务的员工

共有 n 位员工,每位员工都有一个从 0 到 n - 1 的唯一 id 。 给你一个二维整数数组 logs ,其中 logs[i] [idi, leaveTimei] : idi 是处理第 i 个任务的员工的 id ,且 leaveTimei 是员工完成第 i 个任务的时刻。所有 leaveTimei…

Android---启动速度优化

App 启动流程 1. 点击桌面 App 图标,Launcher 进程采用 Binder IPC 向 system_server 进程发起 startActivity 请求 ; 2. system_server 进程接收到请求后,向 zygote 进程发送创建进程的请求; 3. zygote 进程 fork 出新的子进程…

KDGK-F断路器机械特性测试仪

一、产品概述 KDGK-F 断路器机械特性测试仪可用于各电压等级的真空、六氟化硫、少油、多油等电力系统高压开关的机械特性参数测试与测量。测量数据稳定,抗干扰性强,可在500KV等级及以下电站做实验,接线方便,操作简单,是…

TikTok选品要怎样才能选到爆品?!

对于做TikTok的商家而言,选品是非常重要的,因为一个产品爆了之后能带动其他产品的销量,那我们要如何有效的选品呢? 一、多平台选品逻辑 首先要知道一个点,在独立站爆的品也会在亚马逊爆,而TikTok已经成为一…

安卓Glide那些事情面试,一篇全部搞定

安卓Glide那些事情面试,一篇全部搞定 一.Glide有几级缓存???二.Gllide源码分析三.内存缓存和磁盘缓存LruCache算法四.Gllide基本使用五.Gllide高级使用:配置1.配置内存和磁盘缓存大小2.配置okhttp3.配置https认证4.使用 一.Glide有…

冲浪杂记——

华为od是指什么? 华为OD(Open Developer Platform)是华为面向全球开发者推出的开放平台,旨在为开发者提供丰富的技术资源和开发工具,支持开发者快速构建基于华为技术的应用程序、解决方案和服务。华为OD平台为开发者提…

微软新Bing全面开放BingChat,无需排队,直接用

我是卢松松,点点上面的头像,欢迎关注我哦! 好消息,所有人都能上手微软Bing了!微软表示,为了感谢大量用户的使用与反馈,从今天起新 Bing 不再有候补名单,只要使用微软账户登录 Bing,…

函数(1)

文章目录 目录1. 函数是什么2. 库函数3. 自定义函数4. 函数的参数4.1 实际参数(实参)4.2 形式参数(形参) 5. 函数的调用5.1 传值调用5.2 传址调用5.3 练习 附: 目录 函数是什么库函数自定义函数函数的参数函数的调用函…

实现北大官网首页的动态图标

逛网站的时候,看见有人在问如何实现北大官网的动态图标,因为做过类似的东西,所以想把这个方法整理下来。 点上去会有一个小动画的那种。 如何实现该图标的动态效果 一句话:用svg实现图标,利用stroke-dasharray和str…

Rust - 切片Slice

Slice类型 Slice数据类型没有所有权,slice允许我们引用集合中一段连续的元素序列而不用引用整个集合。字符串slice(string slice) 是String中 一部分值的引用。如下述代码示例,不是对整个String的引用而是对部分String的引用: fn main() {l…

虹科方案 | HK-Edgility面向未来的安全 SD-WAN

通过上期的文章,我们了解到虹科HK-Edgility软件系统《随时随地保护您的远程工作解决方案》的解决方案。这篇文章,我们将带您了解虹科系统在SD-WAN的方案简介。 一、时代背景 过去,企业使用专线或MPLS解决方案将其站点和办公室连接到企业数据中…