我有多张图表图片,这些图片上的标签都是字母数字字符,而不仅仅是文本标签本身。我希望我的YOLO模型能够识别出图片中所有的数字和字母数字字符。
我如何训练我的YOLO模型来实现这一目标?数据集可以在这里找到。https://drive.google.com/open?id=1iEkGcreFaBIJqUdAADDXJbUrSj99bvoi
例如:请看边界框。我希望YOLO能够检测出文本所在的所有位置。然而,目前没有必要识别边界框内的具体文本内容。
图片可以在这里下载这里
这是我使用OpenCV尝试过的方法,但它对数据集中所有图片都不适用。
此处省略代码
是否有任何模型、OpenCV技术或预训练模型可以帮我实现这个目标?我只需要在图片中所有字母数字字符周围画出边界框。之后我需要识别边界框内的内容,但目前这一部分并不重要。
回答:
一种可能的方法是使用基于Zhou等人2017年论文《EAST: An Efficient and Accurate Scene Text Detector》的EAST(高效准确的场景文本检测器)深度学习文本检测器。该模型最初是为检测自然场景图像中的文本而训练的,但有可能将其应用于图表图像。EAST非常robust,能够检测模糊或反光的文本。这里是Adrian Rosebrock对EAST的实现的一个修改版本。我们可以尝试在进行文本检测之前尽可能多地去除图像中的非文本对象,而不是直接在图像上应用文本检测器。想法是在应用检测之前移除水平线、垂直线和非文本轮廓(曲线、对角线、圆形)。以下是使用你的一些图片的结果:
输入 ->
要移除的非文本轮廓用绿色标记
结果
其他图片
执行文本检测所需的预训练模型frozen_east_text_detection.pb
可以在这里找到。虽然该模型捕捉到了大部分文本,但结果并非100%准确,偶尔会有误报,这可能是由于它是在自然场景图像上训练的。如果你想要更准确的结果,你可能需要训练自己的自定义模型。但如果你想要一个开箱即用的解决方案,那么这个应该能满足你的需求。请查看Adrian的OpenCV文本检测(EAST文本检测器)博客文章,了解关于EAST文本检测器的更全面的解释。
代码
此处省略代码