• OCR——图像超分调研


    一、图像超分(辨率)

    1. 图像超分是什么

            图像超分是指将一张低分辨率图像恢复成高分辨率图像的技术。

    2. 目的

    1)提高图片的分辨率;

    2)丰富图像的纹理细节。

    3. 问题

    1)退化模型的估计

            实际解决图像超分问题的最大挑战是对退化模型的精确估计。估计退化模型就是在对图像进行超分辨率重建的同时,从低分辨率图像中估计图像的运动信息、模糊信息和噪声信息。现实中由于缺少数据,仅仅从低分辨率图像估计退化模型是很困难的。

    2)计算复杂度

            现有算法基本是通过牺牲计算代价来提高重建后图片的质量。尤其是当分辨率提高的倍数较大时,计算量是平方倍的增长,导致图像超分耗时严重。

    3)稳定性

            图像超分辨率重建算法的泛用性较差。当输入图像不满足算法假定的退化模型时,会产生错误的细节。当学习的数据不完备时,仅依靠学习模型的泛化能力去预测丢失的高频细节,会不可避免地引入错误细节。

    4. 研究现状

    1)基于插值

            常见的插值方法有最近邻插值、双线性插值、双三次插值。这些方法虽然简单有效,但是都假设图像具有连续性,并没有引入更多有效的信息,往往重建结果的边缘和轮廓较为模糊,纹理恢复效果不佳,性能十分有限。

    2)基于重建

            该类方法将图像超分辨率重建视为是一个优化重建误差的问题,通过引入先验知识来得到局部最优解。常见的基于重建的算法有凸集投影法 (Projection onto Convex Set, POCS)、 最大后验概率法 (Maximum A Posterior estimation, MAP)、贝叶斯分析方法 (Bayesian Analysis, BA)、迭代反投影法 (Iterative Back Projection, IBP) 等。虽然这类方法通过引入先验信息为图像超分辨率重建过程增加约束条件,进而获得了良好的重建效果。但是这些算法存在明显的收敛不理想等问题。

    3)基于学习

            卷积神经网络 (Convolutional Neural Network, CNN) 由于其优秀的细节表征能力已经广泛应用于图像超分辨率重建研究,同时 Transformer 也在图像超分辨率领域取得成功。能够隐式地学习图像的先验知识,并利用学习到的先验知识生成效果更好的超分辨率图像。 该类方法中经典的包括 SRCNN、ESPCN、VDSR、DRCN、DRRN、EDSR、SRGAN、ESRGAN、RDN、WDSR、LapSRN、RCAN、SAN、IGNN、SwinIR等。基于学习的图像超分辨率重建算法在重建结果上取得了远超传统算法的优势,但由于对硬件设备和处理时间的高要求导致这些算法中被实际应用的寥寥无几。

            以上内容参考自 图像超分综述:超长文一网打尽图像超分的前世今生 ,其中有对各算法的详细描述。

    二、基于 SRGAN 的图像超分案例

            参考自 将图像超分辨率模型SRGAN移植到安卓 ,主要记录一下测试效果。

    1. APP界面和功能

    1)初始界面

    • TEST :从内置的三张图片中随机选择一张进行超分重建
    • SELECT:选择相册图片进行超分重建 
    • SAVE:保存超分重建后的图片
    • LR:原图片
    • SR(x4):宽高像素放大 4 倍后的图片

    2)运行后界面

    3)内置图片超分重建效果

            内置原图片的分辨率均为 宽124 \times 高 118 ,超分重建后分辨率为  宽496 \times 高 472(原图片4倍) ,左边是原图,右边是重建后的图片。

     

    4)自己选择图片测试效果

     

    (原图分辨率 93 \times 112 ,8KB)   (超分后图片 分辨率 372 \times 448 ,147KB)

    (原图片分辨率 609 \times 60 ,5KB)

      

     (超分后分辨率 2436 \times 240 ,217KB)

    2. 一些问题

    1)原文中提到 SRGAN 模型非常消耗内存,当输入图片较大时应用会闪退。他的解决方法是将原图片分割成小图片,分别进行超分,再将得到的图片重新组合后输出。不确定这种方法是否会影响计算效率。

    2)超分重建前后的效果对比。目前还没有移植到 OCR demo 中,仅从人眼观测的角度来说,对于本身识别度就差的图片,超分重建的效果并不好;而对于本身识别度还可以的图片,超分重建的优化程度并不高,也就是锦上添花的程度。

    3)运行速度实在是太慢了。对于内置图片(像素为 124 \times 118,30KB )这种像素不高的图片,运行耗时约为 4 秒。我在测试的时候拍了一张像素为 3072 \times 3072 ,大小为 1.9MB 的图片,运行耗时在 15 分钟左右。

    4)除了通过 SRGAN 模型之外,还有一些其它的的超分辨率模型,但是我浏览的相关帖子没有发现那种效果拔群,可以很好应用在 OCR 项目里的(只是我个人的看法)。

  • 相关阅读:
    WEBGPU学习之通过javascript代码修改顶点着色器的顶点数据。
    从理解js双重递归执行顺序到用递归方式实现二叉树中序遍历
    32 Feign性能优化
    C/C++ 线程超详细讲解(系统性学习day10)
    HTTP/HTTPS、SSL/TLS、WS/WSS 都是什么?
    北斗导航 | SINS/GPS超紧组合系统完好性监测算法(代码后续添加)
    安科瑞支持以太网通讯、profibus通讯嵌入式电能表APM指导性技术要求-Susie 周
    封神工具:腾讯云服务器价格计算器_好工具分享
    CSP认证202305-2矩阵运算(c++)
    互联网时代,企业如何扭转线下采购劣势?
  • 原文地址:https://blog.csdn.net/qq_40206924/article/details/126895304