在很多使用深度学习(人工神经网络)的图形识别实践中,我注意到一个现象:原始的图片(有的仅包含有人工标注出某些物体所在的轮廓线)被直接用于深度学习模型训练。这些做法中,并未对图片进行一些基于OpenCV的“简单”预处理,例如:轮廓线提取,前景、背景识别(基于镜头聚焦导致的模糊现象)、高光消除。
当然,有一些预处理也许并不简单,例如,2D到3D场景的还原,基本形状的识别等等。但是,我始终觉得,做图像识别的思路,不能简单的做大量数据的拟合,而是要还原到图像的本质中去,从点线面体开始,建立各种基本的几何概念、图像概念。例如:点、圆、线条、曲线、轴对称与中心对称、投影变换、拉伸变换、对称变换、手性变换等。
举个例子,许多做的不太好的OCR软件会搞不定一些“较为相似”的汉字的识别,例如“人”和“入”。进行OCR训练时用的算法直接去做了人工神经网络,人工神经网络在某个层次的分量中知道“入”字的最强特征头部的一撇儿。从零开始的图像识别里,我们将不通过大量的字体图片数据得到这一点特征,而是通过少量的几个字就能认识到这个特征。
那么,建立一个基于平面几何学的图像识别系统,这是可能的吗?
回忆一下,人类是如何通过视觉认识这个世界的呢? 人类的婴儿是如何学习视觉系统的?首先人类的视觉皮层拥有大量的神经元细胞和极大的数据带宽——虽然视觉皮层产生的图像目前已经不如数码相机,但是动态对比度等其他特性仍然是及其优秀的。婴儿有了这些“硬件环境”之后,仍需要学习以获得视觉处理的“软件”。这一点很像是我们的现状。我们有的大量的图像和视频采集设备,但是没有一个高明的算法,让它们工作起来。设想,假设我们能造出一个软件,接入Go Pro佩戴到盲人身上,就能实时语音提醒“前面有一个台阶”、“前方红绿灯路口是红灯”,这该多棒!
在我们的从零开始的图像识别里,我们一开始,将设计一个基本形状学习系统。我们将像教婴儿一样,教我们的软件一些基本的形状,让其“领悟”这些基本形状所对应的基本概念。最终实现:输入一个基本形状,输出名称:“三角形”、“圆形”。
网友评论