第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 之后趋于平稳,说明模型未过拟合。

相关推荐
少林码僧几秒前
2.29 XGBoost、LightGBM、CatBoost对比:三大梯度提升框架选型指南
人工智能·机器学习·ai·数据挖掘·数据分析·回归
喝拿铁写前端2 分钟前
当 AI 会写代码之后,我们应该怎么“管”它?
前端·人工智能
春日见5 分钟前
控制算法:PP(纯跟踪)算法
linux·人工智能·驱动开发·算法·机器学习
沫儿笙13 分钟前
ABB焊接机器人混合气体节气方案
人工智能·机器人
田里的水稻15 分钟前
C++_python_相互之间的包含调用方法
c++·chrome·python
余俊晖16 分钟前
多页文档理解强化学习设计思路:DocR1奖励函数设计与数据构建思路
人工智能·语言模型·自然语言处理
Yeats_Liao18 分钟前
MindSpore开发之路(二十六):系列总结与学习路径展望
人工智能·深度学习·学习·机器学习
2501_9418705620 分钟前
面向微服务熔断与流量削峰策略的互联网系统稳定性设计与多语言工程实践分享
开发语言·python
sinat_2869451920 分钟前
opencode
人工智能·算法·chatgpt
gorgeous(๑>؂<๑)24 分钟前
【中科院-张启超组-AAAI26】WorldRFT: 用于自动驾驶的带强化微调的潜在世界模型规划
人工智能·机器学习·自动驾驶