OCR目标检测:
个人主要按照公众号我爱计算机视觉(https://www.52cv.net/?cat=18)和github(https://github.com/hwalsuklee/awesome-deep-text-detection-recognition)进行方法调研的,你看过我推荐的这个github,你就会发现OCR目标检测这一块没有太好的选择,近两年的新论文本来就不多,有开源代码的很少,在开源代码的项目中有预训练模型的就更少了,然后可能还要在挑你所使用的深度学习框架,简直没有什么可选的。但是其实目标检测这个领域真的是已经发展到一个比较高的领域了,完全没有必要非要追求近半年或者一年的最新方法,可能选择稍微老一些的方法问题就能够的到解决,我选择的就是18年AdvancedEAST。此外,我还调研了如下方法:
EAST: An Efficient and Accurate Scene Text Detector
个人首先调研的是这篇论文,发表时间是17/04/11,发表在CVPR,比较牛的一篇文章,感觉做OCR目标检测这一块有些难以绕过去,我在搜索博客、论文的时候这个货没完没了的出来,并且这篇论文非常好的一点是pytorch,tensorflow,keras都有代码复现,并且有预训练模型,这点真的是挺少见的,并且Opencv这一块使用的也是这个方法,我使用了Opencv中的程序进行检测,感觉对于一些不是很长的检测目标,检测效果还行。但是不符合我的需求,所以被PASS掉了。
网络结构:
代码实现:
网络结构和代码这一块,感觉就是目标检测里面的一些常规操作,上采样、下采样、拼吧拼吧,去输出。
测试效果:
存在问题:
对一些较长的目标,检测效果不好,而我需要检测的目标确实就是有些长。
程序地址:
https://github.com/SakuraRiven/EAST
论文地址:
https://arxiv.org/pdf/1704.03155.pdf
AdvancedEAST:
这个方法我是在我爱计算机视觉公众号上找到的,介绍如下图,
最最打动我的,其实就是我圈出来的这句话,在我的实验中,EAST主要的缺点就是检测不了太长的目标。
网络结构:
代码实现:
说实话,网络结构这块是没太看明白,
但是最后输出这个位置看明白了:
应该不是目标检测标准的回归一个框,而是语义分割,判断每个像素是不是区域内像素,是不是边界像素,是头是尾,是上是下,很有意思的设计方式,也不知道有没有在其他领域被应用。
测试效果:
这两张图都是项目提供的效果图,我个人测得效果和这个差不多。
存在问题:
由于我做的是实际应用,所用的图像大多取自生活中,需要检测的长字符首尾两端容易出现较模糊的情况或者是由于拍摄角度不同,首尾两端变大或者变小的情况,因此检测这一块还是容易出现一些边界不准的情况。相信一些经验丰富的人也能看出来,贴出来的效果图,目标太明显了,实际使用的过程中,效果会略微差一些。
程序地址:
地址:https://github.com/huoyijie/AdvancedEAST
论文地址:
没有找到论文地址,
这个作者的论文链接
https://huoyijie.github.io/zh-Hans/2018/08/24/AdvancedEAST文本检测原理简介
CRAFT: Character Region Awareness for Text Detection:
发表时间是19/04/03,发表在CVPR
这个项目也是挺好的,相较于AdvancedEAST感觉检测出来的框更舒服一些,不像AdvanceEAST贴的那么紧,置于这个原因我并没有去深究,也存在数据使用时候扩框,或者输出的时候扩框的可能。
优点就是项目下就存在demo链接,程序都不需要跑,直接上传图像测就是。
网络结构:
测试效果:
存在问题:
你仔细观察上方的效果图你就会发现,他的那个在腿上特别长并且倾斜的字符串中间是有截断的,我也有进行详细的测试,这个算法确实存在这个问题,对于一些倾斜的较长的字符,中间容易出现截断。当然在实际使用过程中,由于截断贴的特别近,存在将两个框拼接即融框的可能。
附:预训练模型需要翻墙
程序地址:
https://github.com/clovaai/CRAFT-pytorch
论文地址:
https://arxiv.org/abs/1904.01941
Real-time Scene Text Detection with Differentiable Binarization
这篇论文2019年11月发表,被AAAI 2020录取了,应该会是19年最新的论文了,一作是华中科技大的一个博士,应该是叫廖明辉,好厉害,敬仰中,在OCR检测这个领域,18年他还发表了一篇论文是Mask TextSpotter: An End-to-End Trainable Neural Network for Spotting Text with Arbitrary Shapes,被ECCV录取的,在这篇论文里他是二作。这篇论文的代码环境我没有配置上,工作网络有一些受限,还有就是这个程序需要安装的包有点多,之所以把提到这篇论文,一方面是觉得现在看真新呀,一方面是觉得这篇论文的创新点很有意思,做了一个近似二值化的一个操作,使原本不能求导反向传播的二值化也可以加入到网络中。作者论述的优点就是简化了很多步骤,又快又准。虽然我没有配置成功,但是我觉得这篇论文还是值得一试的。
博客写完之后才发现,这篇论文是有名的华科白翔老师团队呀,自己真是读书少,没见识,再附一个CVer的推荐
https://mp.weixin.qq.com/s/9FOi9uZlWmiXiKkukm-IwQ
网络结构:
Requirements:
这个配置环境也是奇怪,好几个包我都是第一回见,当然也可能是我见得少,shapely我的这个包没有配置上。
个人理解:
就是设计了一个函数,使其类似于二值化,如图a,这个函数能够求导和反向传播,以近似二值化图为一个重要的影响因素(如网络结构图),以此使检测效果更准。
论文中效果:
程序地址:
https://github.com/MhLiao/DB
论文地址:
https://arxiv.org/abs/1911.08947
推荐总结:
https://handong1587.github.io/deep_learning/2015/10/09/ocr.html#text-recognition
https://github.com/hwalsuklee/awesome-deep-text-detection-recognition