本文主要是介绍【论文阅读】Perceiving Stroke-Semantic Context: Hierarchical Contrastive Learning for Robust Scene Text Re,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Perceiving Stroke-Semantic Context: Hierarchical Contrastive Learning for Robust Scene Text Recognition
作者:Hao Liu1†, Bin Wang1, Zhimin Bao1, Mobai Xue1,2‡, Sheng Kang1,2‡, Deqiang Jiang1, Yinsong Liu1, Bo Ren1
单位:腾讯优图实验室,中国科学技术大学
出处:AAAI2022
Abstract
提出PerSec(Perceiving Stroke-Semantic Context)
由于场景文本图像同时拥有视觉和语义属性,本文为提出的PreSec配备了双重上下文感知器,可以通过对未标记的文本图像数据的分层对比学习同时获取和比较赖在低级笔画和高级语义上下文空间的潜在表征。实验表明本文提出的方法在获取到更好的结果的同时具有很强的泛化性能。
Introduction
场景文本识别的难点在于:文本的字体、颜色、书写风格和光照、遮挡、低分辨率等各种外部因素的影响。且由于场景文本图像可能来自任何场景,因此其语义有丰富的多样性。
之前的研究试图通过纳入语言模型的方式增加算法的语义能力,但那些方法大多数都属于有监督学习,非常依赖大量注释数据,但数据的人工标注非常昂贵,因此在某种程度上阻碍了这些方法的适用性。
目前,一些基于自监督对比学习的方法取得了可观的成就,这些方法大多遵循pre-training and fine-tuning范式,但这种方法在STR领域比较少见。
主要贡献:
- 提出了一种新的分层自监督学习方法PreSec,可以同时从笔画和语义上下文中学习鲁棒表示
- 设计了一种新颖的上下文感知模块,该模块配备了可学习量化器和上下文聚合器,可以有效地将每个元素与其上下文区分开来,该模块是可插拔的。
- 实验表明该方法在无监督和半监督学习环境下都能达到SOTA性能。
- 提出了一个无标签的大型真实场景数据集UIT-100M,可以极大提高PerSec的性能。
Method
Architecture Overview
STR 任务通常会使用编码器-解码器作为pipeline。
将搭载了笔画-语义上下文感知器的Encoder用PerSec方法进行预训练,通过多层对比学习来学习鲁棒的文本图像表征,为了进行STR任务,为预训练好的Encoder加上Decoder,Decoder可以基于CTC也可以基于注意力,最后根据标记好的数据对pipeline进行微调。
Base Encoder
文本使用了两种编码器:CNN-based Encoder和ViT-based Encoder。
其结构如图:
Context Perceiver
为了学习鲁棒的分层文本表征,本文设计了Context Perceiver(CP)模块。
该方法将低级笔画编码器和高级的语义编码器的输出特征送入CP模块,该模块能将输入特征的每个元素与其上下文区分开来,也就是说,对比操作进发生在同一样本的特征元素内。
如图3,CP模块具有双分支结构,包括Context Aggregator(粉色部分)和Quantizer(蓝色部分)。
Context Aggregator
输入的特征 F ∈ R w × h × d F\in \mathbb{R}^{w\times h \times d} F∈Rw×h×d首先通过一个掩码语言模型进行掩码处理得到掩码特征 F ′ ∈ R w × h × d F'\in \mathbb{R}^{w \times h\times d} F′∈Rw×h×d,再将该掩码特征经过位置编码送入N个含有W-MHSA和FFN的模块中,考虑到Context Aggregator需要协调来自低级特征图和高级特征序列的聚合,所以位置编码采用了2-D位置编码。得到的特征 F ^ \hat{F} F^可表示为:
F ^ = F ∗ σ ( D W C o n v ( F ) ) \hat{F}=F*\sigma(DWConv(F)) F^=F∗σ(DWConv(F))
其中 σ \sigma σ表示sigmoid函数, D W C o n v ( ⋅ ) DWConv(·) DWConv(⋅)是一个3*3的深度卷积。
由于想要得到的场景文本图像的slow Feature通常包含在局部上下文中,且在低级笔画特征空间内,slow Feature代表笔画模式(如汉语的偏旁),而在高级语义特征空间中,slow Feature表示语义信息。为了更好地从局部上下文中捕获slow Feature,本文设计了W-MHAS:
W − M H S A ( Q , K , V ) = s o f t m a x ( Q K T d + M w i n ) V T = w ⋅ h 1 ≤ w ≤ T W-MHSA(Q,K,V)=softmax(\frac{QK^T}{\sqrt{d}}+M_{win})V \\ T=w·h \;\;\; 1 \leq w\leq T W−MHSA(Q,K,V)=softmax(dQKT+Mwin)VT=w⋅h1≤w≤T
最后生成标签C.
Quantizer
Quantizer的任务是生成伪标签 P ∈ R T × d P\in \mathbb{R}^{T\times d} P∈RT×d。(这里原文写得有点抽象,可能是想读者去看那几篇它引用的论文,这里只简单说一下这个是干啥的。)
然后在Context Aggregator生成的上下文聚合特征C和Quantizer生成的伪标签P上做对比学习。
Pre-training Strategy
掩码技巧
掩码的大小为 m l o w × m l o w , 1 ≤ m l o w ≤ h m_{low}\times m_{low},1\leq m_{low}\leq h mlow×mlow,1≤mlow≤h, h h h时特征图的高度。一个特征图上可能存在多个掩码,其数量与特征图大小 w ⋅ h w·h w⋅h成一定比例。对于T时间步长的高级特征序列,本文将掩码设置为 m h i g h m_{high} mhigh的连续时间步长, 1 ≤ m h i g h ≤ T 1\leq m_{high} \leq T 1≤mhigh≤T,掩码的个数为 p h i g h ⋅ T p_{high}·T phigh⋅T。如果特征元素被掩码,它们将被替换为一个可训练的特征向量,由所有掩码元素共享,并且确保每个蒙版不重叠。
Loss Function
损失函数包括对比损失( L s t r o k e c o n , L s e m a n t i c c o n L_{stroke}^{con},L_{semantic}^{con} Lstrokecon,Lsemanticcon)和多样性损失( L s e m a n t i c d i v , L s e m a n t i c d i v L_{semantic}^{div},L_{semantic}^{div} Lsemanticdiv,Lsemanticdiv)两部分。
L = L s t r o k e c o n + α L s t r o k e d i v ⏞ s t r o k e − l e v e l + L s e m a n t i c c o n + β L s e m a n t i c d i v ⏟ s e m a n t i c − l e v e l L=\overbrace{L_{stroke}^{con}+\alpha L_{stroke}^{div}}^{stroke-level}+\underbrace{L_{semantic}^{con}+\beta L_{semantic}^{div}}_{semantic-level} L=Lstrokecon+αLstrokediv stroke−level+semantic−level Lsemanticcon+βLsemanticdiv
对比损失可表示为:
L ∼ ( c o n ) ( i ) = − log exp ( s i m ( c i , p i ) / τ ) ∑ k ∈ I m a s k exp ( s i m ( c i , p i ) / τ ) L_{\sim}^{(con)}(i)=-\log{\frac{\exp(sim(c_i,p_i)/\tau)}{\sum_{k\in I_{mask}}\exp(sim(c_i,p_i)/\tau)}} L∼(con)(i)=−log∑k∈Imaskexp(sim(ci,pi)/τ)exp(sim(ci,pi)/τ)
其中 c i , p i c_i,p_i ci,pi分别为上下文聚合特征C和伪标签P的第i个掩码元素,它们共同构成正样本对, p k p_k pk表示报刊正样本和负样本的其他掩码元素的第k个元素, I m a s k I_{mask} Imask为所有掩码元素的索引, s i m sim sim是余弦相似度, s i m ( a , b ) = a T b ∥ a ∥ ∥ b ∥ sim(a,b)=\frac{a^Tb}{\|a\|\|b\|} sim(a,b)=∥a∥∥b∥aTb。
多样性损失可表示为:
L ∼ d i v = 1 G V ∑ g = 1 G ∑ v = 1 V p g , v log p g , v . L_{\sim}^{div}=\frac{1}{GV} \sum_{g=1}^{G} \sum_{v=1}^{V}p_g,v\log p_g,v. L∼div=GV1g=1∑Gv=1∑Vpg,vlogpg,v.
A New Dataset:UTI-100M
实验结果
截取其中一部分。
提场景文本特征的方法值得学习。
这篇关于【论文阅读】Perceiving Stroke-Semantic Context: Hierarchical Contrastive Learning for Robust Scene Text Re的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!