深度学习与图像处理案例 │ 基于深度学习的自动驾驶小车
采用深度学习回归模型,实现端到端的小车自动驾驶控制,提升小车自动驾驶平滑性。
01、卷积神经网络基础
卷积神经网络(Convolution Neural Network,CNN)是一类特殊的人工神经网络,是深度学习中最重要的一个分支。卷积神经网络在很多领域都表现优异,精度比传统学习算法高很多。特别是在图像处理领域,卷积神经网络是解决图像分类、目标检测和语义分割的主流模型。本节内容会进行更多工程上的讲解,不会涉及太多理论公式。
PaddlePaddle将深度神经网络模型按照层(Layer)的概念呈现。在本书接下来的内容中,会见到各种不同类型的层。那么怎么理解神经网络中层这个概念呢?
在投资预测案例中使用了直线方程y=ax+b来拟合数据,这个模型非常简单,拟合精度有限。如果希望强化这个模型,让它能够与观测数据更契合,这时候可以在直线方程基础上继续提高x的阶数,如下所示:
很明显,提高阶数后的y2模型要比y1模型更复杂,属于二次非线性函数,具备更强的数据拟合能力。这里的y2是在y1的基础上乘上x再加上常数c完成的。因此,可以将y1和y2看作两层,且y2是在y1的基础上做了某些特定操作完成的,这就是最简单的层的概念。如果继续按照上述层操作,依次得到y3、y4等,那么越往后阶数越高,模型越复杂。
神经网络与高阶函数一样,理论上随着层数的增加函数的表达能力越强。卷积神经网络是通过一层层具备不同功能的操作堆叠出来的,一般由卷积层、激活函数层、池化层、线性变换层组成。下面将介绍各层的基本原理和计算规则。
1. 卷积层
卷积层的作用就是提取图像卷积特征。典型二维卷积操作如图2.31所示。

在图2.31所示中,输入图像形状是32×32×3,其中宽和高均为32像素,通道数为3,卷积层是一个5×5×3的滤波器,通过这样一个滤波器与输入图像进行卷积(卷积操作时假设padding=0),可以得到一个28×28×1大小的特征图。
一般情况会使用多层卷积来提取更深层次的特征。随着卷积层的加深,提取到的特征越来越抽象,对图像的理解能力也越来越强,如图2.32所示。在高层特征之后一般可以级联分类器对最终提取的高层特征进行分类,得到物体的最终类别。

那么卷积层是怎么计算的呢?
其实卷积层计算原理与参考书1.3节中介绍的图像卷积类似,只不过图像卷积操作一般1次只使用1个卷积,而深度学习中的卷积层可以1次使用多个卷积进行操作。例如对于形状为32×32×3的图像,如果使用1个卷积滤波器(形状为5×5×3)对其进行卷积可以得到28×28×1的特征图像; 如果使用n个同样大小的卷积滤波器,那么就会产生n个28×28×1的特征图,这些特征图合并就组成了28×28×n大小的特征图。可以看到,通过这样的卷积层操作,将原本只有32×32×3大小的输入图像变成了28×28×n大小。
PaddlePaddle提供了封装好的二维卷积层函数: Conv2D(),完整定义如下:
各参数说明如下:
上述参数比较多,