什么是卷积神经网络
卷积神经网络(ConvNets 或者 CNNs)属于神经网络的范畴,在图像识别和分类领域具有高效的能力。卷积神经网络可以成功识别人脸、物体和交通信号,从而为机器人和自动驾驶汽车提供视力。
在上图中,卷积神经网络可以识别场景,也可以提供相关的标签,比如“桥梁”、“火车”和“网球”;而下图展示了卷积神经网络可以用来识别日常物体、人和动物。最近,卷积神经网络也在一些自然语言处理任务(比如语句分类)。
因此,卷积神经网络对于今天大多数的机器学习用户来说都是一个重要的工具。
卷积操作
“卷积”这一词在多个领域里都有定义(比如信号处理领域的傅里叶变换中也有卷积)。具体在图像处理领域,卷积操作是指使用一个小的“模板窗口”对一个图片中的所有与模板大小相同的区域进行“卷积运算”。“卷积运算”其实很简单,就是将模板中的每一个数字与图片中相同大小区域的对应数字(像素值)进行相乘,再求和。具体操作如下图:
“模板窗口”每移动到一个位置,就和图片中的对应元素进行一次卷积运算,注意我们一般把“模板窗口”称为卷积核(kernel)。 比如在第一个位置,图片上的四个像素值为[[0,0],[1,1]], 而卷积核中的数值为[[-1,1],[-1,1]], 对应元素相乘再求和,得到0*-1+0*1+1*-1+1*1=0
比如在第二个位置,图片上的四个像素值为[[0,0],[1,0]], 对应元素相乘再求和,得到0*-1+0*1+1*-1+0*1=-1 对图片中的所有可能位置进行卷积操作,就得到了最终的卷积结果。
使用卷积神经网络识别交通标志
上文中我们提到过,卷积神经网络可以成功识别人脸、物体和交通信号。
因此,介绍了卷积神经网络的基本知识点之后,我要推荐一个“实验楼”近期新出教程《使用卷积神经网络识别交通标志》,这同时也是一个在线实验,大家可以在线上写代码,完成这个实验。
介绍
实验采用德国交通标志数据集,使用 TensorFlow 实现的卷积神经网络解决交通标志分类问题。
训练前对原数据进行了数据扩充保证了训练集数据类型的平衡,并对数据进行了预处理,来改善特征提取。
使用深度神经网络分类器作为模型,采用扩充后的平衡数据集进行训练,其准确率达到 98%以上,可以通过预训练或者降低学习率对模型进行微调来进一步提高模型性能。
知识点
- 数据预处理
- 数据扩充
- 深度神经网络分类器
- Tensorflow卷积网络实现