毕设项目 深度学习YOLOv5车辆颜色识别检测

文章目录

  • 1 前言
  • 2 实现效果
  • 3 CNN卷积神经网络
  • 4 Yolov5
  • 6 数据集处理及模型训练

1 前言

🔥这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。并且很难找到完整的毕设参考学习资料。

为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目提供大家参考学习,今天要分享的是

🚩 **基于深度学习YOLOv5车辆颜色识别检测 **

🥇学长这里给一个题目综合评分(每项满分5分)

  • 难度系数:3分
  • 工作量:3分
  • 创新点:4分

🧿选题指导, 项目分享:见文末

2 实现效果



3 CNN卷积神经网络

卷积神经网络(CNN),是由多层卷积结构组成的一种神经网络。卷积结构可以减少网络的内存占用、参数和模型的过拟合。卷积神经网络是一种典型的深度学习算法。广泛应用于视觉处理和人工智能领域,特别是在图像识别和人脸识别领域。与完全连接的神经网络相比,CNN输入是通过交换参数和局部感知来提取图像特征的图像。卷积神经网络是由输入层、卷积层、池化层、全连接层和输出层五层结构组成。其具体模型如下图所示。

(1)输入层(Input layer):输入层就是神经网络的输入端口,就是把输入传入的入口。通常传入的图像的R,G,B三个通道的数据。数据的输入一般是多维的矩阵向量,其中矩阵中的数值代表的是图像对应位置的像素点的值。

(2)卷积层(Convolution layer):卷积层在CNN中主要具有学习功能,它主要提取输入的数据的特征值。

(3)池化层(Pooling layer):池化层通过对卷积层的特征值进行压缩来获得自己的特征值,减小特征值的矩阵的维度,减小网络计算量,加速收敛速度可以有效避免过拟合问题。

(4)全连接层(Full connected layer):全连接层主要实现是把经过卷积层和池化层处理的数据进行集合在一起,形成一个或者多个的全连接层,该层在CNN的功能主要是实现高阶推理计算。

(5)输出层(Output layer):输出层在全连接层之后,是整个神经网络的输出端口即把处理分析后的数据进行输出。

cnn卷积神经网络的编写如下,编写卷积层、池化层和全连接层的代码

conv1_1=tf.layers.conv2d(x,16,(3,3),padding='same',activation=tf.nn.relu,name='conv1_1')conv1_2=tf.layers.conv2d(conv1_1,16,(3,3),padding='same',activation=tf.nn.relu,name='conv1_2')pool1=tf.layers.max_pooling2d(conv1_2,(2,2),(2,2),name='pool1')conv2_1=tf.layers.conv2d(pool1,32,(3,3),padding='same',activation=tf.nn.relu,name='conv2_1')conv2_2=tf.layers.conv2d(conv2_1,32,(3,3),padding='same',activation=tf.nn.relu,name='conv2_2')pool2=tf.layers.max_pooling2d(conv2_2,(2,2),(2,2),name='pool2')conv3_1=tf.layers.conv2d(pool2,64,(3,3),padding='same',activation=tf.nn.relu,name='conv3_1')conv3_2=tf.layers.conv2d(conv3_1,64,(3,3),padding='same',activation=tf.nn.relu,name='conv3_2')pool3=tf.layers.max_pooling2d(conv3_2,(2,2),(2,2),name='pool3')conv4_1=tf.layers.conv2d(pool3,128,(3,3),padding='same',activation=tf.nn.relu,name='conv4_1')conv4_2=tf.layers.conv2d(conv4_1,128,(3,3),padding='same',activation=tf.nn.relu,name='conv4_2')pool4=tf.layers.max_pooling2d(conv4_2,(2,2),(2,2),name='pool4')flatten=tf.layers.flatten(pool4)fc1=tf.layers.dense(flatten,512,tf.nn.relu)fc1_dropout=tf.nn.dropout(fc1,keep_prob=keep_prob)fc2=tf.layers.dense(fc1,256,tf.nn.relu)fc2_dropout=tf.nn.dropout(fc2,keep_prob=keep_prob)fc3=tf.layers.dense(fc2,2,None)

4 Yolov5

简介

我们选择当下YOLO最新的卷积神经网络YOLOv5来进行火焰识别检测。6月9日,Ultralytics公司开源了YOLOv5,离上一次YOLOv4发布不到50天。而且这一次的YOLOv5是完全基于PyTorch实现的!在我们还对YOLOv4的各种高端操作、丰富的实验对比惊叹不已时,YOLOv5又带来了更强实时目标检测技术。按照官方给出的数目,现版本的YOLOv5每个图像的推理时间最快0.007秒,即每秒140帧(FPS),但YOLOv5的权重文件大小只有YOLOv4的1/9。

目标检测架构分为两种,一种是two-stage,一种是one-stage,区别就在于 two-stage 有region proposal过程,类似于一种海选过程,网络会根据候选区域生成位置和类别,而one-stage直接从图片生成位置和类别。今天提到的 YOLO就是一种 one-stage方法。YOLO是You Only Look Once的缩写,意思是神经网络只需要看一次图片,就能输出结果。YOLO 一共发布了五个版本,其中 YOLOv1 奠定了整个系列的基础,后面的系列就是在第一版基础上的改进,为的是提升性能。

YOLOv5有4个版本性能如图所示:

网络架构图

YOLOv5是一种单阶段目标检测算法,该算法在YOLOv4的基础上添加了一些新的改进思路,使其速度与精度都得到了极大的性能提升。主要的改进思路如下所示:

输入端

在模型训练阶段,提出了一些改进思路,主要包括Mosaic数据增强、自适应锚框计算、自适应图片缩放;

Mosaic数据增强:Mosaic数据增强的作者也是来自YOLOv5团队的成员,通过随机缩放、随机裁剪、随机排布的方式进行拼接,对小目标的检测效果很不错

基准网络

融合其它检测算法中的一些新思路,主要包括:Focus结构与CSP结构;

Neck网络

在目标检测领域,为了更好的提取融合特征,通常在Backbone和输出层,会插入一些层,这个部分称为Neck。Yolov5中添加了FPN+PAN结构,相当于目标检测网络的颈部,也是非常关键的。


FPN+PAN的结构

这样结合操作,FPN层自顶向下传达强语义特征(High-Level特征),而特征金字塔则自底向上传达强定位特征(Low-Level特征),两两联手,从不同的主干层对不同的检测层进行特征聚合。

FPN+PAN借鉴的是18年CVPR的PANet,当时主要应用于图像分割领域,但Alexey将其拆分应用到Yolov4中,进一步提高特征提取的能力。

Head输出层

输出层的锚框机制与YOLOv4相同,主要改进的是训练时的损失函数GIOU_Loss,以及预测框筛选的DIOU_nms。

对于Head部分,可以看到三个紫色箭头处的特征图是40×40、20×20、10×10。以及最后Prediction中用于预测的3个特征图:

①==>40×40×255 ②==>20×20×255 ③==>10×10×255

  • 相关代码

    classDetect(nn.Module):stride=None# strides computed during buildonnx_dynamic=False# ONNX export parameterdef__init__(self,nc=80,anchors=(),ch=(),inplace=True):# detection layersuper().__init__()self.nc=nc# number of classesself.no=nc+5# number of outputs per anchorself.nl=len(anchors)# number of detection layersself.na=len(anchors[0])//2# number of anchorsself.grid=[torch.zeros(1)]*self.nl# init gridself.anchor_grid=[torch.zeros(1)]*self.nl# init anchor gridself.register_buffer('anchors',torch.tensor(anchors).float().view(self.nl,-1,2))# shape(nl,na,2)self.m=nn.ModuleList(nn.Conv2d(x,self.no*self.na,1)forxinch)# output convself.inplace=inplace# use in-place ops (e.g. slice assignment)defforward(self,x):z=[]# inference outputforiinrange(self.nl):x[i]=self.m[i](x[i])# convbs,_,ny,nx=x[i].shape# x(bs,255,20,20) to x(bs,3,20,20,85)x[i]=x[i].view(bs,self.na,self.no,ny,nx).permute(0,1,3,4,2).contiguous()ifnotself.training:# inferenceifself.onnx_dynamicorself.grid[i].shape[2:4]!=x[i].shape[2:4]:self.grid[i],self.anchor_grid[i]=self._make_grid(nx,ny,i)y=x[i].sigmoid()ifself.inplace:y[...,0:2]=(y[...,0:2]*2-0.5+self.grid[i])*self.stride[i]# xyy[...,2:4]=(y[...,2:4]*2)**2*self.anchor_grid[i]# whelse:# for YOLOv5 on AWS Inferentia https://github.com/ultralytics/yolov5/pull/2953xy=(y[...,0:2]*2-0.5+self.grid[i])*self.stride[i]# xywh=(y[...,2:4]*2)**2*self.anchor_grid[i]# why=torch.cat((xy,wh,y[...,4:]),-1)z.append(y.view(bs,-1,self.no))returnxifself.trainingelse(torch.cat(z,1),x)def_make_grid(self,nx=20,ny=20,i=0):d=self.anchors[i].deviceifcheck_version(torch.__version__,'1.10.0'):# torch>=1.10.0 meshgrid workaround for torch>=0.7 compatibilityyv,xv=torch.meshgrid([torch.arange(ny).to(d),torch.arange(nx).to(d)],indexing='ij')else:yv,xv=torch.meshgrid([torch.arange(ny).to(d),torch.arange(nx).to(d)])grid=torch.stack((xv,yv),2).expand((1,self.na,ny,nx,2)).float()anchor_grid=(self.anchors[i].clone()*self.stride[i])\.view((1,self.na,1,1,2)).expand((1,self.na,ny,nx,2)).float()returngrid,anchor_grid

6 数据集处理及模型训练

数据集准备

由于目前汽车颜色图片并没有现成的数据集,我们使用Python爬虫利用关键字在互联网上获得的图片数据,编写程序爬了1w张,筛选后用于训练。

深度学习图像标注软件众多,按照不同分类标准有多中类型,本文使用LabelImg单机标注软件进行标注。LabelImg是基于角点的标注方式产生边界框,对图片进行标注得到xml格式的标注文件,由于边界框对检测精度的影响较大因此采用手动标注,并没有使用自动标注软件。

考虑到有的朋友时间不足,博主提供了标注好的数据集和训练好的模型,需要请联系。

数据标注简介

通过pip指令即可安装

pip install labelimg

在命令行中输入labelimg即可打开


后续课查看其他标注教程,不难。

开始训练模型

处理好数据集和准备完yaml文件,就可以开始yolov5的训练了。首先我们找到train.py这个py文件。

然后找到主函数的入口,这里面有模型的主要参数。修改train.py中的weights、cfg、data、epochs、batch_size、imgsz、device、workers等参数

至此,就可以运行train.py函数训练自己的模型了。

训练代码成功执行之后会在命令行中输出下列信息,接下来就是安心等待模型训练结束即可。

🧿 项目分享:大家可自取用于参考学习,获取方式见文末!

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

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

相关文章

UE5 材质-38-节点:

(161) (162) (163) 谢谢

【Java毕设全套源码+文档】基于springboot的研究生志愿填报辅助系统设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

客户一聊就放松!3句“舒服话术”让成交水到渠成

销售工作的核心并非是去说服客户购买产品,而是要和客户建立起互相信任的关系;和客户聊天的目的也不是单纯地推销产品,而是要让客户愿意听你讲话,那些真正在情商方面表现出众的销售人员,懂得运用“让人感觉舒适的话术”…

国内优质酒店设计施工一体化公司推荐 - 品牌排行榜

国内优质酒店设计施工一体化公司推荐酒店设计施工一体化是将设计方案与施工执行统筹整合的服务模式,通过全流程协同提升项目效率、保障工程质量,同时实现责任主体统一,为业主减少沟通成本与风险。这种模式在酒店建设…

56、IP 过滤与防火墙技术解析

IP 过滤与防火墙技术解析 1. IP 过滤基础 在网络通信中,IP 过滤和防火墙起着至关重要的作用。TRACK 和 NF_IP_PRI_NAT_DST 可以针对相同的钩子编号和协议族进行注册,这意味着它们能够依据优先级存在于同一链中。其中,优先级为 NF_IP_PRI_CONNTRACK 的钩子会首先被处理,因…

好写作AI:别卷了,这算法能一键生成你憋了仨月的论文

深夜的实验室里,对着空白文档发呆的研究生小林,突然收到了一条AI生成的论文大纲。第二天,导师看着那份结构清晰、重点突出的初稿,破天荒地回复了三个字:“有点东西。” 这并非科幻场景。南京财经大学一项调研显示&…

好写作AI:给你的键盘装上“三头六臂”

当你还在为改稿发愁,在“学术严谨”和“语言风趣”之间反复横跳时,好写作AI已经用一套算法,让文本生成、润色和风格迁移这三件苦差事,像流水线一样丝滑地同时运转起来了。 对许多创作者来说,写作是一个线性过程&#x…

鸿蒙 Electron 进阶实战:分布式数据同步与多设备协同开发指南

在上一篇文章中,我们实现了鸿蒙与 Electron 的基础通信及原生能力调用,验证了两者融合的可行性。但在企业级全场景应用中,更核心的需求是分布式数据同步(如多端任务列表实时同步)和多设备协同(如 Electron …

【2025权威发布】高精度|高性能|进口光互联纳米制造设备解决方案,头部品牌企业推荐TOP3 - 品牌推荐大师1

光互联纳米制造设备,指的是用于制造和加工微米到纳米尺度光互连结构的专用设备和系统。简单来说,就是为了在芯片或光模块内部“搭建”极细微的“光路通道”,实现光信号高速传输所必需的精密加工工具。 为了让你快速…

好写作AI:别让你的论文逻辑再“左右横跳”了!

面对一篇由AI生成的、论点四处“闪现”、上下文关系比网红情侣还脆弱的文章,你是否也感到CPU都快烧了?逻辑连贯性,这个长期困扰AI写作的“阿喀琉斯之踵”,如今有了新的解法。 深夜,研究生小陈看着屏幕上一段AI生成的技…

鸿蒙 Electron 实战:集成鸿蒙推送服务与 Electron 应用消息通知全方案

在鸿蒙与 Electron 的融合开发中,跨端消息推送是企业级应用的核心需求之一。鸿蒙推送服务(Push Kit)能实现鸿蒙设备的高效消息触达,而将其与 Electron 桌面应用结合,可打造 “鸿蒙设备触发、Electron 端接收响应” 的全…

好写作AI:给你的键盘装个“副驾”,这波Transformer交互设计赢麻了!

深夜,你的手指悬在键盘上,对着空白文档第18次删掉刚写下的开头——这场景,像极了等待加载的进度条,卡在99%就是不动。直到光标旁,悄然浮现出第一行由AI写下的、与你心意相通的句子。 这不是魔法,而是好写作…

好写作AI:你的赛博翻译官,让中文写作秒变国际范儿!

深夜,上海某跨国公司的办公室里,李经理正对着屏幕上一份急需英译的项目报告发愁。传统的逐句翻译不仅耗时,那股“机翻味儿”更让他担心影响专业形象。此时,他尝试将中文初稿拖入好写作AI,点击“生成英文报告”。几秒后…

画高保真原型图用什么软件?产品经理与设计师的选型思路

到了2026年,经常被大家拿来画高保真原型的工具,基本上都是主流的这几款:Axure RP、墨刀、ProtoPie、Figma、Pixso。本文从几个维度来拆一拆这几款工具,给产品经理和设计师一些参考。引言 画高保真原型图很少是为了…

好写作AI:你的文字,从“社恐”到“社牛”只需3层干预

一份文档,三分靠写,七分靠改。而真正的“笔杆子”,连那三分的写作时间,也正在被AI重新定义。 深夜,小王对着屏幕上那篇语法挑不出毛病、结构四平八稳、但读起来就是“没内味儿”的策划案,发出了第N次叹息。…

办公室设计施工一体化公司推荐:哪些企业值得关注? - 品牌排行榜

在办公室建设过程中,设计与施工的衔接往往是影响项目效率与质量的关键环节。设计施工一体化模式通过统筹全流程资源,实现从创意构思到工程落地的无缝对接,正成为众多企业的优先选择。以下结合行业实践,推荐几家在该…

如何直观理解dB ?

在电子工程、音频处理和通信领域,分贝(dB)是我们最常遇到的单位之一。无论是放大器的增益、音频设备的音量,还是无线信号强度,我们都会看到这个神奇的对数单位。 但一个常见的问题让许多初学者困惑:为什么计算功…

别再广撒网!高效找客资的3个狠招,直接对接工厂老板!

在获取客户成本不断上涨的如今,盲目地进行信息群发、采用地毯式的推销方式早已失去了效果,真正有效的客户资源,不在于数量“多”,而在于定位“准”,尤其是那些能够直接接触到决策者的第一手资源,怎样才能精…

AI路由系统深度配置指南:构建智能多模型调度平台

还在为单一AI模型无法满足复杂业务需求而苦恼?或者面对高昂的API成本却缺乏有效的优化手段?本文将带你深入探索AI路由系统的核心配置技巧,打造一个成本可控、性能卓越的智能调度平台,让你的AI应用真正实现"量体裁衣"。 …

一键生成!AI智能证件照在线制作系统源码, 集成先进的AI智能证件照大模型

温馨提示:文末有资源获取方式系统的核心功能亮点:极速AI人脸识别与处理: 集成先进的AI智能证件照大模型,能够精准、快速地识别人像。用户仅需上传一张日常生活照,系统可在1秒钟内自动完成抠图、对齐和初步优化&#xf…