Android端 可使用Yolov5训练 路标识别

news2024/11/16 23:38:20

相信大家对于路标识别,红绿灯识别,图形识别opencv中也是一件烦人的事情,其参数是及其受到现实环境因素的影响的,那么今天我就给大家推荐一种方式,缺点是周期长,但其优点是如果训练效果好久对于环境的各种变化的适应性增强了。

目录

一、环境搭建

1.1 Python3.9

1.2 YOLOv5        

1.3 labelimg 

1.4 Cuda

1.4.1 安装Cuda

1.4.2 pytorch下载

1.4.3 运行

1.5可能遇到的问题

二、开始工作

2.1 训练模型

2.1.1 创建训练的数据集(图片+标记好的txt文件)

2.1.2 类别声明 以及 数据集目标指引

2.1.3 超参(根据自身需要注意改的地方即可)

2.2 预测模型

三、我们可以部署在安卓移动端 --tflite


一、环境搭建

1.1 Python3.9

我们需要使用Anaconda3创建一个Python3.9的环境,这是为了后续方便使用labelimg进行数据标记和yolov5中需要的pytorch对应需要的环境   

我的环境变量的导入信息

Py3.9的包

1.2 YOLOv5        

YOLOv5 🚀 in PyTorch > ONNX > CoreML > TFLiteicon-default.png?t=N7T8https://github.com/ultralytics/yolov5


 

下载好后在不包含中文目录的yolov5的cmd中运行下载其中指定包的版本

pip install -r requirements.txt -i  https://pypi.tuna.tsinghua.edu.cn/simple

1.3 labelimg 

在cmd中或者conda的管理员的控制台下,使用pip下载labelimg即可

pip install labelimg

如何标记标记顺序

1.4 Cuda

使用GPU训练项目(我们需要将YOLO中的框架修改下从默认的CPU训练转变成GPU训练模式)

或者这样查询

nvidia-smi

1.4.1 安装Cuda

CUDA Toolkit Archiveicon-default.png?t=N7T8https://developer.nvidia.com/cuda-toolkit-archive

为了稳定性和pytorch版本我选择的是11.8

我选择的是本地local安装然后一直点就对了,最终我们在Program Files中可以找见

在环境变量中关于英伟达的信息我有以下配置

1.4.2 pytorch下载

在这里我试过也看很多地方适配的是2.1.0版本

安装这2.7GB的pytorch最好和Cuda本地安装的时候找一个良好的网络环境进行安卓

pip install torch==2.1.0 torchvision==0.16.0 torchaudio==2.1.0 --index-url https://download.pytorch.org/whl/cu118

1.4.3 运行

代码中的需要修改使得GPU才是训练的device

运行查看是不是已经是GPU了

1.5可能遇到的问题

Error #15: Initializing libiomp5md.dll, but found libiomp5md.dll already initialized

在指定下载好环境的env下:删除..\Anaconda3\envs\指定下载好环境\Library\bin\libiomp5md.dll

可能存在两块GPU的情况

在网上找见对应的电脑怎么开启独显

二、开始工作

2.1 训练模型

更具上述所说过的我们需要训练一个权重模型pt

官方给的图片

2.1.1 创建训练的数据集(图片+标记好的txt文件)

我们先将所有的信息如图下图防止在一起

在data文件夹下创建datasets文件夹其分支下在创建images和labels,在这两个新分支下均创建test和train和val文件夹用于后续存放内容

datasets
    ├── images
    │   ├── test
    │   ├── train
    │   └── val
    └── labels
        ├── test
        ├── train
        └── val

将标记好的图片放置在images下的train和val中分别的两份;在labels下的train和val中放置txt文件

随后我们将需要预测的图片放置在data的images文件下

2.1.2 类别声明 以及 数据集目标指引

  • 我们在data的test.yaml(没有就自己创建一个)中写
train: ./data/datasets/images/train  # 训练集图像文件目录
val: ./data/datasets/images/val  # 验证集图像文件目录
test: ./data/datasets/images/test
# Classes
nc:   # 类别数
names: [ 
]

在上述的class.txt中找到补全nc和names,names切记是字符串形式的。

  • 在train.py文件中parse_opt
parser.add_argument("--data", type=str, default=ROOT / "data/test.yaml", help="dataset.yaml path")
parser.add_argument("--hyp", type=str, default=ROOT / "data/hyps/test.yaml", help="hyperparameters path")

注意好迭代次数

parser.add_argument("--epochs", type=int, default=5, help="total training epochs")

  • 同样的下面预测模型detect.py文件准确度中parse_opt的时候
parser.add_argument("--source", type=str, default=ROOT / "data/images", help="file/dir/URL/glob/screen/0(webcam)")

2.1.3 超参(根据自身需要注意改的地方即可)

data文件夹下的hyps的test.yaml中写,超参设置要合理,否则就会影响概率模型。

如左右和上下翻转的参数同时存在来说

比方说:数字9和数字6在一定程度上会识别成一个东西。

lr0: 0.01  # 初始学习率 (SGD=1E-2, Adam=1E-3)
lrf: 0.2  # 循环学习率 (lr0 * lrf)
momentum: 0.937  # SGD momentum/Adam beta1 学习率动量
weight_decay: 0.0005  # 权重衰减系数
warmup_epochs: 3.0  # 预热学习 (fractions ok)
warmup_momentum: 0.8  # 预热学习动量
warmup_bias_lr: 0.1  # 预热初始学习率
box: 0.05  # iou损失系数
cls: 0.5  # cls损失系数
cls_pw: 1.0  # cls BCELoss正样本权重
obj: 1.0  # 有无物体系数(scale with pixels)
obj_pw: 1.0  # 有无物体BCELoss正样本权重
iou_t: 0.20  # IoU训练时的阈值
anchor_t: 4.0  # anchor的长宽比(长:宽 = 4:1)
# anchors: 3  # 每个输出层的anchors数量(0 to ignore)
#以下系数是数据增强系数,包括颜色空间和图片空间
fl_gamma: 0.0  # focal loss gamma (efficientDet default gamma=1.5)
hsv_h: 0.015  # 色调 (fraction)
hsv_s: 0.7  # 饱和度 (fraction)
hsv_v: 0.4  # 亮度 (fraction)
degrees: 0.0  # 旋转角度 (+/- deg)
translate: 0.1  # 平移(+/- fraction)
scale: 0.5  # 图像缩放 (+/- gain)
shear: 0.0  # 图像剪切 (+/- deg)
perspective: 0.0  # 透明度 (+/- fraction), range 0-0.001
flipud: 0.5  # 进行上下翻转概率 (probability)
fliplr: 0.0  # 进行左右翻转概率 (probability)
mosaic: 1.0  # 进行Mosaic概率 (probability)
mixup: 0.0  # 进行图像混叠概率(即,多张图像重叠在一起) (probability)
copy_paste: 0.0

由于数据集作为实验需要不便展示所以就以yolo官方的来

2.2 预测模型

我们将上面训练好的模型取出best.pt吧,其为在迭代中遇到最好的模型了

我们将模型取出放置在文件夹下,替换我们的模型

三、我们可以部署在安卓移动端 --tflite

在export.py中parse_opt改造一下

weights是需要被转化你的权重
imgsz是320才是被支持的
parser.add_argument("--data", type=str, default=ROOT / "data/coco128.yaml", help="dataset.yaml path")
parser.add_argument("--weights", nargs="+", type=str, default=ROOT / "这里是指定的模型名称.pt", help="model.pt path(s)")


parser.add_argument("--imgsz", "--img", "--img-size", nargs="+", type=int, default=[320, 320], help="image (h, w)")
parser.add_argument("--batch-size", type=int, default=1, help="batch size")
parser.add_argument("--device", default="0", help="cuda device, i.e. 0 or 0,1,2,3 or cpu")
 
parser.add_argument(
        "--include",
        nargs="+",
        default=["tflite"],
        help="torchscript, onnx, openvino, engine, coreml, saved_model, pb, tflite, edgetpu, tfjs, paddle",
    )

同样的用官方的资源最终

3.1 效果

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

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

相关文章

河南乙级道路与桥梁资质年审材料准备要点解析

河南乙级道路与桥梁资质年审材料准备要点解析如下:河南宽信权经理 一、企业基本情况材料 营业执照副本复印件:确保复印件清晰、完整,并加盖企业公章。 企业章程:提供最新的企业章程,并加盖企业公章。此材料需反映企业…

matepad11和matepad2023区别

​ 华为MatePad11和MatePad2023是华为公司推出的两款平板电脑,它们在处理器、价格和屏幕等方面存在差异。具体分析如下: 处理器 MatePad 11英寸2023款:搭载骁龙865处理器,最高主频为2.84GHz。 MatePad 2023:配备骁…

Android:使用Kotlin搭建MVVM+组件化App架构

一、简介Android MVVM架构模式 请点击查看Android:使用Kotlin搭建MVVM架构模式 二、简介组件化 以前一个项目所有业务代码都在App(model)里开发,App里按照功能模块分包,例如:首页(home&#xff…

58同城前端社招一面挂了,面试总结:coding能力有待提高

总结面试不足:coding能力有待提高,项目对于大厂面试来说不够有亮点,难度不够,对于技术细节不够深入。下周继续加油,噢力给给!!!😭😭😭 面试题 1、…

[Algorihm][简单多状态DP问题][买卖股票的最佳时机含冷冻期][买卖股票的最佳时机含手续费]详细讲解

目录 1.买卖股票的最佳时机含冷冻期1.题目链接买卖股票的最佳时机含冷冻期2.算法原理详解3.代码实现 2.买卖股票的最佳时机含手续费1.题目链接2.算法原理详解3.代码实现 1.买卖股票的最佳时机含冷冻期 1.题目链接 买卖股票的最佳时机含冷冻期 2.算法原理详解 思路&#xff…

Realcome:AI赋能,引领虚拟博主创业新纪元

在数字化浪潮汹涌的时代,一个崭新的科技品牌正在崭露头角——Realcome,一家以AI智能交互服务为核心,为企业提供全方位数字化营销解决方案的科技服务公司。自2021年成立以来,Realcome凭借其前沿的技术和创新的理念,迅速…

漂流瓶挂机项目,聊天脚本赚钱新玩法,号称单机30-50+ (教程+软件)

一、项目简介: 漂流瓶挂机项目主要是通过使用探遇漂流瓶、音麦漂流瓶等聊天软件,为用户提供一个聊天赚钱的平台。男性用户需要充值后才能发送消息,而女性用户则可以通过接收消息赚取分红。男性用户发送给女性用户的消息费用大约在.1-.2元之间…

【openlayers系统学习】4.2Mapbox 样式渲染图层

二、Mapbox 样式渲染图层 显然我们目前的地图需要一些样式。 VectorTile​ 图层的样式与 Vector​ 图层的样式工作方式完全相同。那里描述的样式在这里也适用。 对于这样的地图,创建数据驱动的样式(对矢量图层操作)非常简单。但矢量切片也用…

自动驾驶技术现状与需求分析

随着科技的不断进步和智能化浪潮的席卷,自动驾驶技术已成为当今交通领域的热点话题。本文旨在深入探讨自动驾驶技术的当前发展状况,并对其未来的市场需求进行细致分析。首先,我们将回顾自动驾驶技术的起源、发展历程以及当前的技术水平&#…

自动驾驶---Perception之IPM图和BEV图

1 前言 IPM(Inverse Perspective Mapping,逆透视变换)图的历史可以追溯到计算机视觉和图像处理领域的发展。逆透视变换是一种用于消除图像中透视效应的技术,使得原本由于透视产生的形变得以纠正,进而更准确地描述和理解…

早餐店燃气安全岂能马虎?探头选择与年检必须到位

在现代都市生活中,早餐店作为人们日常生活中的重要一环,其安全性问题日益受到人们的关注。其中,燃气泄漏引发的火灾和爆炸事故尤为令人担忧。 因此,点式可燃气体报警器在早餐店中的应用显得尤为重要。 在这篇文章中,…

PyTorch深度学习实战(44)——基于 DETR 的目标检测模型

PyTorch深度学习实战(44)——基于 DETR 的目标检测模型 0. 前言1. Transformer1.1 Transformer 基础1.2 Transformer 架构 2. DETR2.1 DETR 架构2.2 实现 DETR 模型 3. 基于 DETR 实现目标检测3.1 数据加载与模型构建3.2 模型训练与测试 小结系列链接 0.…

防止CSRF攻击

防止CSRF攻击 跨站点请求伪造(Cross-Site Request Forgery,简称CSRF)是一种常见的网络攻击类型。当用户在受信任的站点上通过身份验证后,访问攻击者精心准备的恶意网站、电子邮件、博客、即时消息或程序时,可能会导致…

遥感信息SCI期刊,中科院1区,IF=7+,审稿速度非常快!

一、期刊名称 International Journal of Applied Earth Observation and Geoinformation 二、期刊简介概况 期刊类型:SCI 学科领域:遥感 影响因子:7.5 中科院分区:1区 三、期刊征稿范围 《国际应用地球观测和地理信息杂志》…

ISCC2024个人挑战赛WP-MISC

(非官方解,以下内容均互联网收集的信息和个人思路,仅供学习参考) where is flag 下载附件,解压出pyc,然后到下面网址反编译 python反编译 - 在线工具 记住c,是密文, Key是 k5fg…

【QNX】Qnx IPC通信 Message-passing

Qnx IPC通信 Message-passing Message-passing介绍 QNX提供了多种IPC(Interprocess Communication )通信方式,包括Message-passing、Plus(脉冲)、Event、Signal、共享内存、Pipe,当然还有socket。 Message-passing是Qnx IPC的主…

远大阀门集团携创新产品亮相南京,展现石化行业新风采

2024年5月22日,备受瞩目的第八届中国石油和化工行业采购大会在江苏省南京市盛大开幕。作为石化行业物资采购领域极具影响力的年度盛会,本次大会吸引了众多国内外能源化工企业、化工新材料企业、工程公司以及相关领域的供应商参加。远大阀门集团作为特邀优…

【网络安全】Fortinet FortiSIEM 中存在严重未经身份验证的 RCE 漏洞:已发布 PoC

文章目录 什么是Fortinet Forti SIEMFortinet Advisor — FortiSIEM 内置生成式 AI 优势功能下一代 SOC 自动化通过链路分析实现可视化威胁猎捕 RCE 漏洞和 PoC如何降低影响推荐阅读 针对 Fortinet FortiSIEM 中一个严重的未经身份验证的远程代码执行漏洞(CVE-2023-…

NVIDIA Orin/Jetson 平台+数字同轴GMSL 车载AI视觉方案,应用于车载,机器人等领域

专注于成像和视觉技术于近期正式发布了可适配NVIDIA DRIVE AGX Orin平台的一系列摄像头产品,该产品是自主开发的数字同轴GMSL2摄像头模组,可满足智能汽车的高质量成像需求。 目前,推出可适配于NVIDIA DRIVE AGX Orin平台的摄像头产品一共有11…

ubuntu安装Stable Video Diffusion(SVD)让图片动起来

目录 写在前面 一、克隆或下载项目 二、下载预训练模型 三、创建环境 四、安装依赖 五、启动项目 六、解决报错 1.预训练模型下不来 2.TiffWriter.write() got an unexpected keyword argument fps 3.安装ffmpeg 4.No module named scripts 七、测试 写在前面 Stab…