PixelLink

PixelLink 使用实例分割(Instance Segmentation)来实现文本检测,首先分割出文本区域,然后直接找出文本框,完全摒弃位置回归(Location Regression)的思想。

Architecture

PixelLink 进行两种像素级别的预测:text/non-text 和 link 预测。标注时,在文本实例内部像素标为 positive,其余的标为 negative。Link 启发于 SegLink,但有所不同,每个像素点有 8 个邻居。给定一个像素点以及它的一个邻居点,如果它们同属于一个文本实例,则它们之间的 link 为 positive。

Figure 1. Structure of PixelLink+VGG16 2s

PixelLink 将 VGG-16 结构作为基础网络,将后两层全连接转化为卷积,然后仿照类似 FPN 的结构,融合多层语义信息,最后得到原图二分之一大小的特征图。对于 link 的输出 feature map,其排列的顺序为:top-left,top,top-rignt,left,right,bottom-left,bottom,bottom-right。总的输出维度为 18 。

最后得到 pixels 和 links,然后根据link positive 将pixel positive 进行连接,得到 Cs(conected compoents)集合,集合中的每个元素代表的就是文本实例。两个 pixel 需要连接的前提条件:two link中至少有一个link positive.连接的规则采用的是 Disjoint set data structure (并查集)的方法。

基于上述 CCs 集合,直接掉调用 opencv 的 minAreaRect 提取带方向信息的矩形框。在此之后,还要根据在训练集上统计的信息,进行过滤,去掉噪声。

Loss

由于文本行的长宽比变化范围广泛,若在计算loss的时候,对所有的 pixel positive 给予相同的权重,这对小面积的文本行是非常不公平的,针对上述问题,论文中提出了Instance-Balanced Cross-Entropy Loss。

My Thoughts

  • 与CTPN,EAST,SegLink相比,PixelLink 对感受野的要求更少,因为每个神经元值只负责预测自己及其邻域内的状态。但是,会不会由于缺乏上下文信息,导致出现假阳性?
  • PixelLink 不需要用 imagenet 数据集训练的权重进行初始化。
  • 与 SegLink 一样,不能检测很大的文本,这是因为link主要是用于连接相邻的segments,而不能用于检测相距较远的文本行。
  • 后处理部分,严重依赖对数据集统计信息,对实验效果影响占比很大。

References

  • [1] [2018-AAAI] PixelLink: Detecting Scene Text via Instance Segmentation paper code
请作者吃酒!