第P10周:Pytorch实现车牌识别

自动检测系统是否有可用的 GPU(CUDA),如果有就使用 GPU,否则使用 CPU。

设定包含图像文件的目录,并将其转换为 Path 对象。

获取 data_dir 中所有文件(或文件夹),生成的是一个 Path 对象列表,储存在 data_paths 中。



组成字符集合 char_set,用于车牌字符可能出现的全集。

char_set 是所有可能字符的集合。

char_set_len 是字符种类数量。

label_name_len 是每个 label 的字符数长度。

对每个字符进行 one-hot 编码,每行表示该位置上的字符。

对 classeNames 中所有车牌标签进行编码,得到 all_labels 列表。

all_labels: 即上一段生成的标签列表。

data_paths_str: 图像路径列表(字符串路径)。

transform: 数据增强操作。根据索引读取图像并转为 RGB。

定义了数据增强管道 train_transforms:

Resize([224, 224]): 调整图像大小为 ResNet 常用尺寸。

ToTensor(): 转为 PyTorch 的张量格式。

Normalize(...): 按照 ImageNet 的均值与标准差进行归一化处理。

按照 80% : 20% 的比例划分训练集和测试集。使用 random_split 确保划分是随机的。

使用 batch_size=16,对训练和测试集分别构造了 DataLoader。shuffle=True 代表每个 epoch 都会打乱数据顺序。

迭代 test_loader 中的一个 batch(图像 X 和标签 y)。

break:只取第一个 batch。

X.shape:输出图像张量的形状。

self.conv1 → conv5:5层卷积,每层带 BatchNorm

self.pool:2次 MaxPooling

self.fc1:全连接层,输出为 label_name_len * char_set_len

self.reshape:将扁平输出 reshape 为多字符 one-hot 格式

输入图像尺寸是 3×224×224

卷积层参数:kernel=5, stride=1, padding=0

MaxPool 参数:kernel=2, stride=2

最终扁平后尺寸是 24×50×50

用于将 [batch_size, 483] reshape 为 [batch_size, 7, 69],每张图预测7个字符,每个字符是69类分类问题。

训练时输出 shape 和标签一致([batch_size, 7, 69])

输入图像尺寸为 (3, 224, 224),使用 torchsummary 可视化每一层的输出 shape 和参数数目。

test():用于评估模型在测试集上的平均 loss。

model.eval():进入评估模式。

torch.no_grad():测试时不记录梯度,节省显存。

loss_model(pred, y):计算损失。

test_loss /= num_batches:输出平均损失。

train():训练一个 epoch。

model.train():切换到训练模式。

zero_grad():梯度清零

outputs = model(images):前向传播

loss.backward():反向传播

optimizer.step():更新权重

每1000步打印一次当前 loss。

train():每个 epoch 执行一次训练。

test():每个 epoch 后评估模型。

test_acc_list:存储每轮的准确率。

test_loss_list:存储每轮的平均 loss。

从 Epoch 1 到 Epoch 30,Loss 稳定下降,在 Epoch 20 之后趋于平稳,说明模型未过拟合。

相关推荐
Json____几秒前
使用python的 FastApi框架开发图书管理系统-前后端分离项目分享
开发语言·python·fastapi·图书管理系统·图书·项目练习
安思派Anspire6 分钟前
LangGraph + MCP + Ollama:构建强大代理 AI 的关键(二)
人工智能·后端·python
站大爷IP10 分钟前
Python文件与目录比较全攻略:从基础操作到性能优化
python
运器12319 分钟前
【一起来学AI大模型】支持向量机(SVM):核心算法深度解析
大数据·人工智能·算法·机器学习·支持向量机·ai·ai编程
开发者工具分享34 分钟前
缺乏项目进度可视化手段,如何提升展示效果
人工智能
慧星云42 分钟前
ComfyUI工作流 :一键二次元角色转真人
人工智能·云计算·aigc
聚客AI1 小时前
⚡ 突破LLM三大局限:LangChain架构核心解析与最佳实践
人工智能·langchain·llm
Sui_Network1 小时前
tBTC 现已上线 Sui,带来 5 亿美元的比特币流动性
人工智能·物联网·web3·区块链·量子计算
春哥的研究所1 小时前
AI人工智能名片小程序源码系统,名片小程序+分销商城+AI客服,包含完整搭建教程
人工智能·微信小程序·小程序
ahead~1 小时前
【大模型入门】访问GPT_API实战案例
人工智能·python·gpt·大语言模型llm