论文题目:Learning Shape-Aware Embedding for Scene Text Detection
香港中文大学和腾讯优图共同发表在2019CVPR
论文地址:jiaya.me/papers/textdetection_cvpr19.pdf
首先,给定输入图像,从ResNet50的中间层提取特征;接下来,有两个特征合并模块(镜像对称的FPN),在每个特征合并模块中,使用类似于 PANet 中的自适应特征池的特征合并策略通过上采样和像素相加的方式去结合从不同层提取的特征。这两个分离的特征合并模块通过共享权重形成了一组独立但互补的分支。一个分支产生嵌入映射(Embedding Map),在每个像素处有8通道嵌入特征用于区分文本实例,另一个分支生成用于分割的两个文本前景掩模(Center Map 和 Full Map)。最后,对嵌入特征和两个文本前景掩模进行处理获得最终预测的文本框。
为什么要使用嵌入形状感知?
嵌入分支接收来自一个特征合并模块的特征,以及由 x 和 y 坐标表示的另外的2通道位置信息。 我们将特征合并模块的特征与位置信息相结合,并将它们分别传递给三个连续的3×3卷积层,分别具有32,16和8个输出通道。 最终输出是每个像素的8通道嵌入特征。
损失函数(SA Loss)
方差损失和距离损失(应该可以说是类内间距和类外间距):
L v a r ( I j ) = 1 N j ∑ i = 1 N j m a x ( W S c a l e ( j ) ∗ ∣ μ j − x i ∣ − η , 0 ) L_{var}(I_j) = \frac{1}{N_j}\sum_{i=1}^{N_j}max(W_{Scale_{(j)}} * |\mu_j - x_i| - \eta, 0) Lvar(Ij)=Nj1i=1∑Njmax(WScale(j)∗∣μj−xi∣−η,0)
L d i s t ( I j , I k ) = m a x ( γ − W D i s t ( j , k ) ∗ ∣ μ j − μ k ∣ , 0 ) L_{dist}(I_j, I_k) = max(\gamma - W_{Dist_(j, k)} * |\mu_j - \mu_k|, 0) Ldist(Ij,Ik)=max(γ−WDist(j,k)∗∣μj−μk∣,0)
μ j \mu_j μj 和 μ k \mu_k μk 分别是文本实例 I j I_j Ij 和 I k I_k Ik 的平均嵌入。 x i x_i xi 是像素 i i i 的嵌入特征, N j N_j Nj 是在 I j I_j Ij 中的像素的数量。 η \eta η 和 γ \gamma γ 代表方差损失和距离损失的边际,分别为 0.5 0.5 0.5 和 1.5 1.5 1.5 。
其中 W S c a l e ( j ) W_{Scale_{(j)}} WScale(j) 和 W D i s t ( j , k ) W_{Dist_{(j, k)}} WDist(j,k) 是平衡权重,为了适应各种文字形状和邻接。
W S c a l e ( j ) = e m a x s i d e ( j ) 2 m a x ( h , w ) W_{Scale{(j)}} = e^{\frac{max_{side(j)}}{2max(h,w)}} WScale(j)=e2max(h,w)maxside(j)
W D i s t ( j , k ) = ( 1 − 20 e − m i n ( D i s t a n c e j , k ) m a x ( h , w ) ∗ 10 ) W_{Dist_{(j,k)}} = (1 - 20e^{-\frac{min(Distance_{j,k})}{max(h,w)} * 10}) WDist(j,k)=(1−20e−max(h,w)min(Distancej,k)∗10)
m a x ( h , w ) max(h,w) max(h,w) 是输入图像的较长边。 m a x s i d e ( j ) max_{side(j)} maxside(j) 对于四边形文本是长边的长度,对于弯曲文本(带有多边形注释)是多边形顶点之间的最长距离。 m i n ( D i s t a n c e j , k ) min(Distance_{j,k}) min(Distancej,k) 是文本实例 I j I_j Ij 和 I k I_k Ik 之间的最短距离。其中 W S a c l e ( j ) ∈ ( 1 , 1.65 ) W_{Sacle_{(j)}} \in (1, 1.65) WSacle(j)∈(1,1.65), W D i s t ( j , k ) W_{Dist_{(j,k)}} WDist(j,k) 的范围大致在 ( 0.63 , 1 ) (0.63, 1) (0.63,1) 之间, W D i s t ( j , k ) W_{Dist_{(j,k)}} WDist(j,k) 的缩放比例和 W S c a l e ( j ) W_{Scale_{(j)}} WScale(j) 相当以平衡他们对梯度的影响。
W S c a l e ( j ) W_{Scale_{(j)}} WScale(j) 与文本实例 I j I_j Ij 的尺度成比例,大的 W S c a l e ( j ) W_{Scale_{(j)}} WScale(j) 使得 L v a r ( I j ) L_{var}(I_j) Lvar(Ij) 变得重要,这会带来强大的力量把像素之间的距离拉近(pulling),以至于有较小的 L v a r ( I j ) L_{var}(I_j) Lvar(Ij)。 W D i s t ( j , k ) W_{Dist_{(j, k)}} WDist(j,k) 与文本实例 I j I_j Ij 和 I k I_k Ik 中最短的距离成比例,这会有额外的力量把两个离得近的文本实例给推开(pushing),距离变远。与 W S c a l e ( j ) W_{Scale_{(j)}} WScale(j) 相反,一个小的 W D i s t ( j , k ) W_{Dist_{(j, k)}} WDist(j,k) (在 I j I_j Ij 和 I k I_k Ik 之间的短距离)会让 L D i s t ( I j , I k ) L_{Dist}(I_j, I_k) LDist(Ij,Ik) 变大。
一张图像有 N N N 个文本实例的话,最终的 SA Loss 可以写成:
L S A = 1 N ∑ j = 1 N L v a r ( I j ) + 1 N ( N − 1 ) ∑ j = 1 N ∑ k = 1 , k ≠ j N L d i s t ( I j , I k ) L_{SA} = \frac{1}{N}\sum_{j=1}^N L_{var}(I_j) + \frac{1}{N(N-1)}\sum_{j=1}^N\sum_{k=1,k\neq j}^N L_{dist}(I_j, I_k) LSA=N1j=1∑NLvar(Ij)+N(N−1)1j=1∑Nk=1,k=j∑NLdist(Ij,Ik)
SA Loss包含两个权重,它们根据尺度和邻接调节拉和推的力量。利用这两个权重,即使两个很近的文本实例(只有一两个像素的距离),聚集大的长的文本实例和分割比较近的文本实例也变得更加容易了。
分割分支通过对先前模块生成的特征使用两个单独的 3x3 卷积运算,生成两个一维通道的分割图:Full Map和Center Map。尽管两个分割图都表明像素是属于背景还是文本,但他们用于不同的目的。Full Map显示文本的整体位置和分布,Center Map仅捕获每个文本的中线区域,允许分离空间上紧密的文本实例,并为稍后的像素聚类提供合理的起点。
损失函数:
Full Map 和 Center Map都是通过最小化 Dice Loss来训练的:
L D = 1 − D ( P , Q ) L_D = 1 - D(P, Q) LD=1−D(P,Q)
其中, P P P 和 Q Q Q 分别代表预测(Prediction)和真值(Ground Truth), D ( , ) D(,) D(,) 是 Dice 系数,表示为:
D ( P , Q ) = 2 ∗ ∑ x , y P x , y Q x , y ∑ x , y P x , y 2 + ∑ x , y Q x , y 2 D(P, Q) = \frac{2 * \sum_{x, y}P_{x,y}Q_{x,y}}{\sum_{x,y}P_{x,y}^2 + \sum_{x,y}Q_{x,y}^2} D(P,Q)=∑x,yPx,y2+∑x,yQx,y22∗∑x,yPx,yQx,y
最终损失是两个map的加权组合, λ ∈ ( 0 , 1 ) \lambda \in (0,1) λ∈(0,1):
L S e q = λ L C e n t e r M a p + ( 1 − λ ) L F u l l M a p L_{Seq} = \lambda L_{CenterMap} + (1-\lambda)L_{FullMap} LSeq=λLCenterMap+(1−λ)LFullMap
在论文中设置 λ = 0.5 \lambda = 0.5 λ=0.5 ,给两个map相同的权重。注意,Center Map 的文本实例是从Full Map的文本实例中按比例 γ \gamma γ 缩小而来的,一般 γ = 0.7 \gamma = 0.7 γ=0.7 ,这和 EAST 是相同的。在Full Map中的文本实例不通过缩小去减少搜索空间,确保在有效的文本区域内执行后续聚类。
L = L S A + L S e g L = L_{SA} + L_{Seg} L=LSA+LSeg
首先使用DBSCAN来获得两组聚类(来自Full Map的 C F i C_{F_i} CFi和来自Center Map的 C C i = ∪ j c i j C_{C_i} = \cup_j c_{ij} CCi=∪jcij)。然后通过以下逻辑将 C F i C_{F_i} CFi 内部和 C C i C_{C_i} CCi 外部的每个像素分配给最近的集群 c i j ∈ C C i c_{ij} \in C_{C_i} cij∈CCi。将分配给了 c i j c_{ij} cij 的像素表示为 p c i j p_{c_{ij}} pcij,如果这个像素和一个集群 c i j ∈ C C i c_{ij} \in C_{C_i} cij∈CCi 的最小嵌入距离比阈值 σ \sigma σ 还要小,则这个像素被分配到最近的集群 c i j c_{ij} cij 作为 p c i j p_{c_{ij}} pcij 的一部分;否则这个像素就被忽视了(就是基于像素嵌入和属于Center Map的每个集群 c i j c_{ij} cij 的像素的平均嵌入之间的距离来分配每个像素( c i j ∈ C C i ∈ C F i c_{ij} \in C_{C_i} \in C_{F_i} cij∈CCi∈CFi))。在处理完集群 C F i C_{F_i} CFi 中的所有像素之后,一个新的集群 c i j ′ = c i j ∪ p c i j c_{ij}' = c_{ij} \cup p_{c_{ij}} cij′=cij∪pcij 就形成了。对其他的中心集群 c i j c_{i j} cij 不断的循环这个操作直到处理完所有的中心集群。
最后,对于每个新集群 c i j ′ c_{ij}' cij′,生成相应的最小边界框作为输出。
主干网络 ResNet50(在ImageNet上预训练),对于每一个分支,在ResNet50的四个特征图(Max Pooling后)上使用四个具有128个输出通道 inception 模块。
使用数据增强。首先随机的将输入图像的长边缩放到 640 到 2560 之间,然后随机旋转,颠倒和翻转,最后从旋转后的图像中随机剪切 640 × 640 640 × 640 640×640 的区域作为训练图像。包括 BN(Batch Normalization)和 OHEM(正样本和负样本比例为 1 : 3 1:3 1:3)。全部的模块都在数据集 SynthText 上使用初始学习率 1 e − 4 1e-4 1e−4 做预训练。
有5个超参数。用来测量 Embedding Map 上的嵌入距离的阈值 σ \sigma σ 和 τ \tau τ, 并在后处理中分别从分割图像中获取确定的像素。用于NMS的 I o U IoU IoU 阈值 δ \delta δ 和用于DBSCAN的 e p s eps eps 和 M i n S a m p l e s MinSamples MinSamples。论文中, σ = 1.0 , τ = 0.7 , δ = 0.5 \sigma = 1.0, \tau = 0.7, \delta = 0.5 σ=1.0,τ=0.7,δ=0.5,并且 ( e p s , M i n S a m p l e s ) (eps, MinSamples) (eps,MinSamples)在Full Map上聚类时是 ( 5 , 8 ) (5,8) (5,8),在Center Map上聚类时是 ( 1 , 3 ) (1,3) (1,3)。
接下来论文比较了论文方法和其他的文本检测方法;Shape-Aware Loss的优点(与Dice Loss比较);为什么不直接在嵌入空间中使用聚类;网络设计的优点(Full Map和Center Map的重要性以及双分支网络的优点)等等。