LPRNetN 车牌识别会用到

CTCLoss

batch_size 16

这个入门也不错:

如何使用pytorch内置torch.nn.CTCLoss的方法&&车牌识别应用_CSDNwei的专栏-CSDN博客_pytorch 车牌识别

import torch
import torch.nn as nnctc_loss = nn.CTCLoss()
log_probs = torch.randn(50, 16, 20).log_softmax(2).detach().requires_grad_()
targets = torch.randint(1, 20, (16, 30), dtype=torch.long)
input_lengths = torch.full((16,), 50, dtype=torch.long)
target_lengths = torch.randint(10,30,(16,), dtype=torch.long)
loss = ctc_loss(log_probs, targets, input_lengths, target_lengths)print(loss)
# loss.backward()

以下转自:

如何优雅的使用pytorch内置torch.nn.CTCLoss的方法 - 知乎

二、CTCLoss接口使用说明

第一步,获取CTCLoss()对象

ctc_loss = nn.CTCLoss(blank=len(CHARS)-1, reduction='mean')

类初始化参数说明:

blank:空白标签所在的label值,默认为0,需要根据实际的标签定义进行设定;

reduction:处理output losses的方式,string类型,可选'none' 、 'mean' 及 'sum','none'表示对output losses不做任何处理,'mean' 则对output losses取平均值处理,'sum'则是对output losses求和处理,默认为'mean' 。

第二步,在迭代中调用CTCLoss()对象计算损失值

loss = ctc_loss(log_probs, targets, input_lengths, target_lengths)

CTCLoss()对象调用形参说明:

log_probs:shape为(T, N, C)的模型输出张量,其中,T表示CTCLoss的输入长度也即输出序列长度,N表示训练的batch size长度,C则表示包含有空白标签的所有要预测的字符集总长度,log_probs一般需要经过torch.nn.functional.log_softmax处理后再送入到CTCLoss中;

targets:shape为(N, S) 或(sum(target_lengths))的张量,其中第一种类型,N表示训练的batch size长度,S则为标签长度,第二种类型,则为所有标签长度之和,但是需要注意的是targets不能包含有空白标签;

input_lengths:shape为(N)的张量或元组,但每一个元素的长度必须等于T即输出序列长度,一般来说模型输出序列固定后则该张量或元组的元素值均相同;

target_lengths:shape为(N)的张量或元组,其每一个元素指示每个训练输入序列的标签长度,但标签长度是可以变化的;

举个具体例子说明如何使用CTCLoss(),如下为CTCLoss在车牌识别里面的应用:

比如我们需要预测的字符集如下,其中'-'表示空白标签;

CHARS = ['京', '沪', '津', '渝', '冀', '晋', '蒙', '辽', '吉', '黑','苏', '浙', '皖', '闽', '赣', '鲁', '豫', '鄂', '湘', '粤','桂', '琼', '川', '贵', '云', '藏', '陕', '甘', '青', '宁','新','0', '1', '2', '3', '4', '5', '6', '7', '8', '9','A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K','L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V','W', 'X', 'Y', 'Z', 'I', 'O', '-']

因为空白标签所在的位置为len(CHARS)-1,而我们需要处理CTCLoss output losses的方式为‘mean’,则需要按照如下方式初始化CTCLoss类:

ctc_loss = nn.CTCLoss(blank=len(CHARS)-1, reduction='mean')

我们设定输出序列长度T为18,训练批大小N为4且训练数据集仅有4张车牌(为了方便说明)如下,总的字符集长度C如上面CHARS所示为68:

那么我们在训练一次迭代中打印各个输入形参得出如下结果:

1)log_probs由于数值比较多且为神经网络前向输出结果,我们仅打印其shape出来,如下:

torch.Size([18, 4, 68])

2)打印targets如下,表示这四张车牌的训练标签,根据target_lengths划分标签后可分别表示这四张车牌:

tensor([18, 45, 33, 37, 40, 49, 63, 4, 54, 51, 34, 53, 37, 38, 22, 56, 37, 38,33, 39, 34, 46, 2, 41, 44, 37, 39, 35, 33, 40])

3)打印target_lengths如下,每个元素分别指定了按序取targets多少个元素来表示一个车牌即标签:

CTCLoss 学习笔记相关推荐

  1. PyTorch学习笔记(三):PyTorch主要组成模块

    往期学习资料推荐: 1.Pytorch实战笔记_GoAI的博客-CSDN博客 2.Pytorch入门教程_GoAI的博客-CSDN博客 本系列目录: PyTorch学习笔记(一):PyTorch环境安 ...

  2. PyTorch学习笔记(21) ——损失函数

    0. 前言 本博客内容翻译自纽约大学数据科学中心在2020发布的<Deep Learning>课程的Activation Functions and Loss Functions 部分. ...

  3. PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 call

    您的位置 首页 PyTorch 学习笔记系列 PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 发布: 2017年8月4日 7,195阅读 ...

  4. 容器云原生DevOps学习笔记——第三期:从零搭建CI/CD系统标准化交付流程

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  5. 容器云原生DevOps学习笔记——第二期:如何快速高质量的应用容器化迁移

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  6. 2020年Yann Lecun深度学习笔记(下)

    2020年Yann Lecun深度学习笔记(下)

  7. 2020年Yann Lecun深度学习笔记(上)

    2020年Yann Lecun深度学习笔记(上)

  8. 知识图谱学习笔记(1)

    知识图谱学习笔记第一部分,包含RDF介绍,以及Jena RDF API使用 知识图谱的基石:RDF RDF(Resource Description Framework),即资源描述框架,其本质是一个 ...

  9. 计算机基础知识第十讲,计算机文化基础(第十讲)学习笔记

    计算机文化基础(第十讲)学习笔记 采样和量化PictureElement Pixel(像素)(链接: 采样的实质就是要用多少点(这个点我们叫像素)来描述一张图像,比如,一幅420x570的图像,就表示 ...

最新文章

  1. python subprocess_python subprocess - 刘江的python教程
  2. golang string切片解析json
  3. 什么浏览器好用_还在用手机自带浏览器么?这个不足1M的浏览器却功能更加强大...
  4. matlab用ezmesh绘制单位球,Matlab------------命令大全2
  5. ITK:使用Otsu方法将前景和背景分开
  6. HDU1285 确定名次 拓扑排序
  7. utf8 and unicode
  8. php防止快速刷新代码(分享)_php防止网站被刷新的方法汇总
  9. intellij mysql jdbc_intellij idea java项目中通过JDBC链接mysql
  10. HI3518E 中Sample Venc分析
  11. matlab插值与拟合例题_数学建模matlab插值与拟合
  12. 苹果cms后台登录验证码错误或显示不出来解决方法
  13. EXIT: Extrapolation and Interpolation-based Neural Controlled Differential Equations for Time-series
  14. 信号完整性(SI)电源完整性(PI)学习笔记(二十一)差分对与差分阻抗(一)
  15. mysql commit work_数据库commit work
  16. Win7/R2 原生VHD 启动
  17. 洗扑克牌 (乱数排序)
  18. 让你瞬间理解HTTP状态码
  19. input 标签 autofill属性生效导致的输入框背景色变成黄色(或其他色)的解决办法
  20. Linux基本bash命令(持续更新)

热门文章

  1. iconv文件编码判断转换
  2. 深入了解WM_SIZE
  3. Linux System Programming -- Appendix
  4. 如何给指定地址空间拍一个快照
  5. c语言均值滤波程序,10种简单的数字滤波算法(C语言源程序)
  6. php for循环执行函数,自执行函数用for结束后面不能访问循环变量
  7. NeHe教程Qt实现——lesson14
  8. android 弹出编辑框,Android编程实现的EditText弹出打开和关闭工具类
  9. realme怎么互传_realme真我X7 Pro首发体验:非常轻快,颜值不赖
  10. 万能素材库_高中作文经典人物万能素材积累