基于二值神经网络的SSD目标检测算法
2022-05-16申晋祥鲍美英
申晋祥,鲍美英
(山西大同大学计算机与网络工程学院,山西大同 037009)
随着信息和网络技术的快速发展,大量的视觉信息数据如图像、视频、表情包等应运而生,如何在海量繁杂的视觉信息数据中快速并准确的对目标物体进行识别,是计算机视觉和数字图像处理领域研究的热门问题[1]。在军事目标检测、车辆识别、行人检测、无人驾驶以及医学手术中的器械定位等方面具有重要的研究价值[2]。
目标检测算法能够实现在复杂的场景中快速且准确的对环境中的目标物体进行识别。随着深度学习技术的蓬勃发展,出现了R-CNN(Region-based Convolutional neural network)、Fast R-CNN、Faster RCNN、SSD 模型等[3],将深度学习技术应用到目标检测模型上,能够快速推动目标检测算法在准确率以及检测速度方面大大提高[4]。
1 SSD目标检测算法
基于深度学习的目标检测算法相比于传统算法具有更高的鲁棒性和准确性,其中SSD目标检测算法的检测精度以及检测速率相对更高[5]。
SSD 模型网络结构的特征是在基础网络VGG(Visual Geometry Group network)之上添加新的网络结构进行目标检测[6],把VGG 的最后两个全连接层,用卷积层来替换,同时在后面再增加四个卷积层,便于在不同尺度下对前端网络产生的特征层进行特征提取,是一种端到端的单次卷积神经网络,SSD 网络结构图如图1所示。
图1 SSD网络结构图
算法采用多尺度特征图进行目标检测,多尺度主要是指利用不同层级和不同尺度的特征图来进行目标框定检测,卷积模型在每一特征层级都是不同的。在VGG 之上添加的每一个特征层可通过滤波器产生一组固定的预测,为了使输出的边框离散化,可通过将不同形状的初始化边框使用在不同尺度的特征图上。通过此方式能够明显提高目标检测的准确率。
SSD 模型训练过程中,在训练样本确定后需进一步计算算法的损失函数,默认框与目标类别的置信度损失和相应位置回归的损失共同确定SSD 算法的目标损失函数,具体如式(1)所示。
式中,N表示在检测过程中与真实标签匹配到的默认框的数量,Lconf表示置信度损失,Lloc表示相应位置回归的损失,x表示区域候选框与不同类的真实框匹配结果,c表示被预测的物体类别置信度,l表示预测结果的位置信息,g表示标注的边界框坐标,α一般置为1,用来调整位置损失和置信度损失之间的比例。通过对模型多次的训练能够减少损失值从而提高其检测性能。
2 二值神经网络
二值神经网络(Binary Neural Network,BNN)是指对神经网络在训练过程中的权重值和激活函数进行二值化来计算参数梯度,即权重值和激活函数转换为+1 和-1。二值化可以实现比特运算,比浮点运算在速度上有很大提高,同时二值神经网络能够大大减少内存的使用量,对网络模型容量压缩以及提速方面具有重要意义。全连接二值化神经网络图如图2所示。
图2 全连接二值化神经网络图
3 基于BNN的SSD算法
神经网络的二值化即权重值和激活函数转换为+1和-1,有决定式和随机式两种方法,随机式虽然比决定式相对更合理,但因为硬件每次生成随机数耗时很长,所以通常使用决定式二值化方法。
根据浮点型的权重值和激活函数分别采用决定式方法进行二值化,二值化后的参数再继续运算,具体过程如式(2)所示。
其中Binarize()函数是采用决定式方法将权重和激活函数二值化的参数,BatchNorm()函数是对激活函数批量正则化。
求解各层梯度具体方式如式(3)所示。
二值神经网络是对原神经网络实值参数进行二值化后再计算参数的梯度。二值化相当于对原神经网络的权重值和激活值增加了“噪声”,具有正则化的作用,能够有效防止网络过拟合现象。另外,二值化会使训练好的神经网络模型保存时只需较少的内存空间,因为访存时间要比计算时间更耗时,所以能够大大减小算法的计算量,有效提高算法的检测速度,同时检测的准确率也能够基本保证。
4 实验结果与分析
实验环境配置IntelCoreTMi7-8750H CPU@2.20 GHz,16 GB RAM,显卡的型号为Nvidia GeForce GTX 1050Ti,利用Tensorflow 框架并通过GPU 进行加速运算。数据集用公开的PASCAL VOC2007、PAS⁃CAL VOC2012 以及MS COCO,算法训练在PASCAL VOC2007、PASCAL VOC2012 数据集上进行,通过MS COCO 数据集进行测试。实验选取数据集中的4类:bike、chair、dog 和cat 进行测试,每类共1 000 张图片。所提基于BNN 的Binary SSD 算法与Fast R-CNN 算法和SSD算法进行比较,不同算法实验结果对比如表1所示。
表1 不同算法实验结果对比
在目标检测实验中,通常以mAP(Mean Average Precision)作为检测精度的评价指标,以FPS(Frame Per Second)作为检测速度的评价指标。
通过实验结果验证了各算法的性能,Fast RCNN 算法虽然使用了多任务损失函数能够完成端到端的训练,对网络中包括卷积层在内的各个层均实现微调,将目标完整输入到CNN 进行特征提取,在邻接时再映射到各个候选区域,所以仅会在末尾的较少层单独处理各个候选框,能够提高提取候选区域的速度,并且网络训练所提取到的特征能够暂存在显存中而无需占用额外的存储空间,具有较高的检测精度和检测速度。但是在兴趣区域特征提取时采用的选择性搜索算法计算量太大,影响了算法的检测速度,因此在比较的算法中性能表现最差。
SSD 算法融合了回归的模式和基于区域的概念,是在基础网络VGG 上进行变动,通过使用卷积层来替换VGG 的最后两个全连接层,并在其后增加四个卷积层以有利于对不同尺度下前端网络所产生的特征层进行特征提取,其根本改进之处在于算法无需对假定的边框进行像素和特征的重复采集取样。神经网络中由于浅层的特征图包含有丰富的细节内容而便于进行小目标的检测,而深层的特征图包含有较多的全局内容而有利于进行大目标的检测,网络通过在不同的特征图上对多个层次在不同尺度下进行测量,实现目标的高准确率检测并提高检测的速度,因此SSD 算法与Fast R-CNN 算法相比有较好的准确率和检测速度。
基于BNN 的SSD 算法进一步提高目标检测速度,SSD模型的浮点型参数使得网络计算量过大且对模型的存储还需要较大的内存空间,引入BNN 方法将神经网络的浮点型参数与激活函数二值化,极大降低算法的时间复杂度和空间复杂度。二值化能够使网络的主要计算由浮点运算变为整型运算,并且使训练好的神经网络模型保存时只需较少的内存空间,因为访存时间要比计算时间更耗时,所以能够大大减小算法的计算量,有效提高算法的检测速度。实验结果表明,基于BNN 的SSD 算法与SSD 算法相比,检测精度虽然降低了将近5%,但检测速度提高了近3倍,内存占用量减少了近76%,在基本保持准确率的情况下有效提高目标检测的速度。
5 结论
为进一步提高SSD目标检测算法的检测速度,提出基于BNN 的SSD 目标检测算法,将算法模型的参数和激活函数进行二值化处理,把浮点型的运算转换为整型运算,在保持精确度基本不变的情况下,即提高了算法的检测速度,又降低了模型内存空间的占用量。未来将继续探索新方法用于改进算法,进一步提高目标检测的精确度和速度。