本文首发于微信公众号“人工智能与图像处理”,欢迎您的关注。
最近用MaskRCNN做了一些检测,有些效果还行,有些则不太理想。
目录
一,检测分割斑马
先是从网上下载了一些斑马(coco数据集80类是有斑马类的)的图片,自己用labelme标注了一下,
coco已经有斑马类还用斑马图片标注测试是为了方便跑通代码,查看效果。
最后简单训练了一下,测试效果必然还行:
以上目的只是为了跑通训练自己数据集的所有流程。
主要过程可以看看这篇文章:https://zhuanlan.zhihu.com/p/180236787
二,检测分割印章
然后我又标注了一个稍微大一点的数据集,主要目的是为了检测印章,原图如下图所示:
主要是红色圆形印章,当然这种红色圆形印章通过通道分离可以很容易将印章分割出来,这里只是拿它来试试MaskRCNN的检测分割效果,所以绕个大圈子。
用labelme标注,并转换后的数据集如下:
训练到总的loss为0.04左右,然后测试了一下检测分割效果(图片有些隐私,非印章部分我打了马赛克):
从上面的检测效果可以看出,经过训练后,图片中的红色圆形印章很容易被检测分割出来,而且效果还行。
PS:做了版面的检测后发现原来标注数据的方式有些问题,导致一张图片上出现多个同类实例的时候,分割会出问题,之前测试图片基本是单个印章的,所以没发现这个问题[手动捂脸]。对数据标注方式做了改正后(同一张图片出现多个同类别的实例,应该标注为:印章1,印章2,印章3....),又重新训练了一下印章检测这个数据集。
总的损失下降到0.06左右,测试效果如下,这样看着舒服多了[再次手动捂脸]:
三,版面中的图片表格公式的检测分割
经过上面两个小例子的测试,后面我又用MaskRCNN训练一下版面分析的图片,看看效果。版面分析的图片,主要检测图片、表格、公式三类。训练数据集如下,该数据集不是我人工标注的,是之前写的程序处理的结果转换成MaskRCNN 可训练的格式,人工标注太费时费力了。
前面的图片不管是斑马还是红色印章都和背景有明显的界限,所以分割起来比较容易。版面中的图片、表格、公式就不太一样了,框出的区域,除了有内容的地方,空白的地方和背景是一样的,这样的数据训练起来不太好收敛。前期尝试各种方法调试超参数,总的损失达到0.5左右就基本不下降了。测试的效果也并不是很理想。
因为版面中每张图基本都会出现多个同类型的实例,加上前面标注数据方式有点问题,所以检测效果不是太理想。后来改正了标注方式后又重新训练了一下,检测效果如下:
从上面测试结果可以看出,训练的模型对于图片和表格的检测分割效果良好,单个公式也还行,多个公式出现在一起的时候容易出现混乱,这种情况跟数据集有关系,因为数据集中对于公式的处理结果就是这样的。后续改进公式检测效果还需要从标注数据集上下功夫。