基于yolov5交通标志识别(毕业设计)

2023-10-31

1.数据集:TT100K数据集,是由清华与腾讯的联合实验室整理并公布的,提供的10万张图像包含了30000个交通标志,图像来源于由6个像素很高的广角单反相机在中国的多个城市拍摄的腾讯街景全景图,拍摄地点的光照条件、天气条件有所不同。原始的街景全景图分辨率为8192x2048,再将全景图裁剪分为四份,最终数据集的尺寸为2048x2048。TT-100K数据集所含交通标志的类别较为全面,整个数据集共出现221种不同的类别,标注了的有128类。

       在TT100K数据集中,训练集共有6105张图片,验证集共有3065张图片。该数据集涵盖了包括城市道路、乡村道路以及高速公路等诸多生活场景。在使用该数据集之前我们需要对图片进行人工标注。LabelImg是一个图形图像注释工具。它是用Python编写的,并使用Qt作为其图形界面。注释以PASCAL VOC格式保存为XML文件,这是ImageNet使用的格式。此外,它还支持YOLO格式和CreateML格式。因为TT100K作为开源的数据集,我们可以在网络上找到有关于TT100K数据集标注的xml格式标签,不过yolo算法使用的是.txt文本格式,因此我们需要对其进行转化。

import xml.etree.ElementTree as ET
import os
voc_folder = r"/home/dwt/DataSets/HRSID/HRSID_JPG_voc格式/Annotations"  # 储存voc格式的标注文件的文件夹
yolo_folder = r"/home/dwt/DataSets/HRSID/HRSID_yolo/Annotations_yolo"  # 转换后的yolo格式标注文件的储存文件夹
class_id = ["ship"]  # 储存数据集中目标种类名称的列表,接下来的转换函数中会将该列表中种类名称对应的列表索引号作为写入yolo标注文件中该类目标的种类序号
def convert(size, box):
    dw = 1. / size[0]
    dh = 1. / size[1]
    x = (box[0] + box[1]) / 2.0
    y = (box[2] + box[3]) / 2.0
    w = box[1] - box[0]
    h = box[3] - box[2]
    x = x * dw
    w = w * dw
    y = y * dh
    h = h * dh
    return (x, y, w, h)
def convert_annotation(xml_file):
    file_name = xml_file.strip(".xml")  # 这一步将所有voc格式标注文件取出后缀名“.xml”,方便接下来作为yolo格式标注文件的名称
    in_file = open(os.path.join(voc_folder, xml_file))  # 打开当前转换的voc标注文件
    out_file = open(os.path.join(yolo_folder, file_name + ".txt", ), 'w')  # 创建并打开要转换成的yolo格式标注文件
    tree = ET.parse(in_file)
    root = tree.getroot()
    size = root.find('size')
    w = int(size.find('width').text)
    h = int(size.find('height').text)
    for obj in root.iter('object'):
        cls = obj.find('name').text
        cls_id = class_id.index(cls)
        xmlbox = obj.find('bndbox')
        b = (float(xmlbox.find('xmin').text),
             float(xmlbox.find('xmax').text),
             float(xmlbox.find('ymin').text),
             float(xmlbox.find('ymax').text))
        bb = convert((w, h), b)
        out_file.write(str(cls_id) + " " + " ".join([str(a) for a in bb]) + '\n')
xml_fileList = os.listdir(voc_folder)  # 将所有voc格式的标注文件的名称取出存放到列表xml_fileList中
for xml_file in xml_fileList:  # 这里的for循环开始依次对所有voc格式标注文件生成其对应的yolo格式的标注文件
    convert_annotation(xml_file)

2.模型:yolov5s

3.方法:(22条消息) Yolov5的配置+训练(超级详细!!!)_yolov5训练_小学生玩编程的博客-CSDN博客4.本人实现成果:

 

 

5. 可能碰到的问题 (1) amp问题 (2)221类标签问题(3)gtx16系列可能无法正常使用问题(4)多线程num_worker问题 (5)遇到无法正常安装环境或者包的问题

6. 部分参数一览

def parse_opt(known=False):
    parser = argparse.ArgumentParser()
    parser.add_argument('--weights', type=str, default=ROOT/ 'pretrained/yolov5s-seg.pt', help='initial weights path')
    parser.add_argument('--cfg', type=str, default=ROOT/'yolov5s_board.yaml', help='model.yaml path')
    parser.add_argument('--data', type=str, default=ROOT / 'Board_BAKCUP.yaml', help='dataset.yaml path')
    parser.add_argument('--hyp', type=str, default=ROOT / 'data/hyps/hyp.scratch-low.yaml', help='hyperparameters path')
    parser.add_argument('--epochs', type=int, default=1000, help='total training epochs')
    parser.add_argument('--batch-size', type=int, default=-1, help='total batch size for all GPUs, -1 for autobatch')
    parser.add_argument('--imgsz', '--img', '--img-size', type=int, default=672, help='train, val image size (pixels)')
    parser.add_argument('--rect', action='store_true', help='rectangular training')
    parser.add_argument('--resume', nargs='?', const=True, default=True, help='resume most recent training')
    parser.add_argument('--nosave', action='store_true', help='only save final checkpoint')
    parser.add_argument('--noval', action='store_true', help='only validate final epoch')
    parser.add_argument('--noautoanchor', action='store_true', help='disable AutoAnchor')
    parser.add_argument('--noplots', action='store_true', help='save no plot files')
    parser.add_argument('--evolve', type=int, nargs='?', const=300, help='evolve hyperparameters for x generations')
    parser.add_argument('--bucket', type=str, default='', help='gsutil bucket')
    parser.add_argument('--cache', type=str, nargs='?',default= True, const='ram', help='image --cache ram/disk')
    parser.add_argument('--image-weights', action='store_true', help='use weighted image selection for training')
    parser.add_argument('--device', default='0', help='cuda device, i.e. 0 or 0,1,2,3 or cpu')
    parser.add_argument('--multi-scale', action='store_true', help='vary img-size +/- 50%%')
    parser.add_argument('--single-cls', action='store_true', help='train multi-class data as single-class')
    parser.add_argument('--optimizer', type=str, choices=['SGD', 'Adam', 'AdamW'], default='SGD', help='optimizer')
    parser.add_argument('--sync-bn', action='store_true', help='use SyncBatchNorm, only available in DDP mode')
    parser.add_argument('--workers', type=int, default=12, help='max dataloader workers (per RANK in DDP mode)')
    parser.add_argument('--project', default=ROOT / 'runs/train', help='save to project/name')
    parser.add_argument('--name', default='exp', help='save to project/name')
    parser.add_argument('--exist-ok', action='store_true', help='existing project/name ok, do not increment')
    parser.add_argument('--quad', action='store_true', help='quad dataloader')
    parser.add_argument('--cos-lr', action='store_true', help='cosine LR scheduler')
    parser.add_argument('--label-smoothing', type=float, default=0.0, help='Label smoothing epsilon')
    parser.add_argument('--patience', type=int, default=100, help='EarlyStopping patience (epochs without improvement)')
    parser.add_argument('--freeze', nargs='+', type=int, default=[3], help='Freeze layers: backbone=10, first3=0 1 2')
    parser.add_argument('--save-period', type=int, default=-1, help='Save checkpoint every x epochs (disabled if < 1)')
    parser.add_argument('--seed', type=int, default=0, help='Global training seed')
    parser.add_argument('--local_rank', type=int, default=-1, help='Automatic DDP Multi-GPU argument, do not modify')

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于yolov5交通标志识别(毕业设计) 的相关文章

随机推荐

  • 算法(哈希表)——快乐数

    文章目录 1 题目描述 2 解题思路 3 代码实现 1 题目描述 编写一个算法来判断一个数 n 是不是快乐数 快乐数定义为 对于一个正整数 每一次将该数替换为它每个位置上的数字的平方和 然后重复这个过程直到这个数变为 1 也可能是 无限循环
  • 解决WORD中图片随文字移动问题

    在WORD中插入或者粘贴进图片后 发现编辑图片上下行文字时 图片会随文字移动 如果想要图片不随文字移动 可以这样做 选中图片 查看布局选项 右键 gt 设置图片格式 gt 布局 可以看到文字环绕形式为 上下环绕 且选中了随文字移动选项 点击
  • 使用Hypothesis生成测试数据

    Hypothesis是Python的一个高级测试库 它允许编写测试用例时参数化 然后生成使测试失败的简单易懂的测试数据 可以用更少的工作在代码中发现更多的bug 安装 pip install hypothesis 如何设计测试数据 通过介绍
  • MATLAB绘图/数据的可视化

    MATLAB绘图 数据的可视化 二维绘图 科研绘图模板 利用MATLAB直接对Excel数据绘图 三维绘图 MATLAB数据可视化是极重要的功能 文章介绍了MATLAB绘图与数据可视化的相关方法 阅读本文读者可以快速掌握MATLAB绘图技巧
  • 【Unity 3D】学习笔记(三)

    基本操作演练 下载 Fantasy Skybox FREE 构建自己的游戏场景 天空是任何游戏离不开的设定 而且要按季节与时间变化 是表示时间的重要工具 天空盒是一种材料 我们可以通过六面体构建一个天空盒 首先点击Asset上下文菜单 gt
  • shineblink APDS-9960传感器感应手势

    APDS 9960感应手势 一 本例程实现功能 二 传感器应用限制说明 三 接线图 五 完整代码 六 代码运行结果 一 本例程实现功能 通过APDS 9960传感器模块感应在传感器表面正上方的 上 下 左 右 手势动作 二 传感器应用限制说
  • 学习笔记(01):java美妆商城项目

    立即学习 https edu csdn net course play 23989 290220 utm source blogtoedu 第一节笔记 1 前端 jsp css javascript jQuery js框架 bootstra
  • SpringBoot+MyBatisPlus+thymeleaf增删改查

    SpringBoot MyBatisPlus thymeleaf增删改查 文章目录 SpringBoot MyBatisPlus thymeleaf增删改查 前言 作者简介 在校学生一枚 Java领域新星创作者 Java正在学习中 期待和大
  • 【Python习题集6】类与对象

    类与对象 一 实验内容 二 实验总结 一 实验内容 1 设计一个Circle类来表示圆 这个类包含圆的半径以及求面积和周长的函数 在使用这个类创建半径为1 10的圆 并计算出相应的面积和周长 半径为1的圆 面积 3 14 周长 6 28 半
  • SSH、shell、Xshell 、bash、Git、Git bash 、Git shell区别与联系

    SSH是安全外壳协议 为 Secure Shell 的缩写 SSH 为建立在应用层和传输层基础上的安全协议 专为远程登录会话和其他网络服务提供安全性的协议 利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题 SSH工具 有一个软件叫
  • vscode 函数没有引入提示_VSCODE编译头文件时函数没有定义的解决方案(VSCODE手动链接C文件方法)...

    在使用VSCODE进行C语言程序设计时 如果用到了头文件声明函数 c文件定义函数 在编译时尽管已经引用了相应的头文件 VSCODE文本编辑器也没有报错 但仍然无法编译 错误提示如下 d ComputerHomework 2019 winte
  • Java导入导出json

    1 导入依赖
  • 模式识别与操作符在CEP中的应用

    模式识别与操作符在CEP中的应用 随着大数据技术的快速发展 复杂事件处理 Complex Event Processing CEP 成为了处理实时流数据的重要工具 CEP通过对实时数据流进行高级模式识别和复杂操作符的运算 可以从海量数据中提
  • 微信小程序基础面试题【29道】

    这里写目录标题 1 请谈谈wxml与标准的html的异同 2 请谈谈WXSS和CSS的异同 3 请谈谈微信小程序主要目录和文件的作用 4 请谈谈小程序的双向绑定和vue的异同 5 简单描述下微信小程序的相关文件类型 6 微信小程序有哪些传值
  • 大数据毕设选题 - 疫情数据分析可视化系统(python flask 爬虫)

    文章目录 0 前言 1 课题背景 2 实现效果 2 1 整体界面展示 2 2 31省病例柱形图 2 3 全国现有确诊人数趋势 2 4 中国累计确诊时间线 2 5 中国疫情情况饼状图 2 6 高风险树状图 3 相关理论及技术 3 1爬虫 3
  • <VTK(0)> VTK8.2+VS2019环境配置

    VTK8 2 VS2019编译 最近用到VTK库 打算重新编译 发现能找到的资源中VTK库的编译比较详细 但是VS的环境配置比较乱 这里简述VTK的源码编译并提供VS环境配置的保姆教学 准备工作 1 安装VS2019 自查 Visual S
  • 阿里P7大牛整理!腾讯、阿里Android高级面试真题汇总,经典好文

    开头 相信大多数互联网的从业者都有着这样一个梦想 进大厂 获得丰厚的薪酬 和更优秀的人一起共事 在技术上获得更快的成长 然而部分人其实一直都陷入了 穷忙 的困局 觉得自己每天白天黑夜都在工作 高强度输出 但是却并没有获得机会的眷顾 久而久之
  • 生成随机颜色和随机数的生成

    1 随机颜色生成 方法1 var color parseInt Math random 0XFFFFFF toString 16 方法2 var color rgba parseInt Math random 256 parseInt Ma
  • [ZZ]【电子电路】上下拉电阻总结

    上下拉电阻总结 SkySeraph整理 2009 6 上拉电阻 1 当TTL电路驱动COMS电路时 如果TTL电路输出的高电平低于COMS电路的最低高电平 一般为3 5V 这时就需要在TTL的输出端接上拉电阻 以提高输出高电平的值 TTL
  • 基于yolov5交通标志识别(毕业设计)

    1 数据集 TT100K数据集 是由清华与腾讯的联合实验室整理并公布的 提供的10万张图像包含了30000个交通标志 图像来源于由6个像素很高的广角单反相机在中国的多个城市拍摄的腾讯街景全景图 拍摄地点的光照条件 天气条件有所不同 原始的街