2023年目标检测毕业设计(yolov5车辆识别、车辆检测、车牌识别、行人识别)

车辆识别视频

yolov5车辆识别视频

yolov5 yoloR对比行人车辆识别视频

yolov8识别视频

订阅专栏获得源码:http://t.csdn.cn/zsG47

​​​​​​​先看一下yolo发展史

二、单目测距原理

 图中有一个车辆,且车辆在地面上,其接地点Q必定在地面上。那么Q点的深度便可以求解出来。具体求解步骤懒得打公式了,就截图了。在单目测距过程中,实际物体上的Q点在成像的图片上对应Q’点,Q’点距离o1点沿y轴的距离为o1p’。这个距离o1p’除以y轴像素焦距fy (单位为pixel) ,再求arctan即可得到角度b’。然后按图中步骤很容易理解了。
 

三、准备工作

参考我这篇文章:

第一步:将整个代码从github上下载下来,

 网址:GitHub - ultralytics/yolov5: YOLOv5 🚀 in PyTorch > ONNX > CoreML > TFLite

也可以直接到GitHub上搜yolov5

主要是安装版本与配置声明中所需在库。
matplotlib>=3.2.2
numpy>=1.18.5
opencv-python>=4.1.2
Pillow
PyYAML>=5.3.1
scipy>=1.4.1
torch>=1.7.0
torchvision>=0.8.1
tqdm>=4.41.0
tensorboard>=2.4.1
seaborn>=0.11.0
pandas
pycocotools>=2.0  # COCO mAP
albumentations>=1.0.2

(1)安装pytorch(建议安装gpu版本cpu版本太慢)

这些库中可能就pytorch比较难安装,其他库用pip install 基本能实现。

可直接在Anaconda Prompt里输入:

pip install torch==1.7.0+cu101 torchvision==0.8.1+cu101 torchaudio===0.7.0 -f https://download.pytorch.org/whl/torch_stable.html


1.运行检测

下载完yolov5后,运行detect,可以帮助我们检查上面的环境是不是安装成功。

 如果运行不报错,我们会在runs//detect//exp 文件夹下看到两张已经预测出的照片。

3.运行检测

下载完yolov5后,运行detect,可以帮助我们检查上面的环境是不是安装成功。

如果运行不报错,我们会在runs//detect//exp 文件夹下看到两张已经预测出的照片。

如果报错,问题也不大,看就是安装的环境版本比较低或者没安装,我们稍微调试一下就OK了。

五、数据集

我们先要创建几个文件夹用来存放数据和模型。

在yolov5-master如下图所示文件夹

1.制作标签

这里我是以穿越火线为例,提供100个已经标记好的数据(放在文末)。你也可以自己标记,一百张效果不是很好,可以多标记几张。

(1)安装labelme

在Anaconda Prompt里pip install labelme

(2)使用labelme

在Anaconda Prompt里输入labelme,会弹出一个窗口。

然后打开图片所在的文件夹

点击rectangle,标记想要识别的东西。

环境准备

Anaconda 4.10.3 Tensorflow 2.6.0 python3.7.8 coding: utf-8 pycharm解释器:D:\Anaconda\envs\tensorflow\python.exe 以及各种第三方库


思路流程

1、将图片通过opencv切割识别定位车牌,切割保存
2、识别省份简称、识别城市代号、识别车牌编号


功能描述

car_num_main.py :将图片转为灰度图像,灰度图像二极化,分割图像并分别保存为.jpg和.bmp文件 train-license-province.py : 省份简称训练识别 train-license-letters.py :城市代号训练识别 train-license-digits.py :车牌编号训练识别
细节阐述

1、图片切割后分别保存在两个文件夹./img_cut and ./img_cut_not_3240 2、识别车牌需进入终端,在命令行中进入脚本所在目录, 输入执行如下命令:python train-license-province.py train 进行省份简称训练 输入执行如下命令:python train-license-province.py predict 进行省份简称识别 输入执行如下命令:python train-license-letters.py train 进行城市代号训练 输入执行如下命令:python train-license-letters.py predict 进行城市代号识别 输入执行如下命令:python train-license-digits.py train 进行车牌编号训练 输入执行如下命令:python train-license-digits.py predict 进行车牌编号识别 3、将要识别的图片调为.jpg格式,大小调为像素600*413最佳,可依据代码酌情调试 4、具体可以准确识别的车牌号参见数据集中训练集
测试数据集
项目总体框架

capture_img :存放将要识别的车牌图片
img_cut:运行car_num_main.py后生成切割后的图片
img_cut_not_3240 :运行 car_num_main.py 后生成切割后的图片(对比度加强)
test_images:存放测试图片
train_images: 存放训练图片
train-saver: 训练模型
过程展示

PS D:\pycharm\pycharm_work> cd .\chepai\
PS D:\pycharm\pycharm_work\chepai> python train-license-province.py train
复制代码
PS D:\pycharm\pycharm_work\chepai> python train-license-province.py predict
复制代码
PS D:\pycharm\pycharm_work\chepai> python train-license-digits.py predict
复制代码
技术简介

一、Tensorflow

TensorFlow是一个开放源代码软件库,用于进行高性能数值计算。借助其灵活的架构,用户可以轻松地将计算工作部署到多种平台(CPU、GPU、TPU)和设备(桌面设备、服务器集群、移动设备、边缘设备等)。

TensorFlow 是一个用于研究和生产的开放源代码机器学习库。TensorFlow 提供了各种 API,可供初学者和专家在桌面、移动、网络和云端环境下进行开发。

TensorFlow是采用数据流图(data flow graphs)来计算,所以首先我们得创建一个数据流流图,然后再将我们的数据(数据以张量(tensor)的形式存在)放在数据流图中计算。节点(Nodes)在图中表示数学操作,图中的边(edges)则表示在节点间相互联系的多维数据数组, 即张量(tensor)。训练模型时tensor会不断的从数据流图中的一个节点flow到另一节点。

二、OpenCV

OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。

OpenCV提供的视觉处理算法非常丰富,并且它部分以C语言编写,加上其开源的特性,处理得当,不需要添加新的外部支持也可以完整的编译链接生成执行程序,所以很多人用它来做算法的移植,OpenCV的代码经过适当改写可以正常的运行在DSP系统和ARM嵌入式系统中。其应用领域诸如:人机互动,物体识别,图像分割,人脸识别,动作识别,运动跟踪,机器人,运动分析,机器视觉,结构分析,汽车安全驾驶等领域。

系统设计

车牌自动识别是以计算机视觉处理、数字图像处理、模式识别等技术为基础,对摄像机所拍摄的车辆图像或者视频图像进行处理分析,得到每辆车的车牌号码,从而完成识别的过程。在此基础上,可实现停车场出入口收费管理、盗抢车辆管理、高速公路超速自动化管理、闯红灯电子警察、公路收费管理等各种交通监管功能。
一、系统处理流程

车牌自动识别系统的设计包含车辆图像获取、车牌区域定位、车牌特征轮廓提取和车牌内容识别环节。

二、车牌获取

车牌图像获取是进行车牌识别的首要环节,车牌图像可以从摄像机拍摄的车辆图像或者视频图像中进行抽取,车牌图像的获取也可由用户手机拍摄后传入车牌识别系统。

三、灰度图像生成

摄像机拍摄的含有车牌信息的车辆图像是彩色的,为了提高车牌识别的抗外界干扰的能力,先将彩色车辆图像生成二值的灰度图像,实现基于色调的车牌区域定位。由于国内的车牌往往是蓝底白字,因此,可以利用图像的色调或者色彩饱和度特征,生成二值灰度图像,从而实现更加准确地定位车牌位置。

四、车牌区域定位

车牌区域的定位采用基于形状的方法。由于车辆图像背景比较复杂,所以应该根据车牌的特征进行初次筛选。车牌的特征可以选择中国车牌的大小、比例特征,因为车牌都是固定的矩形形状,通过首先寻找图像上拥有矩形特征的区域,然后再抽取这些区域,再结合车牌的长宽的比例特征可以筛选出相应的矩形区域,从而实现对车牌的准确定位。

五、特征轮廓提取

OpenCV 与 Python 的接口中使用 cv2.fifindContours() 函数来查找检测物体的轮廓。


 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

少儿Python每日一题(23):楼梯问题

原题解答 本次的题目如下所示: 楼梯有n阶台阶,上楼可以一步上1阶,也可以一步上2阶,走完n阶台阶共有多少种不同的走法? 输入格式: 输入楼梯的阶梯数n 输出格式: 输出不同走法的个数 输入样例&am…

Unity学习日记12(导航走路相关、动作完成度返回参数)

目录 动作的曲线与函数 创建遮罩 导航走路 设置导航网格权重 动作的曲线与函数 执行动作,根据动作完成度返回参数。 函数,在代码内执行同名函数即可调用。在执行关键帧时调用。 创建遮罩 绿色为可效用位置 将其运用到Animator上的遮罩,可…

嵌入式学习笔记——STM32寄存器编程实现外部中断

外部中断前言EXTI的介绍EXTI是什么EXTI的主要特性数量对应中断源的命名EXTI的框图配置流程寄存器介绍编程思路编程效果前言 上一篇中,介绍了关于STM32的中断管理以及具体配置,本文就使用之前的配置流程来实现一下外部中断的功能。 EXTI的介绍 EXTI是什…

SDIO读写SD卡速度有多快?

前两天测试了SPI方式读写SD卡的速度《SPI方式读写SD卡速度测试》,今天来测试一下SDIO方式的读写速度。测试条件:单片机:STM32F407VET6编译环境:MDK 5.30HAL库SD卡:闪迪32GB/64GB TF卡文件系统:FatFS R0.12c…

SpringCloud详解01-SpringCloudAlibaba、Nacos

文章目录前言一、架构演进1、web1.0阶段2、web2.0阶段3、垂直架构4、分布式架构二、SpringCloud基本概念1.特点2.SpringCloud和SpringCloudAlibaba3.SpringCloudAlibaba体系核心组件三、SpringCloudAlibaba1、注册中心Nacos2、Nacos安装和启动总结前言 本篇记录一下SpringClou…

ChatGPT研究分享:机器第一次开始理解人类世界

0、为什么会对ChatGPT感兴趣一开始,我对ChatGPT是没什么关注的,无非就是有更大的数据集,完成了更大规模的计算,所以能够回答更多的问题。但后来了解到几个案例,开始觉得这个事情并不简单。我先分别列举出来&#xff0c…

每日学术速递3.17

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.Breaking Common Sense: WHOOPS! A Vision-and-Language Benchmark of Synthetic and Compositional Images 标题:打破常识:哎呀!合成和合成图像…

【Redis】搭建哨兵集群

目录 集群结构 准备实例和配置 启动 测试 集群结构 这里我们搭建一个三节点形成的Sentinel集群,来监管之前的Redis主从集群。如图: 三个sentinel实例信息如下: 节点IPPORTs1192.168.150.10127001s2192.168.150.10127002s3192.168.150.…

python并发编程多线程

在传统操作系统中,每个进程有一个地址空间,而且默认就有一个控制线程 线程顾名思义,就是一条流水线工作的过程,一条流水线必须属于一个车间,一个车间的工作过程是一个进程 车间负责把资源整合到一起,是一个…

C语言指针操作(十)动态内存分配与指向它的指针变量

目录 一、什么是内存的动态分配 二、怎样建立内存的动态分配 2.1用malloc函数开辟动态存储区 2.2用calloc函数开辟动态存储区 2.3用realloc函数重新分配动态存储区 2.4用free函数释放动态存储区 三、void指针类型 四、举例说明 一、什么是内存的动态分配 全局变量是分…

redis持久化的几种方式

一、简介 Redis是一种高级key-value数据库。它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富。有字符串,链表,集 合和有序集合。支持在服务器端计算集合的并,交和补集(difference)等,还支持…

【蓝桥杯专题】 贪心(C++ | 洛谷 | acwing | 蓝桥)

菜狗现在才开始备战蓝桥杯QAQ 文章目录【蓝桥杯专题】 (C | 洛谷 | acwing | 蓝桥)1055. 股票买卖 IIAcWing 104. 货仓选址传递糖果AcWing 112. 雷达设备付账问题乘积最大AcWing 1247. 后缀表达式P【蓝桥杯专题】 (C | 洛谷 | acwing | 蓝桥&…

Flink 应用案例——求网页访问量Top N 实时计算(附可执行代码)

在学习了Flink之后,笔者通过以下案例对Flink API 进行简单复习 目录 案例要求 前置准备 编写主程序(点此跳转至代码) 运行截图 案例要求 以下数据 为某网站的访问日志 现要求通过以下数据 统计出最近10s内最热门的N个页面(即…

【3.17】MySQL索引整理、回溯(分割、子集问题)

3.1 索引常见面试题 索引的分类 什么是索引? 索引是一种数据结构,可以帮助MySQL快速定位到表中的数据。使用索引,可以大大提高查询的性能。 按「数据结构」分类:Btree索引、Hash索引、Full-text索引。 InnoDB 存储引擎创建的聚簇…

漫画:什么是快速排序算法?

这篇文章,以对话的方式,详细着讲解了快速排序以及排序排序的一些优化。 一禅:归并排序是一种基于分治思想的排序,处理的时候可以采取递归的方式来处理子问题。我弄个例子吧,好理解点。例如对于这个数组arr[] { 4&…

优思学院|六西格玛DMAIC,傻傻搞不清?

DMAIC还是搞不清? DMAIC是一个用于过程改进和六西格玛的问题解决方法论。它是以下五个步骤的缩写: 定义(Define):明确问题,设定项目的目标和目的。绘制流程图,并收集数据,以建立未来…

基于bearpi的智能小车--Qt上位机设计

基于bearpi的智能小车--Qt上位机设计 前言一、界面原型1.主界面2.网络配置子窗口模块二、设计步骤1.界面原型设计2.控件添加信号槽3.源码解析3.1.网络链接核心代码3.2.网络设置子界面3.3.小车控制核心代码总结前言 最近入手了两块小熊派开发板,借智能小车案例,进行鸿蒙设备学…

01背包问题c++

问题 问题介绍 有 N 种物品和一个容量是 V 的背包,每种物品都有无限件可用。 第 i 种物品的体积是 vi,价值是 wi。 求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。 输出最大价值。 输入格式 第…

基于Transformer的交通预测模型部分汇总【附源代码】

交通预测一直是一个重要的问题,它涉及到交通运输系统的可靠性和效率。随着人工智能的发展,越来越多的研究者开始使用深度学习模型来解决这个问题。其中,基于Transformer的交通预测模型在近年来备受关注,因为它们具有优秀的建模能力…

设计模式之桥接模式(C++)

作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 一、桥接模式是什么? 桥接模式是一种结构型的软件设计模式,将抽象部分与实现部分分离,使他们可…