rasberry pi 5 -auto license plate recognition-Chinese(树莓派5车牌自动识别),环境搭建,yolo训练部署,大一从零开始个人学习全过程

本文将从最开始的环境搭建开始,其中会讲解一些涉及到的一些专业名字的概念及其作用(部分),详细介绍从搭建到训练再到部署及应用的个人学习全过程(2025年3月16日-2025年3月27日)。以下是本文目录:

一、学习过程中的问题

二、anaconda下载及环境搭建

三、部分库和yolov5下载及其依赖安装

四、yolov5数据集及训练

五、yolov5部署及Paddleocr联合应用车牌识别

一、学习过程中的问题

1、版本高于1.20.0的numpy不支持np.int类型,后续可能需要在相关python源文件中将np.int修改为int(只有几行代码)

2、python3.8之后不支持浮点型传参(常见问题)

3、torch的版本与是否支持cuda一定要注意选择

4、下载速度慢。在后面加上国内镜像源即可。如命令pip install numpy==1.23.5变为pip install numpy==1.23.5 -i https://pypi.tuna.tsinghua.edu.cn/simple

注意:torch无法直接用国内镜像源下载,提高下载速度只需在后面加上代理即可,如clash代理下载torch:pip install torch==2.0.1+cu118 torchvision==0.15.2+cu118 torchaudio==2.0.2+cu118 --index-url https://download.pytorch.org/whl/cu118 --proxy=http://127.0.0.1:7890

这里的cu118指11.8版本的cuda(gpu加速驱动),并且下载了支持显卡加速的torch不需要额外去官网下载cuda和cudnn。--proxy=http://127.0.0.1:7890即为代理端口

5镜像源:

清华大学镜像源

https://pypi.tuna.tsinghua.edu.cn/simple
阿里云镜像源
https://mirrors.aliyun.com/pypi/simple
中国科技大学镜像源
https://pypi.mirrors.ustc.edu.cn/simple

二、Anaconda 下载及环境搭建

声明:这里所用的各个库版本都是基于我个人的笔记本(win10),与其他库兼容的。如须安装其他版本,须特别注意库与库间的兼容性!

注意:之后所有的操作都是在anaconda prompt中操作的,并且每次进入都会默认进入base环境,须手动启动自定义的虚拟环境(后续会对虚拟环境进行解释)。

1、官方下载地址:Download Now | Anaconda下载最新版即可(2025年3月最新版为python3.12)

2、(推荐)清华镜像源下载(注意甄别版本):

Index of /anaconda/archive/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

在anaconda的安装中注意勾选添加值环境变量选项,若忘记勾选,则手动添加即可(这里不做详细介绍)或卸载重新安装勾选。

下载安装完anaconda后打开anaconda prompt。此时是默认的base环境,输入conda create -n myenv python= 3.8 命令创建(只有anaconda的python版本更高才能创建更低版本的python环境)python版本为3.8的虚拟环境(虚拟环境是一种在计算机上创建的独立、隔离的工作环墼,其中可以安装不同版本的软件包和工具,而不会影响到主机系统或其他虚拟环境。个人理解:把它看做另一个系统,之后在这个虚拟环境里下载安装的所有库都会安装在这个系统(实际是一个文件夹)中,而不会安装到C盘或其他地方便于管理),按提示输入y后,环境创建成功。

这里的yolo_env2就是我给这个虚拟环境所取的名字。以后所有创建的虚拟环境都保存在anaconda的envs目录中,可在anaconda prompt中使用conda env list命令来查看虚拟环境列表

输入conda activate   yolo_env2激活我的myenv虚拟环境,此时命令输入行左边的(base)变为(yolo_env2)。

三、部分库和yolov5下载及其依赖安装

1、检查版本:

         输入python,进入python交互环境,使用python --version命令查看python版本,之后ctrl+z退出python交互环境。

2、安装opencv(除了torch,之后所有库都使用清华大学镜像源下载),使用pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple,这样它会默认安装最新版的opencv,注意这里使用pip install opencv和pip install opencv-python是不一样的!前者会额外安装opencv-python-headless,这是无头版本,cv.imshow函数(用于生成窗口)将失效,后续项目主程序可能会受影响。这里我使用的是后者。后续在安装onnx,onnxruntime及paddleocr或easyocr时可能会自动安装无头版本。须更换为原来版本,解决办法会在后续说明。

2、安装numpy,1.23.5版本为稳定版(实际后续中安装paddleocr时自动更换为1.24.4,但也兼容),使用pip install numpy==1.23.5 -i https://pypi.tuna.tsinghua.edu.cn/simple命令。

3、下载安装torch,安装2.0.1+cu118版本,(如果你的电脑是NVIDIA显卡(英伟达,rtx系列)则支持cuda,需在NVIDIA设置中查看支持的cuda最高版本,作者的最高为12.2),2.6个g建议使用科学上网。使用命令pip install torch==2.0.1+cu118 torchvision==0.15.2+cu118 torchaudio==2.0.2+cu118 --index-url https://download.pytorch.org/whl/cu118 --proxy=http://127.0.0.1:7890下载安装

4、下载yolov5代码库,首先创建一个yoloproject文件夹用于存放yolov5代码库,使用命令cd  E:/yoloproject进入,若命令行左边仍未(base),输入E:命令切换,现在克隆代码库,若使用代理,直接用命令git clone https:/github.com/ultralytics/yolov5.git

下载,无代理也可用命令git clone https://gitclone.com/github.com/ultralytics/yolov5.git下载克隆,gitclone.com可为访问github.com加速。之后yolov5代码库路径因为E:/yoloproject/yolov5

5、安装yolov5依赖,使用cd E:/yoloproject/yolov5进入yolov5代码库所在文件夹,使用pip install -r requiremens.txt -i https://pypi.tuna.tsinghua.edu.cn/simple命令下载安装yolov5依赖,若你与作者目前所安装opencv,numpy,与torch版本一致,后续进入yolov5训练应不会出现问题(2025年3月)

以上可进入python环境吗,import torch 和import cv2 使用print(torch.__version__),print(cv2.__version__)命令查看版本以及print(torch.cuda.is_avaliable())查看是否支持显卡加速

四、yolov5数据集及训练

   (1):  首先讲解yolov5数据集文件格式,在E:/yoloproject/yolov5文件夹中找到datasets,创建一个文件夹,这里创建名为lisence,在lisence中创建images和labels文件夹,在images中再创建两个文件夹train和val,labels文件夹中同理,其中images文件夹的train中放训练图片,val中放入验证图片,在labels文件夹中的train中放入与images/train文件夹中放入顺序一一对应的,每个图片对应一个的标注文件(为.txt的文本文件),labels/val文件夹同理放入验证图片的标注文件。

这里提供一个数据集网站Roboflow Universe: Computer Vision Datasets其中可以直接下载yolov5模板的图片及其标注文件。ccpd是一个专为车牌识别的数据集,也可以在这里下载detectRecog/CCPD: [ECCV 2018] CCPD: a diverse and well-annotated dataset for license plate detection and recognition (github.com)

数据集图片及标注文件放好后,在yolov5文件夹中找到data文件夹,在这里创建一个配置文件,我这里取名为lisence.yaml。(建议安装vscode,便于代码查看和编写)点开它,在这个python文件中输入

path: E:\yoloproject\yolov5\datasets\lisence
train: images/train
val: images/val
nc: 1
names: ['license']

path是你的数据集根目录,nc是类别,也就是你有多少个检测的对象,names则是对象名字,nc实际是一个数组,从0开始为第一个(标注文件中的第一个数字),名字按顺序一一对应。比如names: ['license','license2']

(2):训练yolov5:回到anaconda prompt,确保当前开启虚拟环境,并且在yolov5文件夹下,未在python交互环境,输入命令python -c "from utils.downloads import attempt_download; attempt_download('yolov5s.pt')"这里是下载yolov5s模型也就是small大小的yolov5模型,m为中等大小,l为large大小,x为最大,n为nano(最小),从小到大速度一次下降,精度一次提升。要下载其他大小将s改为其他即可。可同时下载多个大小的yolov5模型

训练画面:

下载完成之后输入命令python train.py --data data/lisence.yaml --weights yolov5s.pt --img 640 --batch 8 --epochs 170训练yolov5s,data/lisence.yaml是配置文件位置,batch为一次处理多少张图片(作者显卡为RTX4060,batch设置为5),epochs为一共训练多少轮,训练过程中可按ctrl+c暂停训练,假设产生的best.pt和last.pt保存在yolov5的runs/train/exp2/weights目录下

可继续使用python detect.py --weights runs/train/exp2/weights/best.pt --source data/images --img 640命令测试训练效果,data/images为你要测试的图片或视频所在的文件夹路径,也可直接改为0,用摄像头获取图像,测试的结果保存在yolov5/runs/detect目录下某个exp文件中。

在暂停后,若结果不理想。想继续训练,可使用python train.py --resume runs/train/exp/weights/best.pt --data data/your_dataset.yaml --epochs 200

注意修改exp,your_dataset.yaml与训练所用配置一致即可。这里的epochs需要注意,假设之前是训练170轮,并且在第90轮暂停,那么它将继续从第90轮开始训练,直至训练至200,期间可再次暂停,会自动更新原来的best.pt和last.pt。(如果电脑息屏或进入睡眠模式可能会自动暂停哦,最好离开之前将电脑的息屏和进入睡眠时间改为从不,回来时再改回来,也可用云端训练yolo这里不做详细讲解)

五、yolov5部署及Paddleocr联合应用车牌识别

  现在来部署yolov5,这里我使用onnx模型格式推理,首先在虚拟环境下使用pip install onnx -i https://pypi.tuna.tsinghua.edu.cn/simple命令和pip install onnxruntime -i https://pypi.tuna.tsinghua.edu.cn/simple命令安装onnx和onnxruntime(onnx用于将best.pt导出为onnx格式,onnxruntime用于后续加载onnx格式的yolov5模型),如果此时出现黄色的,和证书(SSH)相关的警告,说明你的代理没有关闭!这时需要使用pip list查看当前环境所安装的所有库及其版本,如果自动安装了opencv-python-headless则先使用pip uninstall opencv-python-headless卸载,再使用安装4.9版本的opencv-python(4.9版本的也兼容也可安装4.9后继续安装4.11版本,它会自动卸载更新)

导出的文件与best.pt在同一文件夹

之后下载安装paddleoc,用pip install paddleocr -i https://pypi.tuna.tsinghua.edu.cn/simple命令,若提示没有找到,则开启代理,如pip install paddleocr --proxy=http://127.0.0.1:7890。ocr是Optical Character Recognition的缩写,意为光学字符识别。也可用easyocr,用pip install easyocr -i https://pypi.tuna.tsinghua.edu.cn/simple下载即可。注意若使用tesserocr,可能会安装opencv-python-headless,按之前说明的处理办法即可解决。

最后便是车牌自动识别的算法,这里采用paddleocr,源码:

git--/success.py at main · fanqizen/git-- (github.com)

目前仍在持续更新中,后续会应用在rasberry pi 5上,如果很久没更新,那就是忘了。QAQ

效果图

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值