位置: IT常识 - 正文

Python基于YOLOv5的交通标志识别系统[源码](yolo算法python代码)

编辑:rootadmin
Python基于YOLOv5的交通标志识别系统 1.图片演示:

推荐整理分享Python基于YOLOv5的交通标志识别系统[源码](yolo算法python代码),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:yolk python,python yolo,yolo算法python代码,yolov5 pycharm,yolk python,yolk python,python yolov4,yolov3 python,内容如对您有帮助,希望把文章链接给更多的朋友!

2.视频演示:

[项目分享]Python基于YOLOv5的交通标志识别系统[源码&技术文档&部署视频&数据集]_哔哩哔哩_bilibili

3.标注好的数据集:

4.YOLO网络的构建:

网络结构是首先用Focus将计算图长宽变为原先1/4, channel 数量乘4。再用bottlenectCSP 提取特征,个人理解 CSP 就是更多不同channel的融合吧。 然后再用maxpooling 下采样构建特征金字塔。下采样过每阶段与input cancatenate。 再对下采样产生的feature map 上采样,与backbone里相应的层融合。最后用detect层预测anchors。detect 层输出channel是 (class num + 5)* 每层每grid预测的anchor 数。num class是预测结果为每类的概率,5是anchor的 x, y, w, h 和是否为object的置信度。默认配置经过maxpooling 以后产生三个尺寸的feature map,每个feature map 经过上采样融合等操作后都会用来预测anchor,每个grid 预测三个anchor。比如yolov5 s 预测anchor 有80类。输出 x.shape=(bs, 3, 20, 20, 85)。

5.数据增强:

在深度学习领域,对于数据量的要求是巨大的,在CV领域,我们通过图像数据增强对现有图像数据进行处理来丰富图像训练集,这样可以有效的泛化模型,解决过拟合的问题。

Python基于YOLOv5的交通标志识别系统[源码](yolo算法python代码)

该博客提出的图像数据增强方式有旋转图像、裁剪图像、水平或垂直翻转图像,改变图像亮度等,为了方便训练模型,我们通常会对数据进行归一化或者标准化以及将图片大小设置为一样。

6.代码实现:

该博客代码写法上来值得注意的有这几处:

1 首先有 focus 层,对输入图片slice, 把feature map减小增加channel 后面计算速度会快。

2 构建模型(parse_model) 在yolo.py 里面,用一个数组(ch) 存储了每层的输出channel, 后续concatenate的时候很容易构成concatenate后输出的channel 数量。

3 对除了最后一层预测层外,每层output channel都检查是不是8的倍数,保证后续concate的时候不会出问题

4 common.py 里面是各种basic block, 除了bottlenect, CSP, concate层等,还有transformer 等层。

首先导入相关模块:

import tensorflow as tfimport numpy as npimport pandas as pd import cv2import matplotlib.pyplot as pltimport osfrom sklearn.model_selection import train_test_split

读取图片:target.txt的内容如下所示,前面对应图片名字,后面对应图片的类别

x=[]y=[]with open ('./target.txt','r') as f: for j,i in enumerate(f): path=i.split()[0] lable=i.split()[1] print('读取第%d个图片'%j,path,lable) src=cv2.imread('./suju/'+path) x.append(src) y.append(int(lable))

将数据归一化,并且划训练集和验证集

x=np.array(x)y=np.array(y)x.shape,y.shapey=y[:,None]x_train,x_test,y_train,y_test=train_test_split(x,y,stratify=y,random_state=0)#归一化x_train=x_train.astype('float32')/255x_test=x_test.astype('float32')/255y_train_onehot=tf.keras.utils.to_categorical(y_train)y_test_onehot=tf.keras.utils.to_categorical(y_test)

搭建网络模型

model=tf.keras.Sequential([ tf.keras.Input(shape=(80,80,3)), tf.keras.layers.Conv2D(filters=32,kernel_size=(3,3),padding='same',activation='relu'), tf.keras.layers.MaxPooling2D(pool_size=(2,2),strides=(2,2)), tf.keras.layers.Conv2D(filters=64,kernel_size=(3,3),padding='same',activation='relu'), tf.keras.layers.MaxPooling2D(pool_size=(2,2),strides=(2,2)), tf.keras.layers.Conv2D(filters=32,kernel_size=(3,3),padding='same',activation='relu'), tf.keras.layers.MaxPooling2D(pool_size=(2,2),strides=(2,2)), tf.keras.layers.Flatten(), tf.keras.layers.Dense(1000,activation='relu'), tf.keras.layers.Dropout(rate=0.5), tf.keras.layers.Dense(43,activation='softmax')])model.compile( loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])train_history=model.fit(x_train,y_train_onehot,batch_size=100,epochs=8,validation_split=0.2,verbose=1, )

画图显示模型的loss和acc

la=[str(i) for i in range(1,9)]def show(a,b,c,d): fig,axes=plt.subplots(1,2,figsize=(10,4)) axes[0].set_title('accuracy of train and valuation') axes[0].plot(la,train_history.history[a],marker='*') axes[0].plot(train_history.history[b],marker='*') axes[0].set_xlabel('epoch') axes[0].set_ylabel('accuracy') aa=round(train_history.history[a][7],2) bb=round(train_history.history[b][7],2) axes[0].text(la[7],train_history.history[a][7],aa,ha='center',va='bottom') axes[0].text(la[7],train_history.history[b][7],bb,ha='center',va='top') #axes[0].set_xticks(la,['as','asd',3,4,5,6,7,8])# for x1,y1 in zip(la,train_history.history[a]):# y1=round(y1,2)# axes[0].text(x1,y1,y1,ha='center',va='bottom',fontsize=10,c='b') axes[0].legend(['train_accuracy','val_accuracy']) axes[1].set_title('loss of train and valuation') axes[1].plot(la,train_history.history[c],marker='*') axes[1].plot(train_history.history[d],marker='*') axes[1].set_xlabel('epoch') axes[1].set_ylabel('loss') cc=round(train_history.history[c][7],2) dd=round(train_history.history[d][7],2) axes[1].text(la[7],train_history.history[c][7],cc,ha='center',va='top') axes[1].text(la[7],train_history.history[d][7],dd,ha='center',va='bottom') axes[1].legend(['train_loss', 'val_loss']) #axes[1].show()show('accuracy','val_accuracy','loss','val_loss')

保存模型

model.save('traffic_model2.h5')7.训练结果:

完整源码&环境部署视频教程&数据集&自定义训练视频教程 参考博客《Python基于YOLOv5的交通标志识别系统[源码&技术文档&部署视频&数据集]》

8.参考文献:

【1】谢豆,石景文,刘文军,刘澍.一种基于深度学习的交通标志识别算法研究[J].电脑知识与技术:学术版,2022,18(6):116-118. 【2】王泽华,宋卫虎,吴建华.基于改进YOLOv4网络的轻量化交通标志检测模型[J].电脑知识与技术:学术版,2022,18(5):98-101.

本文链接地址:https://www.jiuchutong.com/zhishi/296194.html 转载请保留说明!

上一篇:k8s控制器Deployment使用详解(k8s控制器模式)

下一篇:OpenCV实战(15)——轮廓检测详解(opencv.)

  • 三星buds2环境音怎么调节(三星buds2环境音怎么关)

    三星buds2环境音怎么调节(三星buds2环境音怎么关)

  • ipad mini6运行内存(ipad mini6运行内存是多大)

    ipad mini6运行内存(ipad mini6运行内存是多大)

  • 青年大学习怎么打开

    青年大学习怎么打开

  • 携程网上如何订机票(携程网上如何订酒店)

    携程网上如何订机票(携程网上如何订酒店)

  • 电脑版微信不能群发消息和链接吗 电脑微信群发消息和链接的方法(电脑版微信不能打开小程序)

    电脑版微信不能群发消息和链接吗 电脑微信群发消息和链接的方法(电脑版微信不能打开小程序)

  • 为什么我快手不能关注别人(为什么我快手不显示亲密关系)

    为什么我快手不能关注别人(为什么我快手不显示亲密关系)

  • 为什么视频播完后还会出现下一个视频(为什么视频会播放失败原因)

    为什么视频播完后还会出现下一个视频(为什么视频会播放失败原因)

  • iphone11音量键一高一低(iphone11音量键一个好按一个很难按)

    iphone11音量键一高一低(iphone11音量键一个好按一个很难按)

  • airpods pro国行港版区别(airpods pro国行和港版有啥区别)

    airpods pro国行港版区别(airpods pro国行和港版有啥区别)

  • 已经开了淘宝店为什么找不到了(已经开了淘宝店铺怎么登陆)

    已经开了淘宝店为什么找不到了(已经开了淘宝店铺怎么登陆)

  • 快手小店关闭了多久可以在开通(快手小店关闭了多久审核成功)

    快手小店关闭了多久可以在开通(快手小店关闭了多久审核成功)

  • 爱奇艺随心看会员怎么取消(爱奇艺随心看会员合约包违约金多少)

    爱奇艺随心看会员怎么取消(爱奇艺随心看会员合约包违约金多少)

  • 屏幕进水后一闪一闪(屏幕进水一闪一闪,烘干后还能好吗)

    屏幕进水后一闪一闪(屏幕进水一闪一闪,烘干后还能好吗)

  • 荣耀v30pro防水测评(荣耀v30pro防水可以到达什么程度)

    荣耀v30pro防水测评(荣耀v30pro防水可以到达什么程度)

  • systemclean已停止怎么办(system service停止运行)

    systemclean已停止怎么办(system service停止运行)

  • 三星s8快充是多少瓦(三星s8标准充电和快速充电)

    三星s8快充是多少瓦(三星s8标准充电和快速充电)

  • NAV是什么意思(nav是什么意思车上的)

    NAV是什么意思(nav是什么意思车上的)

  • win10打印机扫描在哪(win10打印机扫描后找不到文件)

    win10打印机扫描在哪(win10打印机扫描后找不到文件)

  • 华为nova3屏幕多大(华为nova3屏幕多少寸)

    华为nova3屏幕多大(华为nova3屏幕多少寸)

  • 华为删除的录音怎么恢复(华为删除的录音文件)

    华为删除的录音怎么恢复(华为删除的录音文件)

  • 得力打卡机初始密码(得力打卡机初始密码怎么改)

    得力打卡机初始密码(得力打卡机初始密码怎么改)

  • 苹果手机怎么换电池(苹果手机怎么换铃声)

    苹果手机怎么换电池(苹果手机怎么换铃声)

  • 电脑系统还原按f几(电脑系统还原按不动了怎么办)

    电脑系统还原按f几(电脑系统还原按不动了怎么办)

  • 抖音怎么取消绑定手机号(抖音怎么取消绑定店铺)

    抖音怎么取消绑定手机号(抖音怎么取消绑定店铺)

  • 松木国家森林,佛罗里达州 (© plainpicture/Cavan Images)(松木山在哪)

    松木国家森林,佛罗里达州 (© plainpicture/Cavan Images)(松木山在哪)

  • Object.assign详解(object.assign(this.$data, this.$options.data()))

    Object.assign详解(object.assign(this.$data, this.$options.data()))

  • 可供出售金融资产和长期股权投资
  • 汇算清缴时房企毛利额有差异如何调整
  • 增值税和购置税是一个东西吗
  • 稿费的个人所得税税率是多少
  • 资产处置损益包含增值税吗
  • 小规模开专票附加税要计提吗
  • 坏账计提坏账准备
  • 费用挂账的会计分录怎么做
  • 应税职工福利费在应纳税所得额里面吗
  • 终止销售关系怎么处理
  • 纳税人领购普通发票要求
  • 半成品原材料报废会计处理怎么做?
  • 应征进口关税的公式
  • 2021虚开发票案例
  • 房产增值税是怎么交的呢
  • 个体户财务负责人风险有哪些
  • 公司收到境外付款的人民币
  • 商品促销有关问题
  • linux dns配置服务器
  • 半成品加工费计入什么科目
  • 母公司是否应替子公司承担违约责任
  • win11时间不对
  • php curl header参数
  • 会计分录错误用什么方法更正
  • Linux系统中怎么开机自动运行拍摄文件
  • 春天里的____作文
  • 个人减免税政策6条
  • PHP:pg_close()的用法_PostgreSQL函数
  • mac 快速切换输入法
  • php通用分页类
  • 2022最新廉洁警示语句
  • 增值税申报表上期留抵税额怎么填
  • python web开发方向的第三方库有哪些
  • 关于申请补发工资的申请
  • 个税在工资里怎么计提
  • 增值税不动产扣除项目
  • 房产税收特点有哪些
  • 做账计提是什么意思
  • 出差费用计入
  • vue打包找不到文件
  • 企业接受捐赠如何开具发票
  • 旅行社的增值税税率
  • 税额不够什么意思
  • 综合所得申报怎么补报上个月的
  • SQL Server 2008中SQL查询语句字段值不区分大小写的问题解决
  • 收到银行开具的利息发票怎么做账
  • 应付职工薪酬的含义
  • 会计做账可以写负数吗
  • 贷款利息收入如何核算
  • 餐费计入哪个科目合理避税
  • 设计规划费入什么科目
  • 资产评估费怎么收
  • 生产型企业年终奖发放方案
  • 总账建账要建全部科目吗
  • 在centos上安装ftp服务应运行指令
  • 如何删除多余的空白表格
  • grub2引导win10
  • 自我挖掘的才干
  • win7 win8.1双系统安装教程
  • winscope是什么意思
  • splash.exe - splash是什么进程 有什么作用
  • centos zsh
  • win8的计算机在哪里
  • gnome版本
  • 打开电脑显示配置windows,可是一直0%,怎么办
  • opengl画直线函数
  • nodejs writestream
  • unable to instantiate default
  • unity3d 帧同步
  • cocos2dx运行原理
  • 用jQuery实现优酷首页轮播图
  • nodejs实例教程
  • 修改安卓app权限教程
  • jQuery Mobile和HTML5开发App推广注册页
  • shell可以多线程吗
  • javascript的含义和作用
  • 4s店买车需要驾驶证吗
  • 钢结构税收政策
  • 收到12366的短信
  • 失业金存在多个账户
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设