3 CNN在危化品仓库智能巡检车中的应用研究
将经典网络架构 Lenet-5 应用于危化品仓库智能巡检车采集的道路样本中,image样本为道路样本,label为该image样本对应的json 文件中的角度和速度。通过训练,调整超参数,寻找最适合本样本的参数配置,实验内容如下。
3.1 实验数据
实验数据的来源为危化品仓库智能巡检车采集的道路样本图片,智能巡检车如图 4所示,部分道路样本图片如图 5 所示。Car数据集、训练集的样本大小为 20000 幅彩色图片,彩色图片由160×120个像素点构成。
图4 智能巡检车
Fig.4 Intelligent inspection vehicle
图5 道路样本图片
Fig.5 Photos of road samples
3.2 环境设置
实验在具有Intel 2.20GHz CPU和GTX 1080 Ti GPU的工作站上,将经典卷积神经网络CNN模型应用于本实验。
参数设置如下:
输入:Car数据集。
label:巡检车对应的角度和速度。
kernel_size=5 #卷积核尺寸。
num_filters=32 #卷积核数目。
kernel_size=5 #卷积核尺寸。
num_filters=64 #卷积核数目。
hidden_dim=512 #全连接层神经元。
STEPS=10000 #训练次数。
batch_size=50 #取batch大小。
优化函数:随机梯度下降算法SGD。
损失函数设置:在Car数据集中,使用均方误差(MSE)作为网络的损失函数,如式(1)所示。因为使用MSE能够最小化预测值与label(y(X;θi∗))之间的差值,从而得到θ*的最优解。
3.3 实验结果
学习率是影响性能的超参数之一,相比其他超参数,学习率以一种更加复杂的方式控制着模型的有效容量。当学习率最优时,模型的有效容量最大,因此我们选择调整的超参数为学习率。
3.3.1 固定学习率实验
学习率设置为 0.01、0.001、0.0001,损失函数分别如图6~图8所示。
图6 学习率为0.01时的损失函数
Fig.6 Loss function with learning rate of 0.01
图7 学习率为0.001时的损失函数
Fig.7 Loss function with learning rate of 0.001
图8 学习率为0.0001时的损失函数
Fig.8 Loss function with learning rate of 0.0001
经过多组实验,batch_size在取50时损失函数曲线波动小、稳定性好,训练速度也更快。在固定学习率训练时,学习率为 0.01时的损失函数如图 6 所示,可以看出训练最终的损失值收敛结果为 0.13,但是损失函数曲线变化不稳定;学习率为 0.001 时的损失函数如图 7 所示,可以看出训练最终的损失收敛值结果为0.15,损失函数曲线变化稳定;学习率为0.0001时的损失函数如图8所示,可以看出训练最终的损失收敛情况不好,损失值在0.28以上时损失函数曲线波动较大,损失函数曲线变化不稳定。综上所述,在本数据集上,若固定学习率,学习率为 0.001时的效果较好。
3.3.2 指数缓减学习率
指数缓减是指学习率按训练轮数增长指数差值递减进行指数调节,先使用较大的学习率来快速得到一个较优的解,然后随着迭代的继续,逐渐减小学习率,使模型在训练期更加稳定。
学习率的第一种设置如下:
decay_rate=0.98 #衰减系数。
learning_rate=0.1 #初始学习率。
global_step=global_step #总训练轮数。
decay_steps=1000 #迭代轮数。
训练结果损失函数如图9所示。
图9 指数缓减学习率的损失函数
Fig.9 Exponential reduction of learning rate Loss function
学习率第二种设置如下:
decay_rate=0.98 #衰减系数。
learning_rate=0.1 #初始学习率。
global_step=global_step #总训练轮数。
decay_steps=2000 #迭代轮数。
训练结果损失函数如图10所示。
图10 指数缓减学习率的损失函数
Fig.10 Exponential reduction of learning rate Loss function
在设置学习率以指数缓减的方式进行调整时,在第一种学习率情况下,前期训练损失函数曲线的波动较大,且不稳定,最终损失收敛值达到 0.1;在第二种学习率情况下,最终损失收敛值为0.1。将两种学习率的情况进行比较,第二种学习率的损失收敛值更好,稳定性更高。