2-D CTC Loss

2024-08-24 17:58
文章标签 loss ctc

本文主要是介绍2-D CTC Loss,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

2D-CTC for Scene Text Recognition,1-D CTC Loss参考CTC Loss和Focal CTC Loss

Motivation

普通的CTC仅支持1-d,但是文字识别不像语音识别,很多时候文字不是水平的,如果强行“压”到1d,对识别影响很大,如下图所示
在这里插入图片描述

Review 1-D CTC

首先对alphabeta进行扩充,加入blank符号,然后定义一个映射规则: blank之间的相同字符可以去重
计算loss时,对每个gt label字符间加入blank
在这里插入图片描述
然后计算
在这里插入图片描述
但是如果穷举能够经过映射规则变换到apple字符串的话,计算量太大。其实可以将apple分开进行映射,其实是互不干扰的,这时可以用动态规划重复利用子问题答案,参考博客

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2-D CTC

2d比1d多了个高度,不仅可以左右跳还可以上下跳。
在这里插入图片描述
左右跳是有固定的规则
在这里插入图片描述
而上下跳我们可以利用一个网络进行学习,上面第一个输出是wh各个位置的概率输出向量,而下面第二个输出是各个位置在h方向上跳动的概率,由于最后一列不用跳,因此输出是(w-1) h * h

每个位置在h方向跳动的概率和为1
在这里插入图片描述
在这里插入图片描述
同样在计算2-D CTC loss时依然可以用到动态规划,只是在多了个h方向(将原来的某一个点(一个概率值),换成某一条竖线,变成h个概率值乘以跳转概率的和)
在这里插入图片描述

备注

本文为了简便,在预测上下跳动概率时,假设同一列位置上,他们跳动到该列其他点上概率分布相同(好像attention呀,就是预测该列上出现文字的地方),该转移概率输出为(w-1) * h
作者说两者效果差不多

实验

在这里插入图片描述

解释下Vanill CTC + Attention,即网络结构和输出和2D-CTC一样,然后利用2d转移概率图乘以输出的概率图,最后在h方向求和以利用1d ctc

对比结果2d-ctc还是最好的

点评

个人认为这个应该是1.5d ctc,解决的是弯曲的一行文字,而不是真正的2d即多行文字

这篇关于2-D CTC Loss的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1103196

相关文章

Face Recognition简记1-A Performance Comparison of Loss Functions for Deep Face Recognition

创新点 1.各种loss的比较 总结 很久没见到这么专业的比较了,好高兴。 好像印证了一句话,没有免费的午餐。。。。 ArcFace 和 Angular Margin Softmax是性能比较突出的

【读论文】MUTUAL-CHANNEL LOSS

论文题目:《The Devil is in the Channels: Mutual-Channel Loss for Fine-Grained Image Classification》 链接:https://arxiv.org/abs/2002.04264 来源:IEEE TIP2020 细粒度分类的主要思想是找出各个子类间的可区分特征,因此文章指出要尽早在通道上进行钻研,而不是从合并

[论文笔记]Circle Loss: A Unified Perspective of Pair Similarity Optimization

引言 为了理解CoSENT的loss,今天来读一下Circle Loss: A Unified Perspective of Pair Similarity Optimization。 为了简单,下文中以翻译的口吻记录,比如替换"作者"为"我们"。 这篇论文从对深度特征学习的成对相似度优化角度出发,旨在最大化同类之间的相似度 s p s_p s

Focal Loss实现

一、序言         Focal Loss是分类常用到的损失函数,面试中也经常容易考,所以这里记录一下。 二、公式和代码         公式:         Focal Loss = -alpha*(1-pt)**gamma*log(pt)         其中alpha用来调节类别间的平衡,gamma用来平衡难例和简单例的平衡。         代码: import tor

pytorch Loss Functions

1. pytorch中loss函数使用方法示例 import torchimport torch.nn as nnimport torch.nn.functional as Ffrom torch.autograd import Variable# 定义网络时需要继承nn.Module并实现它的forward方法,将网络中具有可学习参数的层放在构造函数__init__中# 不具有可学习参

PyTorch训练中 Loss为负数,且不断减小

在To.Tensor()中会将图像归一化,但是对于一些数据不会归一化,看看标签和数据是否在一个范围内 Pytorch1.01中ToTensor解释 Convert a PIL Image or numpy.ndarray to tensor. Converts a PIL Image or numpy.ndarray (H x W x C) in the range [0, 255] to a

tensorflow LSTM+CTC实现端到端的不定长数字串识别

转载地址: https://www.jianshu.com/p/45828b18f133 上一篇文章tensorflow 实现端到端的OCR:二代身份证号识别实现了定长18位数字串的识别,并最终达到了98%的准确率。但是实际应用场景中,常常需要面对无法确定字串长度的情况,这时候除了需要对识别字符模型参数进行训练外,还需要对字符划分模型进行训练,本文实现了上文提到的方法2,使用LST

lstm+ctc 实现ocr识别

转载地址: https://zhuanlan.zhihu.com/p/21344595 OCR是一个古老的研究领域,简单说就是把图片上的文字转化为文本的过程。在最近几年随着大数据的发展,广大爬虫工程师在对抗验证码时也得用上OCR。所以,这篇文章主要说的OCR其实就是图片验证码的识别。OCR并不是我的研究方向,我研究这个问题是因为OCR是一个可以同时用CNN,RNN两种算法都可以很好解决的

MAE、MSE、Huber loss详解

https://mp.weixin.qq.com/s/Xbi5iOh3xoBIK5kVmqbKYA

多任务学习MTL模型:多目标Loss优化策略

前言 之前的文章中多任务学习MTL模型:MMoE、PLE,介绍了针对多任务学习的几种模型,着重网络结构方面的优化,减缓task之间相关性低导致梯度冲突,模型效果差,以及task之间的“跷跷板”问题。 但其实多任务学习还存在另外一些棘手的问题: 1、不同task的loss量级不同,可能会出现loss较大的task主导的现象(loss较大的task,梯度也会较大,导致模型的优化方向很大程度上由该