• PAN++学习笔记


    1 主要创新点

    • 文本检测和识别两个任务结合起来,作为互补,提高检测和识别精度;
    • 处理不规则形状的文本;
    • 提供一个高效的端到端框架PAN++,对实时的应用场景友好。

    2 已有工作的痛点

    • 将文本检测和识别任务分开,不利于利用两个任务的互补性,也会增加计算开销;
    • 已有的端到端框架只能读取水平或定向文本行;
    • 已有的端到端框架效率不能满足实时应用。
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

    3 主要算法

    3.1 总体框架

    在这里插入图片描述

    • 为了提高推理速度,采用轻量级的ResNet18作为骨干网络;
    • 针对轻量级网络具有感受野小和表征能力弱的缺点,使用堆叠的特征金字塔增强模块(FPEM)对提取到的特征进行增强;
    • FPEM(图5所示):(1)基于可分离卷积构建的U形模块,可以以较小的计算开销增强骨干网络提取的多尺度特征;(2)可堆叠,随着堆叠层数的增加,网络的感受野也将增大。

    在这里插入图片描述
    整体使用的损失函数如下:
    L = L det  + L r e c . (1) \mathcal{L}=\mathcal{L}_{\text {det }}+\mathcal{L}_{\mathrm{rec}}. \tag1 L=Ldet +Lrec.(1)

    3.2 文本检测

    本文提出了一个仅包含两层卷积的轻量级检测头(见图6)来完成文本检测任务。
    该检测头同时预测:

    • 文本区域;
    • 文本内核;
    • 实例向量。
      在这里插入图片描述

    通过PA算法将文本区域、文本内核和实例向量进行融合,得到最终的检测结果(见图7)。

    • PA借用了聚类的思想;
    • 把不同的文本看作不同的簇,则文本内核就是簇的中心,文本区域内的像素就是待聚类的样本。

    在这里插入图片描述

    图8是测试阶段。
    在这里插入图片描述
    文本检测部分的损失函数如下:
    L det  = L tex  + α L k e r + β ( L a g g + L dis  ) . (2) \mathcal{L}_{\text {det }}=\mathcal{L}_{\text {tex }}+\alpha \mathcal{L}_{k e r}+\beta\left(\mathcal{L}_{a g g}+\mathcal{L}_{\text {dis }}\right). \tag2 Ldet =Ltex +αLker+β(Lagg+Ldis ).(2)

    L tex  = 1 − 2 ∑ i P tex  ( i ) G tex  ( i ) ∑ i P tex  ( i ) 2 + ∑ i G tex  ( i ) 2 . (3) \mathcal{L}_{\text {tex }}=1-\frac{2 \sum_{i} P_{\text {tex }}(i) G_{\text {tex }}(i)}{\sum_{i} P_{\text {tex }}(i)^{2}+\sum_{i} G_{\text {tex }}(i)^{2}}. \tag3 Ltex =1iPtex (i)2+iGtex (i)22iPtex (i)Gtex (i).(3)
    P tex  ( i ) P_{\text {tex }}(i) Ptex (i) G tex  ( i ) G_{\text {tex }}(i) Gtex (i)分别指分割结果中第 i i i个像素的值和文本区域的真实值。
    L k e r = 1 − 2 ∑ i P k e r ( i ) G k e r ( i ) ∑ i P k e r ( i ) 2 + ∑ i G k e r ( i ) 2 . (4) \mathcal{L}_{k e r}=1-\frac{2 \sum_{i} P_{k e r}(i) G_{k e r}(i)}{\sum_{i} P_{k e r}(i)^{2}+\sum_{i} G_{k e r}(i)^{2}}. \tag4 Lker=1iPker(i)2+iGker(i)22iPker(i)Gker(i).(4)
    P k e r ( i ) P_{k e r}(i) Pker(i) G k e r ( i ) G_{k e r}(i) Gker(i)分别指文本核预测中的第 i i i个像素值和真实值。
    L a g g = 1 N ∑ i = 1 N 1 ∣ T i ∣ ∑ p ∈ T i D 1 ( p , K i ) , D 1 ( p , K i ) = ln ⁡ ( R ( ∥ F ( p ) − G ( K i ) ∥ − δ a g g ) 2 + 1 ) . (5)

    Lagg=1Ni=1N1|Ti|pTiD1(p,Ki),D1(p,Ki)=ln(R(F(p)G(Ki)δagg)2+1)." role="presentation">Lagg=1Ni=1N1|Ti|pTiD1(p,Ki),D1(p,Ki)=ln(R(F(p)G(Ki)δagg)2+1).
    \tag5 Lagg=N1i=1NTi1pTiD1(p,Ki),D1(p,Ki)=ln(R(F(p)G(Ki)δagg)2+1).(5)

    • N N N: 文本行数;
    • T i T_{i} Ti: 第 i i i个文本行的文本区域;
    • K i K_{i} Ki: 文本行 T i T_{i} Ti的文本内核 K i K_{i} Ki;
    • D 1 ( p , K i ) \mathcal{D}_{1}\left(p, K_{i}\right) D1(p,Ki): 文本像素 p p p和文本内核 K i K_{i} Ki之间的距离;
    • R ( ⋅ ) \mathcal{R}(\cdot) R(): ReLU函数,确保输出为非负;
    • F ( p ) \mathcal{F}(p) F(p): 像素 p p p的实例向量;
    • G ( K i ) \mathcal{G}\left(K_{i}\right) G(Ki): 文本内核 K i K_{i} Ki的实例向量, 利用下面的公式进行计算: G ( K i ) = ∑ p ∈ K i F ( p ) / ∣ K i ∣ \mathcal{G}\left(K_{i}\right)=\sum_{p \in K_{i}} \mathcal{F}(p) /\left|K_{i}\right| G(Ki)=pKiF(p)/Ki
    • δ agg \delta_{\text {agg}} δagg: 常量, 在实验中设置为0.5。

    L d i s = 1 N 2 ∑ i = 1 N ( D b ( K i ) + ∑ j = 1 j ≠ i N D 2 ( K i , K j ) ) , D b ( K i ) = 1 ∣ B ∣ ∑ p ∈ B ln ⁡ ( R ( δ d i s − ∥ F ( p ) − G ( K i ) ∥ ) 2 + 1 ) , D 2 ( K i , K j ) = ln ⁡ ( R ( δ d i s − ∥ G ( K i ) − G ( K j ) ∥ ) 2 + 1 ) . (6)

    Ldis=1N2i=1N(Db(Ki)+j=1jiND2(Ki,Kj)),Db(Ki)=1|B|pBln(R(δdisF(p)G(Ki))2+1),D2(Ki,Kj)=ln(R(δdisG(Ki)G(Kj))2+1)." role="presentation">Ldis=1N2i=1N(Db(Ki)+j=1jiND2(Ki,Kj)),Db(Ki)=1|B|pBln(R(δdisF(p)G(Ki))2+1),D2(Ki,Kj)=ln(R(δdisG(Ki)G(Kj))2+1).
    \tag6 Ldis=N21i=1N(Db(Ki)+j=1j=iND2(Ki,Kj)),Db(Ki)=B1pBln(R(δdisF(p)G(Ki))2+1),D2(Ki,Kj)=ln(R(δdisG(Ki)G(Kj))2+1).(6)

    • B B B: 背景.
    • D b ( K i ) \mathcal{D}_{b}\left(K_{i}\right) Db(Ki): 文本内核 K i K_{i} Ki与背景之间的距离;
    • \mathcal{D}{2}\left(K{i}, K_{j}\right): 文本内核 K i K_{i} Ki和文本内核 K j K_{j} Kj之间的距离;
    • \delta_{d i s}: 常量, 在实验中设置为3。

    3.3 文本识别

    本文提出了一个不规则文字特征提取器Masked RoI和一个基于注意力机制的轻量级识别头来完成文本识别任务。

    • Masked RoI:为任意形状的文本提取固定大小的特征块;
    • 轻量级识别头:包含两层LSTM和两层多头注意力(见图9)。
      在这里插入图片描述

    文本识别使用的损失函数如下:
    L r e c = 1 ∣ w ∣ ∑ i = 0 ∣ w ∣ CrossEntropy ⁡ ( y i , w i ) . (7) \mathcal{L}_{r e c}=\frac{1}{|w|} \sum_{i=0}^{|w|} \operatorname{CrossEntropy}\left(y_{i}, w_{i}\right). \tag7 Lrec=w1i=0wCrossEntropy(yi,wi).(7)

    参考文献

  • 相关阅读:
    vue computed计算属性及应用
    [Python]多任务编程--线程
    【SA8295P 源码分析 (二)】46 - OpenWFD Server 启动流程 之 /dev/openwfd_server_0 管道事务源码分析
    联合国教科文发布,ChatGPT等生成式AI教育应用指南
    Kubernetes常用命令
    BUUCTF:[MRCTF2020]ezmisc
    wpf menu 菜单 快捷键
    手机app开发可选技术——webview
    Selenium + Chrome带配置项启动
    python可视化----pyqtgraph
  • 原文地址:https://blog.csdn.net/search_129_hr/article/details/127111636