seg link 文字检测

通过局部信息寻找小片片(segment)和小片片之间的连接(link)来进行文字检测。每个 seg 是文字的一部分,link 是虚构出来的 seg 和 seg 中点间的连线,能兼容各种形状和方向的文字框。基础网络和 ssd 很相似,seg 和 link 都是利用 conv 当作预测器预测得到。

seg 部分的检测

seg 的检测和 ssd 检测很像,基于密集采样,多层采样以适配多种尺度。卷积预测期产生7维的输出,其中2维是经过 softmax 归一化后seg的得分。其余5维预测的是 feature map 上的 default box (正方形像素点)和 ground truth 之间的偏移,分别是 x,y,w,h,o

  • x和y是和default box中点和 ground turth 的偏移
  • w和h是宽高
  • o代表偏转角度

因为预测的是偏移量,所以还需要一个转换才对应到实际坐标

  • xd=w原/w特·(xs+0.5)
  • yd=h原/h特·(hs+0.5)
  • x’=a·x+xd
  • y’=a·y+yd
  • w’=a·exp(w)
  • h’=a·exp)(h)
  • o’=o
  • a=1.5·w原/w特

其中xd,yd是原图像素坐标,xs,ys是特征图上的像素坐标。前两个公式表明 default box 的中点到原图坐标的映射关系。a是设置的 default box 的边长。每一层 feature map 因为下采样带来的视野,所以 a 的基数是 w原/w特,系数1.5是为了提高召回率设置的 over lap。x’, y’, w’, h’ 相关的四个公式表示预测值和原图坐标的映射关系。x’, y’, w’, h’ 也可以理解成训练中的 ground truth。
因为a的存在,巧妙的将所有依赖特征图尺寸的值都转化到原图,相当于找到了共同的尺度。用 default box 和尺度归一化,是目标检测系列常见的技巧。

link部分的检测

link 有两类,一类是同层 link,一类是跨层 link。
对于同层 link 其定义在同一层相邻位置 seg 之间,因为井字格的 seg 分布形状,所以一个 seg 同层相邻8个 seg,也即是有8个 link。每个 link 输出2个维度的 softmax 的得分。
对于跨层 link 其定义在当层和上一层 feature map 上。因为每个 seg 预测的范围存在overlap,以便能够提高召回,但是这样的结果是,对于同一个词,不同层级的 feature map 都能检测到 seg,这回产生很多冗余。跨层 link 是为了解决这个问题。除了第一层意外,每一层都会输出跨层 link。因为相邻两层 feature map 的尺度相差2倍,所以同层和上一层的相邻 link 位置关系为 1:4,也即是当前层会和4个上一层 seg 相邻。对于这4个 link,每个也输出2维的 softmax 得分。

整体看来一个预测器输出的结果有 2+5+16(+8) 维

  • 最前面的 2 维是这个 seg 是正负样本的 softmax 得分
  • 中间的 5 维是 seg 预测的坐标及角度信息
  • 中间的 16 维是同层链接的 softmax 得分
  • 最后的 8 维除了第一层预测器的其他预测器才有,表示跨层的 softmax 得分

seg 和 link 的拼接结合

todo 待补充

标注数据生成 ground truth

对于图片上的文字,原始标注有整个文字的 bbox。为了生成训练需要的 seg,会用 default box 的边长a和文字的 bbox 的高h去做比值,满足条件的才作为有效标注

max(a/h, h/a)<=1.5

如果某个 default box 对原图上任意文字 bbox 都不满足上述标准,那么这个这个 default box 无效,否则这个 default box 有效。如果一个 default box 有多个满足的 bbox,它将和 min{max(a/h, h/a)} 的 bbox 关联。最小的的含义是这个 default box 和这个文字 bbox 的尺寸最接近。
对于有效的 default box,需要计算它和关联的 bbox 之间的 offset,找出 default box 负责预测的 seg,然后计算这个 seg 的 x’, y’, w’, h’ 。
// 会有一些旋转需要配图解释更清楚,todo 待补充
link 生成规则:

  1. 一个 link 两端的 default box 都是有效的
  2. 两个 default box 关联了同一个词

训练优化

模型需要同时训练有三个部分:

  • seg 正负分类
  • seg 偏移回归
  • link 正负分类

所以损失函数也为三个部分的 loss 之和:

L_total = 1/N_s·L_conf(y_s, c_s) + 1/N_l·L_conf(y_l, c_l)  + 1/N_s·L_loc(s', s)

L_conf 是 soft-max loss,用来计算两个分类部分的损失;L_loc 是 smooth L1 loss,用来计算回归部分的损失。同时各个部分的损失被当前激活数量做归一。
在训练样本的选择上,使用了 OHNM(online hard negative ming) 算法,保证正负样本的比例以及挑选难负样本。原文中并没有细说OHNM的过程,通过查看其他的文章,理解这个过程可能是在计算损失之前,按照 L_conf(y_s, c_s) 从大到小排序,挑选误差最大的正负样本,保持正负样本1:3 的比例。在这些样本上计算 L_total。
使用的是标准 SGD 优化器,momentum 为0.9。图片会缩放到 384x384。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值