计算机视觉的基础
——卷积神经网络(CNN)
基于标准神经网络的深度学习并非易事。一张图像就有数千万个像素,让深度学习模型从海量的图像中挖掘出其中的微妙线索并成功提取特征,是一个不小的挑战。
研究人员从人类大脑中获得灵感,拓宽了深度学习的边界。每当眼睛看外界事物时,大脑中的视觉皮层会调用许多神经元,这些神经元只接受来自其所支配的刺激区域(也称“感受野”)内的信号。感受野能够识别线条、颜色、角度等简单特征,然后将信号传递给大脑最外层的新皮质。大脑皮层会按照层次结构存储信息,并对感受野输出的信号加以处理,然后进行更为复杂的场景理解。
卷积神经网络(CNN)就是受人类视觉工作机制的启发而产生的。每个卷积神经网络中都有大量类似于人脑感受野的滤波器。这些滤波器,会在图像处理的过程中被反复使用。每个滤波器都只针对图像的部分区域进行特征提取。深度学习的原理,就是通过不断向模型“投喂”大量的图像实现模型的优化,在这个过程中,卷积神经网络的所有滤波器都将自主学会应该提取哪一个特征。每个滤波器的输出,都是它所检测的特征(例如黑色线条)的置信度。
与大脑皮层的功能网络架构类似,卷积神经网络的架构也有等级之分。每一层滤波器输出的特征置信度都将成为下一层滤波器的输入,用于提取更复杂的特征。举个例子,如果把一张斑马的图片输入卷积神经网络,那么最初一层的滤波器可能会针对图片的每个区域检测黑色线条和白色线条;高一层的滤波器可能会在更大的区域里检测条纹、耳朵、腿;再高一层的滤波器可能会检测出更多的条纹、两只耳朵、四条腿;有些卷积神经网络的最高层滤波器也许会去分辨图片中的动物到底是斑马,还是马或者老虎。
需要说明的是,我们刚才只是为了便于读者理解,才使用人类容易理解的这些特征来举例说明卷积神经网络可能提取的特征(如条纹、耳朵),但在实际训练中,卷积神经网络将以最大化目标函数为前提,自主决策每一层滤波器会提取哪些特征,也许是条纹、耳朵,但更可能是一些超出人类理解范畴的特征。
卷积神经网络是为计算机视觉而生的一种改良版深度学习模型架构,而且有不同版本的变体,适用于处理不同类型的图像和视频。
人们在20世纪80年代首次提出了“卷积神经网络”这个概念,但可惜的是,当时并没有足够的数据和算力让卷积神经网络发挥应有的作用。直到2012年前后,人们才清楚地意识到这项技术有潜力击败所有传统的计算机视觉技术。
现在回头去看,计算机视觉技术其实占尽了“天时地利”。因为正是在2012年前后,人们用开始流行起来的智能手机拍摄了海量的图像及视频,然后把它们分享到社交网络上,深度神经网络的训练才有了充足的数据。同时,高速计算机和大容量存储设备的价格大幅下降,为计算机视觉技术提供了算力支持。这些要素汇合到一起,共同促进了计算机视觉技术的发展和成熟。