当前位置: 首页 > news >正文

第P10周:Pytorch实现车牌识别

  • 🍨 本文为🔗365天深度学习训练营 中的学习记录博客
  • 🍖 原作者:K同学啊

在这里插入图片描述
自动检测系统是否有可用的 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)
  • 在局域网(LAN)中查看设备的 IP 地址
  • 批量创建文件夹并创建并列子文件夹
  • 【Java基础笔记vlog】Java中常见的几种数组排序算法汇总详解
  • Springboot2
  • 两足行走机器人:仿生设计与智能控制的技术革命
  • STM32之串口通信蓝牙(BLE)
  • vue+srpingboot实现多文件导出
  • Qt enabled + geometry 属性(2)
  • matlab加权核范数最小化图像去噪
  • 软件设计师“排序算法”真题考点分析——求三连
  • word通配符表
  • 远程连接的公私钥加密
  • Sign签证绕过
  • MobaXterm 解除只能保存14个session会话限制
  • 远程合并其他分支,再提交
  • 软件工程(六):一致性哈希算法
  • labview——控制继电器模块
  • UML基本概念:构造块、公共机制与规则
  • 解决C#泛型类参数无法带参数实例化的问题
  • 做企业网站设计方案/免费进入b站2022年更新
  • 猪八戒网怎么做网站/关键词搜索量怎么查
  • 微商城网站建设价格/快速seo关键词优化方案