PyTorch自动驾驶视觉感知算法实战
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.2.3 为什么需要深度网络

前文提到,卷积核的作用是识别输入数据中的模式,使用的卷积核越多,输出的特征图就越多,能识别的模式也越多。出于效率考虑,卷积核的尺寸一般都不大,常用的卷积核的尺寸是3、5和7,再大的就很罕见了。这也意味着卷积核能识别的模式不会特别复杂,像直线、斜线、圆圈等模式都能被很好地表达,但行人、车辆、交通标志之类复杂的模式就很难用一个3×3大小的卷积核表达了。这个时候,就需要进行抽象。卷积神经网络就是通过增加深度来对模式进行抽象的。这里的深度,是指卷积层的层数(Layers),而不是指前文提到的特征图通道数。如图1-9所示,每一个卷积层都可以对多通道输入进行卷积操作,得到多通道输出张量,每一层的输出张量又可以作为下一层的输入,如此把一个又一个的卷积层叠起来,就构建出了一个很多层的深度神经网络。

第一层负责识别输入图片中的底层特征(Low-level Features),如图片中的直线、斜线、边缘线等几何特征。第二层则负责识别第一层识别出来的特征的更高级特征,依此类推。每一个卷积层都在对输入的特征进行进一步理解,并将其理解的结果输入到下一层。这个不断深入理解的过程,就是抽象的过程。靠近输入端的抽象程度浅,靠近输出端的抽象程度深。

• 图1-9 连接多个卷积层组成深度神经网络

2009年,斯坦福大学的研究人员发表了一篇论文[2],他们通过对各个卷积层输出的特征图进行概率推理,重建出了各个卷积层对输入图像的理解。图1-10就是论文中发表的图片,作者构建了一个三层的卷积神经网络来识别人脸的特征,从图中可以看出,神经网络的第一层只能理解边缘线、圆形等几何结构,第二层就能看到人的眼睛、鼻子、耳朵,到了第三层就能看出整个人脸来了。

• 图1-10 卷积神经网络的特征提取能力

深度神经网络通过对问题进行抽象,简化了每一个网络层的任务,从而让训练变得更为简单高效。但神经网络并不是越深越好,对于相对简单,或者数据量少的问题,过深的网络反而会导致过拟合。所以在实践中,只能通过不断地试验来确定最合适的深度。比较常用的方法是直接使用论文里采用的深度。