应用之图片字符识别
问题简介及解决流程滑动窗口行人检测文本检测字符分割 识别单个字符上限分析问题简介及解决流程
问题如上图,如何从图片中识别出若干文字信息。
解决流程:
文本检测(将有文字的部分整块截图)
2. 字符分割(将截图分割成单个字符的图)
3. 识别分割出来的图中的字符
以上三个流程可分别安排团队成员(1-5个)进行处理
滑动窗口
行人检测
先指定一定的长宽比(如8236或8240等)筛选该长宽比下的正样本(y=1)和负样本(y=0) :在要检测的图片上,按该长宽比下的窗口以一定的步长进行滑动,每滑动一步选取一部分图案进行检测:
PS:如果横着滑,滑完第一行后,要滑到下一行时,需要注意的是,也是按步长滑动下降到1+b行(如果b为步长)
文本检测
同理,准备正样本和负样本:选取一定长宽比的窗口在图片上滑动检测
如左图,以上白色区域便是检测到文本的区域;可以通过区域扩展(expansion),使文本变成如右下图的整块
字符分割
按照截图到的文字区域中单个字符的长宽,选择一定长宽比来选择正样本和负样本:用与上一步的长宽比同等尺寸的窗口在截图到的文字区域中滑动,检测分割线
识别单个字符
按正常使用逻辑回归识别即可
但是存在如何获取大量训练样本的问题,可以人工合成关于字符的训练集(不同字体、艺术字、旋转、缩放、扭曲、模糊化、随机背景等)
左边是真实数据,右边是理想数据
可以给左边的样本加上随机背景变成右边
扭曲
同理,以上训练集扩展方法也可以应用于声音检测:
如上图,第一个声音是原始声音,第二个是模拟了通信差的情景,第三个是加上了人群声,第四个是加上了机器声
注意的是: 不要仅仅加上随机/无意义的噪声就作为新样本,这样的样本帮助不大:
在扩展训练集之前确定拥有低偏差高方差(通过学习曲线判断)的假设函数(分类器),比如一直增加隐藏层或特征数量直到拥有低偏差分类器思考如果要获得10倍的数据需要花多长时间。(途径包括人工合成、自己收集和标记、自己掏钱从众包中获取(如亚马逊劳务众包平台“Amazon MechanicalTurk”))
上限分析
分析机器学习系统整个流程中,哪个步骤对准确度最有帮助,以免在不重要的步骤中花费过多精力。
可见,上图中,文本检测能够提高17%的准确度,对系统最有帮助。
如果得到以上准确度的呢? 依次将每个步骤,用人工的方式去处理(也就是效果达到极致),观察模型准确率的变化,找到变化最大的步骤。
其他上限分析的应用例子(人脸识别):
由上图可见,面部检测的步骤是最重要的,应把精力重点放在改进面部检测。