文本检测之-craft检测算法

论文名称:
Character Region Awareness for Text Detection
开源代码:
https://github.com/clovaai/CRAFT-pytorch

论文核心思想:
本论文为2019年韩国学者提出的一种字符级的文本检测算法, 取得了不错的检测效果.
craft文本检测的主要思想:

  1. 图像分割的思想, 采用u-net结构, 先下采样再上采样,
  2. 非像素级分割, 而是将一个character视为一个检测目标对象,而不是一个word(所有的word都由character构成),即不把文本框当做目标。这点有点类似ctpn, 先检测很小的bbox, 再利用bbox之间的关系进行concat. 这样的好处是***只需要关注字符级别的内容而不需要关注整个文本实例, 从而使用小感受野也能预测长文本***. ctpn检测算法也是对于长文本的检测效果会比较好. 与之相对应的就是east检测算法, 受限于感受野, 所以长文本的两端往往检测不准确.
  3. 对于公开数据集大部分都是文本框级别的标注, 而非字符级别的标注, 本文提出了一种弱监督学习思路, 先利用合成样本进行预训练, 再将预训练模型对真实数据集进行检测, 得到预测结果, 经过处理后得到高斯热度图作为真实数据集的字符级标签.

整体网络结构
文本检测之-craft检测算法
网络采用VGG-16的backbone进行下采样, 总共进行了5次下采样, 所以在预测阶段的输入图片的预处理上, 会将输入图片的长和宽padding到距离长和宽的值最近的32的倍数. 比如输入图片为500x400, 则会将图片padding到512x416, 可以有效的避免分割中的像素漂移现象. 利用Unet的思想, 对下采样的特征图再进行上采样和特征图concat操作, 最终得到原图大小1/2的2个通道特征图:region score mapaffinity score map,分别为单字符中心区域的概率和相邻字符区域中心的概率.

训练数据处理
训练数据的标签生成:
标准的像素级图像分割: 以二值化的方式离散标记每个像素的label.背景对应的mask标签为0, 前景对应的mask标签为1, 如果是多类目标, 就1,2,3,…
本文craft算法标签处理: 采用高斯热度图来生成region score和affinity score.采用高斯热度图的好处:它能很好地处理没有严格包围的边界区域.

待续.