当前位置: 首页 > news >正文

自动驾驶目标检测项目实战——基于深度学习框架yolov的交通标志检测

自动驾驶目标检测项目实战——基于深度学习框架yolov的交通标志检测

目前目标检测算法有很多,流行的就有faster-rnn和yolov,本文使用了几年前的yolov3框架进行训练,效果还是很好,当然也可以使用更高版本的Yolov进行实战。本代码使用的是keras框架,pytorch的yolov如何对数据集进行训练,可以参考我之前的文章:
工业缺陷检测项目实战(二)——基于深度学习框架yolov5的钢铁表面缺陷检测

跑工程的原理步骤都是一样的,都可以学习。

数据集准备

使用gtsrb交通标志数据集,下载链接:
https://www.kaggle.com/datasets/meowmeowmeowmeowmeow/gtsrb-german-traffic-sign
https://aistudio.baidu.com/aistudio/datasetdetail/97069
以上两个链接都可以下载,文件夹里面是这样:
在这里插入图片描述
Meta没什么用,主要是Test和Train,Test作为验证集使用。

基础代码准备

本工程基于开源代码进行修改:
https://github.com/miemie2013/Keras-DIOU-YOLOv3

环境

tensorflow==1.15.1
keras==2.3.1

其他看着来,缺什么pip install什么。

使用步骤

1.将数据集放在工程文件夹
在这里插入图片描述
2.生成train和test的txt文件
我这里写了一个csv转txt的代码:
在这里插入图片描述
代码如下:

import numpy as np
import pickle
import re
import os
from PIL import Image# Create raw data pickle file
data_raw = {}
class_list = []
box_coords_list = []
image_file_list = []with open('GTSRB/Test.csv', 'r') as f:next(f) # skip header linefor line in f:  # 遍历每一行line = line[:-1]  # 去掉换行符fields = line.split(',')image_file = fields[7]class_list.append(int(fields[6]))image_file_list.append(image_file)# Find box coordinates for all signs in this imagebox_coords = np.array([int(x) for x in fields[2:6]])box_coords_list.append(box_coords)# 写入txt内容
with open("GTSRB/val.txt", 'w+', encoding='utf-8') as f:for i in range(len(box_coords_list)):box_coord = ""box_coord += str(box_coords_list[i][0]) + ','box_coord += str(box_coords_list[i][1]) + ','box_coord += str(box_coords_list[i][2]) + ','box_coord += str(box_coords_list[i][3])d = image_file_list[i] + ' ' + box_coord + ',' + str(class_list[i])f.write(d + '\n')

路径根据自己的去修改即可。生成的txt放在annotation文件夹下。
在这里插入图片描述
txt文件格式如下:

xxx/xxx.jpg 18.19,6.32,424.13,421.83,20 323.86,2.65,640.0,421.94,20 
xxx/xxx.jpg 48,240,195,371,11 8,12,352,498,14
# image_path x_min, y_min, x_max, y_max, class_id  x_min, y_min ,..., class_id 
# make sure that x_max < width and y_max < height

3.生成标签的类别txt文件
在data文件夹下,生成txt的文件来表示类名:
在这里插入图片描述
比如这里有43个类,则我们可以先用数字字符表示,等检测完再转回对于的类名:
在这里插入图片描述
一行表示一个类名,注意此处类名不能有空格,比如以下是错误的例子:
在这里插入图片描述
每一行都存在空格,这样在计算mAP的时候会报错。

数据已准备完毕。

4.修改文件路径
主要是修改train.py文件里面的这三个路径:
在这里插入图片描述
5.训练
运行

python train.py

在这里插入图片描述

6.注意
引用github源码大佬的话:

(1)本仓库有pattern=0、pattern=1、pattern=2这3种训练模式。 0-从头训练,1-读取model_body继续训练(包括解冻,但需要先运行1_lambda2model.py脚本取得model_body),2-读取coco预训练模型训练 你只需要修改pattern的值即可指定训练模式。 然后在这3种模式的if-else分支下,你再指定批大小batch_size、学习率lr等超参数。

(2)如果你决定从头训练一个模型(即pattern=0),而且你的显卡显存比较小,比如说只有6G。 又或者说你想训练一个小模型,因为你的数据集比较小。 那么你可以设置initial_filters为一个比较小的值,比如说8。 initial_filters会影响到后面的卷积层的卷积核个数(除了最后面3个卷积层的卷积核个数不受影响)。 yolov3的initial_filters默认是32,你调小initial_filters会使得模型变小,运算量减少,适合在小数据集上训练。

7.训练完之后,可以得到以下h5文件:
在这里插入图片描述
运行

python 1_lambda2model.py

将训练模型中yolov3的所有部分提取出来。我这里得到aaaa_bgr.h5
在这里插入图片描述
8.mAP评估
运行evaluate_kr.py对keras模型(1_lambda2model.py提取出来的模型)评估,跑完这个脚本后需要再跑mAP/main.py进行mAP的计算。计算完之后会保持结果图:
在这里插入图片描述
在这里插入图片描述

9.测试
在images/test里面放置要检测的图片:
在这里插入图片描述
运行

python demo_kr.py

比如识别:
在这里插入图片描述
识别结果:
在这里插入图片描述
在这里插入图片描述

另外,我添加了绘制acc和loss的曲线图,也对过滤了识别分数地的框。

需要整体代码的可私信我

相关文章:

自动驾驶目标检测项目实战——基于深度学习框架yolov的交通标志检测

自动驾驶目标检测项目实战——基于深度学习框架yolov的交通标志检测 目前目标检测算法有很多&#xff0c;流行的就有faster-rnn和yolov&#xff0c;本文使用了几年前的yolov3框架进行训练&#xff0c;效果还是很好&#xff0c;当然也可以使用更高版本的Yolov进行实战。本代码使…...

flink兼容性验证

flink介绍&#xff1a;https://blog.csdn.net/weixin_43563705/article/details/107604693 一、安装启动 安装flink及其依赖 yum install java-1.8.0-openjdk curl tar mkdir -p /usr/local/flink wget https://mirrors.aliyun.com/apache/flink/flink-1.16.1/flink-1.16.1-bi…...

智慧工厂数字孪生可视化监测系统有效提升厂区安全管控效力

我国制造业正处于产业升级的关键时期&#xff0c;基于数据进行生产策略制定与管理是大势所趋&#xff0c;而数据可视化以更直观的方式成为数据分析传递信息的重要工具。 深圳华锐视点通过三维可视化手段对工厂各类设备进行三维建模&#xff0c;真实复现设备设施外观、结构、运转…...

c++中基本类型详细解释外加基本运算规则

&#x1f440;&#x1f440;#c中包括算数类型和空类型。 类型含义wchat_t宽字符bool布尔类型char字符chat16_tunicode字符chat_32unicode字符short短整型int整形long长整型longlong长整型float单精度浮点型double双精度浮点型longdouble扩展精度浮点型 &#x1f440;&#x1f…...

扬帆优配“机器人+”方案加码产业发展,这些股有望高增长

“机器人”发明新需求&#xff0c;2022年中国机器人市场规模约为174亿美元。 美国时刻3月1日&#xff0c;特斯拉在得克萨斯州超级工厂举办投资者日活动&#xff0c;展示了人形机器人Optimus的视频&#xff0c;更夸大的是&#xff0c;视频中的机器人好像在制作另一个机器人&…...

推送投票制作微信推送里投票制作教程在线投票活动制作

近些年来&#xff0c;第三方的微信投票制作平台如雨后春笋般络绎不绝。随着手机的互联网的发展及微信开放平台各项基于手机能力的开放&#xff0c;更多人选择微信投票小程序平台&#xff0c;因为它有非常大的优势。1.它比起微信公众号自带的投票系统、传统的H5投票系统有可以图…...

【架构师】跟我一起学架构——微服务分层监控

博客昵称&#xff1a;架构师Cool 最喜欢的座右铭&#xff1a;一以贯之的努力&#xff0c;不得懈怠的人生。 作者简介&#xff1a;一名Coder&#xff0c;软件设计师/鸿蒙高级工程师认证&#xff0c;在备战高级架构师/系统分析师&#xff0c;欢迎关注小弟&#xff01; 博主小留言…...

Linux:https静态网站搭建案例

目录介绍httpshttps通信过程例介绍https 整个实验是在http实验基础上进行的 因为http协议在传输的时候采用的是明文传输&#xff0c;有安全隐患&#xff0c;所以出现了https&#xff08;安全套接字层超文本传输协议&#xff09; HTTPS并不是一个新协议&#xff0c; 而是HTTP…...

前端css整理

如何水平垂直居中一个盒子&#xff1f; 1.已知高度&#xff1a;子盒子设置 display: inline-block; 父盒子设置 line-height 等于高度实现垂直居中&#xff1b;使用 text-align:center实现水平居中 2.父盒子 display:flex; align-items:center;justify-content:center; 3.定位&…...

混凝土搅拌站远程监控解决方案

一、项目背景 随着大规模的基础设施建设&#xff0c;对混凝土搅拌设备的需求量日益增加&#xff0c;对其技术指标的要求也日益提高&#xff0c;其技术性能将直接关系到工程的质量和使用寿命。而混凝土生产的质量是在生产过程中形成的&#xff0c;而非最终强度的检测。混凝土生…...

Spark SQL 学习总结

文章目录&#xff08;一&#xff09;Spark SQL&#xff08;二&#xff09;SParkSession&#xff08;三&#xff09;DataFrame常见算子操作&#xff08;四&#xff09;DataFrame的sql操作&#xff08;五&#xff09;RDD转换为DataFrame&#xff08;1&#xff09;反射方式&#x…...

深度学习 - 37.TF x Keras Deep Cross Network DCN 实现

目录 一.引言 二.模型简介 1.Embedding and stacking layer 2.Cross Network 2.1 模型架构分析 2.2 计算逻辑...

Ubuntu中使用Synaptic进行包管理

Synaptic概况 Synaptic 是一个轻量级的 apt 软件包管理器系统的 GUI 前端&#xff0c;所有你可以在终端中使用 apt-get 命令来做的事&#xff0c;都可以通过 Synaptic 来实现。优势 图形化安装界面&#xff0c;同时可以安装配置相关依赖&#xff0c;避免由于依赖问题导致的各类…...

python之selenium库安装及用法(定位法、获取文本、文本框输入、鼠标点击、滑动滚动条)

一、selenium库安装 pip install selenium二、浏览器驱动安装 谷歌浏览器驱动下载地址&#xff1a;https://chromedriver.storage.googleapis.com/index.html 根据你电脑的谷歌浏览器版本&#xff0c;下载相应的就行。我下载的是110.0.5481.XX中的chromedriver_win32.zip 下载…...

FPGA纯verilog实现图像视频旋转 串口指令控制旋转角度 提供工程源码和技术支持

目录1、前言2、理论基础3、设计思路和框架图像输入和采集图像旋转处理图像缓存图像输出4、vivado工程详解5、上板调试验证6、福利&#xff1a;工程代码的获取1、前言 图像旋转是一种常用的图像处理技术&#xff0c;其基本原理就是指图像以某一点为中心旋转一定的角度&#xff…...

EventGraph:Event Extraction as Semantic Graph Parsing 论文解读

EventGraph: Event Extraction as Semantic Graph Parsing 论文&#xff1a;2022.case-1.2.pdf (aclanthology.org) 代码&#xff1a;huiling-y/EventGraph (github.com) 期刊/会议&#xff1a;CASE 2022 摘要 事件抽取涉及到事件触发词和相应事件论元的检测和抽取。现有系…...

【蓝桥杯集训·每日一题】AcWing 3696. 构造有向无环图

文章目录一、题目1、原题链接2、题目描述二、解题报告1、思路分析2、时间复杂度3、代码详解三、知识风暴拓扑排序一、题目 1、原题链接 3696. 构造有向无环图 2、题目描述 给定一个由 n 个点和 m 条边构成的图。 不保证给定的图是连通的。 图中的一部分边的方向已经确定&#…...

国内vs国外:外贸建站该如何选择?

外贸建站找国内还是国外&#xff1f; 答案是&#xff1a;国内。 随着互联网的发展&#xff0c;越来越多的企业开始意识到在网络上进行商业活动的重要性。 其中&#xff0c;建立一个专业的外贸网站是企业在国际市场上拓展业务的关键。 然而&#xff0c;对于选择国内还是国外…...

HLS协议有哪些特别优势

阿酷TONY / 2023-3-3 / 长沙 可以实现码率的动态自适应&#xff0c;清晰度动态成为可能&#xff1b;HLS是基于HTTP 协议的&#xff0c;更易于做各平台的适配与兼容&#xff1b;多终端跨平台的支持性&#xff1a; PC端, Android端, IOS 平台&#xff0c;微信之类的都支持&am…...

JavaScript里的回调函数属于闭包吗?

回调函数本身不一定属于闭包&#xff0c;但是在某些情况下&#xff0c;它们可能会涉及闭包。 回调函数通常是指在异步操作完成时执行的函数。它们在 JavaScript 中被广泛使用&#xff0c;例如在处理 AJAX 请求、定时器、事件处理程序等方面。 在使用回调函数时&#xff0c;如…...

编程基本概念

程序的构成 python程序由模块组成&#xff0c;一个模块对应一个python源文件&#xff0c;后缀为.py模块由语句组成&#xff0c;运行python程序时&#xff0c;按照模块中的语句顺序依次执行语句是python程序的构造单元&#xff0c;用于创建对象&#xff0c;变量赋值&#xff0c…...

Azure OpenAI 官方指南02|ChatGPT 的架构设计与应用实例

ChatGPT 作为即将在微软全球 Azure 公有云平台正式发布的服务&#xff0c;已经迅速成为了众多用户关心的服务之一。而由 OpenAI 发布的 ChatGPT 产品&#xff0c;仅仅上线两个月&#xff0c;就成为互联网历史上最快突破一亿月活的应用。本期从技术角度深度解析 ChatGPT 的架构设…...

RK3568核心板以太网大数据测试报告-万象奥科

1. 测试对象HD-RK3568-IOT 底板基于HD-RK3568-CORE工业级核心板设计&#xff08;双网口、双CAN、5路串口&#xff09;&#xff0c;接口丰富&#xff0c;适用于工业现场应用需求&#xff0c;亦方便用户评估核心板及CPU的性能。适用于工业自动化控制、人机界面、中小型医疗分析器…...

来 CSDN 三年,我写了一本Python书

大家好&#xff0c;我是朱小五。转眼间已经来 CSDN 3年了&#xff0c;其中给大家一共分享了252篇Python文章。 但这三年&#xff0c;最大的收获还是写了一本Python书&#xff01; 在这个自动化时代&#xff0c;我们有很多重复无聊的工作要做。想想这些你不再需要一次又一次地做…...

TIA博途中通过SCL语言实现快速排序的具体方法示例

TIA博途中通过SCL语言实现快速排序的具体方法示例 首先,了解一下快速排序的原理: 排序算法的思想非常简单,在待排序的数列中,我们首先要找一个数字作为基准数。为了方便,我们一般选择第 1 个数字作为基准数(其实选择第几个并没有关系)。接下来我们需要将这个待排序的数列…...

第 46 届世界技能大赛浙江省选拔赛“网络安全“项目B模块任务书

第46届世界技能大赛浙江省选拔赛"网络安全"项目B模块&#xff08;网络安全事件响应、数字取证调查&#xff09;第46届世界技能大赛浙江省选拔赛"网络安全"项目B模块2.1 第一部分 事件响应2.2 第二部分 数字取证调查2.3 第三部分 应用程序安全第46届世界技能…...

【C】字符串操作函数

初始化字符串 #include <string.h>void *memset(void *s, int c, size_t n); 返回值&#xff1a;s指向哪&#xff0c;返回的指针就指向哪memset函数把s所指的内存地址开始的n个字节都填充为c的值。通常c的值为0&#xff0c;把一块内存区清零。例如定义char buf[10];&…...

【python】 pytest自动化测试框架--selenium,requests,appium自动化工具

一、pytest简介 pytest是python的一种单元测试框架&#xff0c;与python自带的unittest测试框架类似&#xff0c;但是比unittest框架使用起来更简洁&#xff0c;效率更高 二、 pytest 单元测试框架 1、pytest 特点 pytest是python当中的一个单元框架&#xff0c;比unittest更灵…...

Spring boot 实战指南(三):配置事务,整合Elasticsearch、swagger、redis、rabbitMQ

文章目录一、配置事务依赖使用注解二、Elasticsearch创建项目配置maven完善依赖es连接配置实体映射repositoryservicecontroller三、swagger依赖启动类路径匹配配置配置类controller注解四、redis&#xff08;代码实现&#xff09;依赖yml配置配置类封装redisTamplate五、rabbi…...

九、Bean的循环依赖问题

1 什么是Bean的循环依赖 A对象中有B属性。B对象中有A属性。这就是循环依赖。我依赖你&#xff0c;你也依赖我。 比如&#xff1a;丈夫类Husband&#xff0c;妻子类Wife。Husband中有Wife的引用。Wife中有Husband的引用。 2 singleton下的set注入产生的循环依赖 丈夫类 pac…...

网站建设流程规划/网络推广求职招聘交流群

基于SSM的在线视频教育网站系统设计与实现.系统分为管理员与普通用户两种角色。 开发工具&#xff1a;idea (eclipse) 环境&#xff1a;jdk1.8 mysql 登录模块 在进入系统首页后&#xff0c;首先看到的是登录界面&#xff0c;该界面会提供注册用户的功能&#xff0c;在登陆界…...

北京交友网站排行榜/怎样在百度上做广告推广

每个品牌都不可避免地会遭遇一些消费者在小红书上发布的负面评价或者投诉&#xff0c;那么小红书负面笔记怎么处理呢?下面来给大家说说品牌需要注意的几个点。一、认真阅读并理解负面笔记当发现小红书上的负面笔记后&#xff0c;品牌方首先要认真阅读并理解其内容&#xff0c;…...

测试页面网站建设/网络营销什么意思

在过去的40年里&#xff0c;Unix操作系统帮助推动了全球的重要任务IT运营。现在&#xff0c;随着Unix步入中年&#xff0c;它的支持者正在忙于开发新的技术规范。他们希望这些新的技术规范将推动这个操作系统进入下一个计算时代。 在Unix生态系统最前沿的是Open Group&#xff…...

上海网站建设 虹口/搭建网站多少钱

删除gen目录下的R.java文件后&#xff0c;重新编译程序后无法生成R。java。 查看res目录下没有任何xml文件编写错误的提示。执行Project—Clean也无法解决此问题。 在抓狂到想要砸电脑的时候&#xff0c;突然发现Console窗口下已经给出了出错原因&#xff0c;只不过没有注意到…...

国内外贸b2c网站/广州seo优化公司

批量向MySQL导入数据 直接导入使用存储过程循环拼接使用load data infile修改ENGINEInnoDB为MyISAM&#xff08;v5.1之前是MyISAM&#xff0c;之后是InnoDB&#xff09;减少IO次数SQL写法优化&#xff08;一条SQL语句插入多条数据&#xff09;合理设置批量大小&#xff08;在事…...

重庆网站建设 最便宜/网站竞价推广都有哪些

今天去青岛会展中心看车展了&#xff0c;拍了好多照片&#xff0c;把它传上来跟大家分享一下&#xff0c;也好在工作之余放松一下&#xff01; 转载于:https://blog.51cto.com/370135415/577182...