Deep Relational Reasoning Graph Network for Arbitrary Shape Text Detection
一,Overview
二,文本组件预测:
①首先每个文本组件D与一组几何属性相关联,即D=(x, y, h, w, cosθ, sinθ),其中x和y表示文本框的坐标轴,w和h表示文本组件的高度和宽度。 cosθ和sinθ表示的是文本组件的方向。如图所示:
②文本中心区域(TCR):通过缩小文本区域获得(TR),首先,计算文本中心线,然后,缩小文本中心线两端0.5w像素点,使得网络能够容易地分离相邻的文本实例和减少nms(非极大值抑制)的计算。 最后扩大中心线0.3h。
③在提取共享特征后,应用两个卷积层预测文本组件的属性为:
CR = conv1x1(conv3x3(F share))
在这里 CR∈R hxwx8 其中 四个通道是TR/TCR分类逻辑(Classification logits)四个通道是 h1 ,h2,cosθ, sinθ的回归逻辑(regression logits)
Architecture of shared convolutions(使用的是VGG-16+FPN 骨架)
④检测损失(detection loss):文本组件预测损失由两个部分组成,分别是回归损失(regression loss) 和 分类损失(classification loss)可以被计算为:
其中分类损失又可以被计算为:
这里 Ltr 表示的是文本区域损失,Ltcrp 只计算文本区域内的像素点,Ltcrn 计算文本区域外的像素点。Ltcrn 被用来抑制文本中心区域背景噪声。在本文的实验中,权重λ1 和λ2被各自设置为1.0 和0.5.
由于non-TCR region 没有高度和宽度属性, 我们只计算TCR region 的回归损失:
hki sinθ 和 cosθ 是 ground-truth value
hki_ sinθ _ 和cosθ_是predicted value
Ω 表示在TCR中正样本的数据集
h是文本组件的真实高度
超参数β 被设置为1
三,生成局部图
①通过修改《Linkage Based Face Clustering via Graph Convolution Network》 中 IPS(Instance Pivot Subgraphs) 来产生局部图,本文中使用 中轴节点的两跳作为局部图的节点。中轴节点的一跳由最近的8个节点组成,二跳由最近的4个节点组成。
考虑把节点之间的欧式相似性Es来执行knn操作。
D(p, vi) 是节点p和vi 之间的L2距离
Hm,Wm 分别为图像的高度和宽度
similarity_e = np.array(EuclideanDistances(ctr_xy, ctr_xy), dtype=np.float) / img_size
knn_graph = np.argsort(similarity_matrix, axis=1)[:, :]
为了避免在训练中由许多相同的图引起的简单样本梯度积累:
Gp 和Gq 是两个局部图,中轴节点p和q都是同一个文本实例中,Gp ∩ Gq 是中轴节点一跳的交集,Gp ∪Gp 是中轴节点一跳的并集。在实验中,我们设置ζ为0.75
②节点特征提取:由两个部分组成,第一个部分是 RROI特征** 。 第二个部分是几何特征。
RROI特征提取的过程:我们结合feature maps Fn 把文本组件输入到RRoI-Align 层,然后获得一个1x3x4xCr 特征块。
RROI-Align层,结合了ROI-Align 和 RROI的优点来提取输入文本组件的特征块
文本组件几何特征的提取过程:文本的几何属性通过在《Attention is all you need》和《learning region features for object detection》两篇论文中的方 法被嵌入到高维空间中。嵌入是通过将不同波长的正弦和余弦函数应用于标量z来实现的。
pos_feat = self.PositionalEncoding(geo_map, self.pst_dim)
pos_feat = torch.from_numpy(pos_feat).cuda().float() # shape=(600,120)
roi_feat = self.NodePooling(feats[bind].unsqueeze(0), roi_map)
roi_feat = roi_feat.view(roi_feat.shape[0], -1) #shape=(600,480)
node_feat = torch.cat((roi_feat, pos_feat), dim=-1) #shape=(600.600)
③节点特征归一化:
通过减去中轴节点的特征来归一化节点的特征,它将中轴节点信息编码到局部图的特征中,使得关系推理网络易于学习中轴节点与其邻居节点之间的连接关系。
feat = feat_map[torch.tensor(ips, dtype=torch.long)] - center_feat
④邻接矩阵的产生:
for node in ips:
neighbors = knn_graph[node, 1:self.active_connection + 1]
for n in neighbors:
if n in ips:
A[unique_nodes_map[node], unique_nodes_map[n]] = 1
A[unique_nodes_map[n], unique_nodes_map[node]] = 1
⑤Graph Convolution:
四,推理阶段:
在训练中我们只对一跳邻居节点进行后向传播,因为我们只关心中轴节点和一跳邻居节点链接,对于测试,我们只对一跳节点进行分类。
① 根据关系推理结果,对文本组件分组
②首先将阈值分别应用于TR和TCR,然后使用NMS减少冗余
③遍历所有文本组件,以每个组件为中心构造一个局部图,因此获得了由链接可能性加权的一组边
④使用宽度优先搜索BFS对链接进行聚类和合并
⑤应用MinPath算法搜索所有文本组件中心的最短路径,然后通过搜索结果对实例T的各个组件进行排序
⑥顺序地在有序文本组件中链接顶部和底部的中点,即可得到文本边界
五,conclusion
本文提出新的基于组件连接(CC)策略的文本检测方法。提出了基于图卷积的深度关系推理网络,来学习文本组件之间的链接可能性。并且利用该信息指导后处理,将组件正确的连接到文本实例中。