CTPN 算法详解_面试版

作者: LCG22 | 来源:发表于2021-03-03 17:12 被阅读0次

    参考链接:https://blog.csdn.net/bestrivern/article/details/100889632

    1、CTPN 是什么

    CTPN 全称是 connection text proposal network,是连接文本区域网络,用于进行横向文本检测。它通过将一系列小的文本框判断是不是标注的文本框的一部分,然后将是同一个标注文本框的小文本框连接成一个文本框区域,称为候选区域。重复上述操作,直到每个标注文本框的候选区域都生成完毕,最后对每个候选区域的大小进行微调。

    2、CTPN 的网络结构

    3、简述 CTPN 的步骤

    ① 使用 VGG16 的卷积阶段的网络层作为骨干网络,然后将图片输入 VGG16 网络中进行特征提取,生成特征图

    ② 在 ① 中输出的特征图中滑动进行 3*3 卷积,然后进行 im2col 操作,然后每次滑动都得到一个 3*3*通道数的特征向量,最后生成一个新的特征图,然后输入 BiLSTM 中进行序列特征提取,再传入全连接层中进一步提取特征

    ③ 在 ② 的全连接层后接 3 个全连接层分支,分别预测垂直坐标回归、分类得分、水平平移量回归

    ④ 将 ③ 中的预测垂直坐标回归和分类得分结果输入 RPN 中,而 RPN 的具体步骤如下:

    a、

    4、CTPN 的优点

    ① 将骨干网络生成的特征图输入后续网络,而不是将原图输入后续网络,减少了后续网络的计算量

    ② 引入了 BiLSTM 网络层,使得在进行文本检测时,网络能够利用到文本的语义信息

    ③ 增加了新的边界得分的预测分支,使得在预测文本框的边界时的效果更好,提高了网络的检测效果

    ④ 将 RPN 层后置到最后,可以使得 RPN 能够获得更丰富、更高级的特征输入,从而能够产生更好的结果

    5、CTPN 的缺点

    ① 引入了 BiLSTM 网络层,相比于 CNN 可以并行化,BiLSTM 无法进行并行化,因此降低了网络的运行效率,增加了网络的运行时间

    ② 引入了 BiLSTM 网络层,可能会导致网络发生梯度消失或者梯度爆炸

    ③ 增加了新的边界得分预测分支,增加了标注成本

    ④ 只能用于水平方向的文本检测,垂直方向上会出现字与字的断开。如果存在倾斜,需要修改 anchor 的连接方式

    ⑤ anchor 的合并和断开是一个问题。程序使用的是水平 50 个像素内合并,垂直 IoU>0.7 合并。或许由于 BiLSTM 的引入,导致断开这个环节变差。所以对于双栏,三栏的这种文本,ctpn 会都当做一个框处理,有时也会分开处理,总之不像 EAST 效果好。

    6、CTPN 可以改进的点

    7、CTPN 的损失函数

    L(S_{i}, V_{j}, O_{k}) = L_{1} + L_{2} + L_{3}

    分类得分损失:L_{1} = \frac{1}{N_{s}}*L_{s}(S_{i}, S^{*}_{i}),具体损失函数为交叉熵损失

    边框回归损失:L_{2} =\frac{\lambda_{1}}{N_{v}}*L_{v}(V_{j}, V^*_{j}),具体损失函数为 Smooth_L1

    边界框得分损失: L_{3} = \frac{\lambda_{2}}{N_{o}} * L_{o}(O_{k}, O^{*}_{k}),具体损失函数为 Smooth_L1

    假设所有的 anchor 的集合为 A,则 i 表示集合 A 中的第 i 个 anchor,而 S_{i} 则表示第 i 个 anchor 的分类得分,分别为 0 和 1,0 表示是非文本框,而 1 表示是文本框。而 N_{s} 表示归一化因子,是 A 中的 anchor 个数之和。

    假设 A 中的 anchor 跟 GroundTruth 的 IoU 大于 0.5 的 anchor 集合为 B,则 j 表示 B 中的第 j 个 anchor,V_{j} 表示的是边框回归值。而 L_{v} 使用的是 Smooth_L1 进行计算损失。N_{v} 是归一化因子,是 B 中的 anchor 个数之和。\lambda_1 是多任务平衡系数,一般取值为 1.

    假设边界 anchor 的集合为 C,则 o 表示 C 中的第 o 个 anchor ,则 O_{k} 表示 C 中的第 k 个 anchor 的得分,而 L_{o} 使用 Smooth_L1 进行计算损失。N_{o} 表示归一化因子,而 \lambda_{2} 是多任务平衡系数,一般取值为 2.

    8、Smooth_L1 损失函数

    假设输入为 x ,则

    当 |x| < 1 时,输出 0.5x^{2}

    其他情况,输出 |x| - 0.5

    优点:

    当 |x| < 1 时, Smooth_L1 的梯度为 x,所以即使 x 的值很小,也能有梯度;

    而当 |x| ≥ 1 时,Smooth_L1 的梯度为 ±1,此时不易发生梯度爆炸。

    且 Smooth_L1 对离群点和异常值不敏感

    9、边框偏移计算公式

    假设 anchor 的中心坐标为 y_a 和高度 h_a,而预测的中心坐标为 y_p 和高度 h_p,真实值的中心坐标为 y_t 和高度 h_t,则计算公式为:

    s_p = (y_p - y_a) / h_a

    s_t = (y_t - y_a) / h_a

    h_pa = log(h_p / h_a)

    h_ta = log(h_t / h_a)

    注:y_p 和 h_p 

    相关文章

      网友评论

        本文标题:CTPN 算法详解_面试版

        本文链接:https://www.haomeiwen.com/subject/kxkqqltx.html