基于Python深度学习的车辆车牌识别系统(PyTorch2卷积神经网络CNN+OpenCV4实现)视频教程 - 新建项目&卷积神经网络定义
基于Python深度学习的车辆车牌识别系统(PyTorch2卷积神经网络CNN+OpenCV4实现)视频教程 - 新建项目&卷积神经网络定义
大家好,我是java1234_小锋老师,最近写了一套基于Python深度学习的车辆车牌识别系统(PyTorch2卷积神经网络CNN+OpenCV4实现)视频教程,持续更新中,计划月底更新完,感谢支持。
视频在线地址:
https://www.bilibili.com/video/BV1BdUnBLE6N/
课程简介:

本课程采用主流的Python技术栈实现,分两套系统讲解,一套是专门讲PyTorch2卷积神经网络CNN训练模型,识别车牌,当然实现过程中还用到OpenCV实现图像格式转换,裁剪,大小缩放等。另外一套是基于前面Django+Vue通用权限系统基础上,加了车辆识别业务模型,Mysql8数据库,Django后端,Vue前端,后端集成训练好的模型,实现车牌识别。
基于Python深度学习的车辆车牌识别系统(PyTorch2卷积神经网络CNN+OpenCV4实现)视频教程 - 新建项目&卷积神经网络定义
首先新建一个纯净版项目lprs_model,选虚拟环境,python版本3.11

把images目录放到项目里,cnn_char_train是训练集字符图片,cnn_char_test是测试集字符图片。test下面是项目最终测试牌照图片。

字符都是20*20像素的图像。

项目里贴下 requirements.txt 依赖文本:安装pytorch,opencv等核心库。
colorama==0.4.6
filelock==3.20.0
fsspec==2025.10.0
Jinja2==3.1.6
MarkupSafe==3.0.3
mpmath==1.3.0
networkx==3.5
numpy==2.2.6
opencv-python==4.12.0.88
pillow==12.0.0
sympy==1.14.0
torch==2.9.0
torchvision==0.24.0
tqdm==4.67.1
typing_extensions==4.15.0
运行安装命令:
pip install -r requirements.txt -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com

新建char_model.py,定义模型
from torch import nn
# 说明:训练图片像素是20
# 目前中国大陆车牌字符 31个汉字 26个字母 10个数字 一个67种
numbers = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
alphbets = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',
'U', 'V', 'W', 'X', 'Y', 'Z']
chinese = ['zh_cuan', 'zh_e', 'zh_gan', 'zh_gan1', 'zh_gui', 'zh_gui1', 'zh_hei', 'zh_hu', 'zh_ji', 'zh_jin',
'zh_jing', 'zh_jl', 'zh_liao', 'zh_lu', 'zh_meng', 'zh_min', 'zh_ning', 'zh_qing', 'zh_qiong',
'zh_shan', 'zh_su', 'zh_sx', 'zh_wan', 'zh_xiang', 'zh_xin', 'zh_yu', 'zh_yu1', 'zh_yue', 'zh_yun',
'zh_zang', 'zh_zhe']
# 定义卷积神经网络模型
cnn_model = nn.Sequential(
# 第一层卷积层,输入1通道,输出32通道,卷积核大小3x3,填充1,
nn.Conv2d(1, 32, kernel_size=3, padding=1),
nn.ReLU(),
nn.MaxPool2d(2, 2), # 卷积层后接池化层 池化核大小2x2,步长2
# 第二层卷积层,输入32通道,输出64通道,卷积核大小3x3,填充1,
nn.Conv2d(32, 64, kernel_size=3, padding=1),
nn.ReLU(),
nn.MaxPool2d(2, 2), # 卷积层后接池化层 池化核大小2x2,步长2
# 展平操作,将数据从二维转为一维
nn.Flatten(),
# 第一个全连接层,输入64 * 5 * 5通道,输出512通道 像素20*20 经过2次卷积,得到64 * 5 * 5
nn.Linear(64 * 5 * 5, 512),
nn.ReLU(),
# 第二全连接层,输入512通道,输出256通道
nn.Linear(512, 256),
nn.ReLU(),
# 第三全连接层,输入256通道,输出67通道
nn.Linear(256, 67)
)
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐


所有评论(0)