融合脉冲神经网络的模糊情景车辆重识别算法
2022-03-25董红斌刘洋英杰付强
董红斌,刘洋英杰,付强
哈尔滨工程大学 计算机科学与技术学院, 黑龙江 哈尔滨 150001
随着物联网技术的不断发展与壮大,车辆在生活中逐渐与物联网进行融合。城市与郊外车辆数量逐渐增多,车辆实时定位、跨域跟踪等功能已成为公安管理的重要组成部分。目前,大多数地区的车辆识别主要是通过摄像头识别车牌。然而,在实际环境中,尤其在偏远区域,大量的摄像机清晰度低、处理速度慢。由于功耗原因,无法在终端上得到计算,需要传回云端进行计算,在极端天气条件下边缘设备抗干扰能力弱、传输速度慢、图像质量差,导致云端计算准确率下降,反应速度降低。
SNN是神经网络领域的一个重要分支,在计算机领域中发挥着重要作用,如场景分类[1]、图像分类[2]、语音识别[3]等。Fu等[4]提出了一种先进的模式分类方法,即差分进化脉冲神经网络(differential evolving spiking neural network,DESNN)。在另一项研究中,Fu等[5]设计了一个分层脉冲神经网络(spiking neural network,SNN),包括卷积层和池化层,并根据灵长类大脑的机制,提出了由兴奋性神经元和抑制性神经元组成的SNN,同时使用取决于突触后的脉冲到达等级的时间编码(rank order)方式对输入模式进行编码,以确定特定模式的输入脉冲优先级。在卷积层中使用脉冲时间依 赖 可 塑 性 ( spike timing dependent plasticity,STDP)学习规则,以无监督学习方式提取视觉特征。在目标检测方面,Kim等[6]在研究中首次应用了SNN,其将SNN与目标检测相结合的研究具有重要意义。车辆重识别作为目标检测的一个子任务,不同于目标检测,其目的是在不同的监控场景中查找同一辆车。将SNN融合到应用中也是一个重要的研究方向。
在改进车辆重识别算法性能的过程中,通过大量实验后发现,注意力机制在图像领域效果极佳,尤其是对输入图像进行特征的提取过程作用重大。注意力机制在计算机视觉领域有着广泛的应用。目前,许多学者将注意力机制与行人重识别和车辆重识别相结合。因此,我们希望将脉冲神经网络集成到车辆重识别算法中的同时,利用注意力机制对脉冲神经网络进行优化,提高算法的分类能力。伴随着边缘计算的不断发展,边缘设备间互相可以组成网络。在由摄像头组成的边缘网络中进行车辆重识别时,1辆车被摄像头所捕捉后将数据发送给其他边缘设备,然后其他边缘设备将数据进行重识别计算,而不是返回云端计算,进而减少计算时间与传输时间。在边缘设备进行计算后得到重识别结果,并及时在边缘设备上进行响应,如警报、呼叫附近服务台等,从而明显减少了响应时间。
1 相关工作
1.1 车辆重识别算法
针对车辆重识别算法的研究主要是通过度量学习、车辆外观信息以及时空信息来研究车辆重识别算法。Liu等[7]利用车辆外观信息和融合车牌匹配进行车辆重识别研究。Wu等[8]通过时空信息的约束,显著提高了车辆重识别算法指标。Bai等[9]在度量学习方面调整了backbone中的损失函数,改进了算法。
在车辆重识别算法的研究中,网络结构是一个重要的研究方向。Hsieh等[10]提出了一种基于兴趣点及其相应对称点以确定其感兴趣区域(region of interest,ROI)的方法,无需使用任何具有运动功能的车辆重识别算法,并提出了一种新颖的补丁匹配(PatchMatch)网络,以极高的精度细化最终结果。Mai等[11]采用暹罗卷积神经网络结构,以车牌和车辆外观为输入,提出了一种用于车辆重识别任务的神经网络。Chao等[12]提出了一种基于深度学习的车辆重识别方法,该方法利用两分支复合深度网络(Multi-DNN)融合暹罗神经网络来融合颜色、模型和在挡风玻璃和地图上粘贴的标记的分类输出,将它们转换为欧几里得空间,其中距离可以直接用于衡量任意两辆车的相似度。为实现这一目标,该研究提出了一种基于经典卷积神经网络(Alex-net)的车辆颜色识别方法、一种基于深度卷积网络(visual geometry group network,VGG)的车型识别方法和一种基于加速区域卷积神经网络(faster region-CNN,Faster R-CNN)的粘贴标记检测识别方法。Wu等[13]提出了一种新颖的综合细节细化网络(comprehensive detail refinement network,CDRNet),提出了从车辆图像中学习鲁棒和多样化的特征。该算法包含全局注意力模块、细节模块和局部特征细化模块3个模块。全局注意力模块提取关键的全局特征,而细节和局部细化模块检索重要的次要特征。Liu等[14]通过实验,提出了车辆重识别框架。该框架基于深度神经网络,其渐进式车辆重识 别 算 法 ( progressive and multimodal vehicle reidentification,PROVID)对视觉特征、车牌、摄像头位置和上下文信息利用更加充分。
车辆重识别算法的训练流程是:在输入图像后,算法对图像进行预先处理;随后将处理后得到的图像传输到网络中,进行计算和训练损失函数的操作,目的是增加类之间的距离,减少类内的距离。图1是训练流程,描述了文中算法的训练过程。模型被训练后,可以测试输入图像。测试过程是将图像输入网络进行计算,计算得到的特征图的相似度(主要是余弦距离),通过排序得到结果。图2是测试流程,描述了文中算法的测试过程。
图1 车辆重识别训练流程
图2 车辆重识别测试流程
1.2 脉冲神经网络
SNN被称为第三代人工神经网络,是受大脑等脉冲信号处理系统的启发而构建的。大脑具有高智能和低功耗的优点,通过参考大脑中的脉冲结构,SNN可以在保持低功耗的同时实现与人工神经网络(artificial neural network,ANN)接近的性能。但是在SNN上训练面向ANN的数据时发现,SNN模拟更接近现实的神经元,实值像素图像不适合SNN。此外,还需要考虑时间信息的影响,单个神经元模型[15]必须计算简单,拥有多种可变的放电方式。通过该方法可以模拟真实研究中的生物神经元。当神经元被信号激活的情况下,该神经元会产生1个信号。神经元通过将该信号传递给其他神经元,来实现改变膜电位的目的。
在脉冲神经网络中,脉冲神经元的当前激活情况通常被认为是当前状态。该水平通常会通过建模的方式生成为微分方程。当对脉冲神经元进行脉冲输入操作时,其输入的脉冲会将电流增加1个短暂的间隙时间,然后逐渐下降。有许多编码方法将这些输出脉冲序列转换为实际数字,这些编码方法同时考虑了脉冲频率和脉冲间隔时间。在动态的脉冲神经网络中,神经元与深度神经网络不同。脉冲神经元并不是在每次迭代计算过程中都被激活。相对的,脉冲神经元是在其膜电位达到阈值时有激活情况。
脉冲神经网络接近现实,尤其是在构造模拟神经元更,并且脉冲神经元在计算过程中对时间信息所产生的影响进行了计算与考虑。在Izhikevich[16]的经典实验中,当1个神经元被激活时,它会产生1个信号传递给其他神经元,以增加或减少其膜电位。
图3[17]为脉冲神经原电位转换过程。在SNN中,神经元的行为被描述为充电、放电和复位3个过程,对应于图3中的3种颜色。膜电位H输入X到脉冲神经元。在输入后膜电位产生变化,随后进行充电过程。在进行充电过程后,膜电位H产生新的变化,随后生成脉冲S,并在此之后进行放电过程。最后,膜电位在释放脉冲后变化到V,从H和S到V的转换是一个复位过程。
图3 神经元充电、放电和复位过程的研究
图3中X(t)是时间t的输入,H(t)是时间t充电后的膜电位,S(t)是时间t释放的脉冲,V(t)是时间t释放脉冲后的膜电位。在0时刻时,X传输进入脉冲神经网络的脉冲神经元中,神经元充电,V(0)进行变化,随后神经元放电并重置为默认膜电位,并为下一个1时刻脉冲做好准备。图3中的充电方程定义为
不同的神经元有不同的充电方程。充电方程将描述阈下动态的微分方程转换为差分方程。当考虑到将神经元膜电位中的离子通过膜扩散的“泄漏”项反映在方程中,此神经元被定义为LIFNode(leaky integration-and-fire)。跟据图3 可以得到其充电方程定义为
式中:Vreset为重置电压, τm为膜电位时间常数。在神经元的计算过程(动力学方程)的描述中可以发现,放电过程中的放电方程是不可微分的。放电方程定义为
式中: Θ 为一个生成二进制脉冲的阶跃函数,Vthreshold为阈值电压。复位方程定义为
式中Vreset为重置电压。式(1)表示了脉冲神经元在经过放电后电位归位的过程。
IFNode(integration-and-fire)是研究中最早的脉冲神经元模型[18−19]。在该模型中,细胞的表现被认为是通过对细胞膜进行充电来控制的,不考虑将神经元膜电位中的离子通过膜扩散的“泄漏”项反映在方程中。
式中:I(t)为刺激电流,C为细胞膜电容。
在实际情况中,很多图像质量较差,图像中存在大量噪声。这是终端设备在极端天气下不稳定造成的,很难在短时间内大规模优化终端设备。在Deng等[20]的研究中发现SNN更适合处理非实值像素二值图像,如N-MNIST数据集和DVS-CIFAR10,它们使用动态视觉传感器(dynamic vision sensor,DVS)进行扫描每个数据集。从静态数据集中的图像转换而来的脉冲事件格式数据会在图像中产生动态模糊。实验表明,真实图像不适合由SNN处理,而虚拟图像更适合由SNN计算。相比之下,模糊图像更接近于不真实的图像。当将帧图像转换为具有非实值像素的二值图像时,模糊帧图像转换后生成的非实值像素图像更适合于脉冲神经网络的计算,可以让更多的神经元受到刺激和释放反应。
1.3 注意力机制
在注意力机制被提出后,注意力机制在计算机领域得到了广泛的应用。在Dong等[21]的研究中提出了一种基于注意力机制的协同过滤系统,并设计了特征主题模型以从评论文本中提取项目的特征。注意力机制已广泛应用于行人识别和车辆重识别任务。在Pirazh[22]的研究中,将注意力机制集成到车辆重识别任务中,提出了一种双向自适应注意力(adaptive attention for vehicle reidentification,AAVER)模型,作用是通过全局外观路径捕捉车辆的宏观特征,通过使用方向条件对路径信息进行约束,通过该方式的部分外观形状进行学习,随后对区域性的不同的特征进行捕捉,即把注意力集中在最有用的信息关键点上。
本文使用的注意力机制是空间通道注意力机制[23](convolutional block attention module,CBAM)。CBAM广泛应用于计算机视觉领域。在Zhang等[24]的研究中就设计了一种基于稠密连接网络(densely connected networks,DenseNet)模型和 CBAM 模块的遥感图像算法。将CBAM与任意卷积神经网络一起叠加使用,其不仅不会对结构产生额外的负担,反而在训练过程实现了端到端的效果,对分类任务有显著的效果。本文将其融合到算法中,以最大限度地减少脉冲神经元在提取特征时的开销,并且在将SNN设计为卷积模块后,使用CBAM模块处理脉冲卷积神经网络效果极佳。同时,CBAM模块中面向通道的注意力机制对针对SNN的通道归一化优化效果影响不大。综上所述,使用CBAM对SNN有极好的效果。
加入CBAM模块后,整体算法网络结构如图4所示。
图4 算法网络结构
2 实验
2.1 数据集
在本文中数据集使用是开源数据集VeRi776[25]。VeRi776 包含 776 辆汽车的 50 000 多张图像。数据集图像是在现实世界采集得到的。采集过程中,通过约束监控场景进行捕获,同时进行了预先属性的标记。属性分类很多,如边框BBox、品牌、颜色和类型等。每辆车由不同数目摄像头(约2~18个)分别采集。不同采集条件可以分为视角、光照、分辨率和遮挡的不同等。同时数据集标注了大量的车牌信息如边框BBox、车牌号等。除此以外数据集包括了大量的摄像机时空信息,比如拍摄的时间戳、相邻摄像机之间的距离等。
为了模拟模糊场景,对数据集进行模糊处理。使用运动模糊、高斯噪声、椒盐噪声等模糊方法后,实验表明算法对加入单一类型噪声的模糊场景处理效果稳定;加入2种以上的噪声后,算法对其处理效果较差。因此,选择运动模糊作为增加噪声方法。
2.2 车辆重识别实验平台
实验中使用的实验平台为Zhu[26]搭建的AICity2020-VOC-ReID实验平台。该平台在NVIDIA AICity Challenge 2020 的车辆重识别赛道排名第2,无需使用任何其他数据和注释,针对车辆本身信息进行计算。在VeRi776数据集上,其性能也优于当前最先进的方法。
2.3 脉冲神经网络组件
在脉冲神经网络部分,本文采用了北京大学信息科学与技术学院数字媒体研究所多媒体学习小组和鹏城实验室共同开发的Spiking Jelly框架[17]。Spiking Jelly是一种基于 PyTorch的框架,使用PyTorch作为自动微分后端,使用C++和CUDA扩展来增强性能,同时支持CPU和GPU。该框架包含数据集、可视化和深度学习3个模块。目前,整体项目主要由北京大学媒体学习小组和鹏城实验室人工智能中心管理。
根据该框架的研究,在卷积过程中使用IFNode的效果更好,本文还使用了其他优化SNN的方法,如在脉冲神经网络中加入通道归一化操作[6]等。
2.4 对比实验与分析
实验中发现,在主干网络中串行加入SNN会显著降低算法的效果。原因可能是SNN的串行添加将向计算后获得的特征映射添加噪声。这是因为SNN从图像中提取模糊特征并丢弃清晰特征,但模糊场景的特征映射和清晰场景的特征共存,而这对车辆重识别算法极为不利。因此,该算法采用并行结构将SNN并行融合到算法中。融合后,该算法在VeRi776数据集上得到的Rank-1指标为89.7%,在处理清晰图像时仅下降了7.1%。这个结果是可以接受的,因为脉冲神经网络在处理清晰图像方面不如人工神经网络有效。但根据研究[15]显示,除了功耗优势外,脉冲神经网络在模糊情况下的效果可以与人工神经网络进行比较。实验中使用了预热机制,初始学习率为3.50×10−4,统一训练 250 个迭代次数(epoch)。接下来,在模糊条件下,将串行结构和并行结构与Baseline进行比较。
损失函数的训练图如图5所示,效果比较如表1所示。如图5所示,SNN串行结构损失函数的收敛效果较差,在模糊情况下振荡。如表1所示,与baseline相比,加入串行SNN结构后,Rank-1降低了10.4%,mAP降低了16.7%。然而,在添加并行SNN结构后,Rank-1降低了2.0%,mAP降低了5.6%。SNN并行结构与baseline之间的mAP和Rank-1指标差异在预期范围内。可以看出,并行SNN在收敛性和网络训练性能方面优于串行SNN。加入并行结构后,训练时间增加,收敛速度减慢。但是,与串行结构相比,并行结构的收敛效果更好,精度也会大大提高。
图5 Baseline和增加串行结构和并行结构的损失函数训练图
表1 baseline 与添加串行结构和并行结构 baseline 比较%
2.5 消融实验与分析
在添加CBAM模块后,我们进行了消融实验,以验证CBAM模块对SNN具有更好的适应性。损失函数的训练图如图6所示,效果比较如表2所示。
表2 比较 baseline、SNN 和 CBAM 模块的消融效果 %
图6 baseline、SNN 和 CBAM 消融实验中损失函数训练图
图6显示了添加SNN后算法的收敛效果变差。这是因为在SNN的并行训练过程中,需要额外计算每个神经元充电和放电的复位过程。在添加CBAM后收敛速度变慢,但整体收敛效果变好。
如表2所示,将CBAM添加到baseline后,Rank-1提升2.2%,mAP提升5.4%。然而,在使用SNN时将CBAM添加到Baseline后,Rank-1提升2.7%,mAP提升7.9%。可以看出,CBAM模块添加到使用SNN的baseline中,相比于将CBAM添加到baseline时,在Rank-1和mAP指标方面提升更明显,证明了SNN比ANN更适合使用CBAM。在Rank-1和mAP指标中,添加SNN后,Baseline和具有CBAM的Baseline的准确性降低在预期范围内。与清晰情景相比,模糊情景中的指标下降幅度减小。这也证明了SNN与基于ANN的Baseline相比,在处理模糊场景时的性能差异小于在处理清晰场景时的性能差异。
3 结论
本文提出了一种融合SNN和CBAM的车辆重识别模型。融合SNN后,车辆重识别算法可以保持较低的功耗,并且在性能上缩小了与ANN的差距。CBAM模块则进一步提高了车辆重识别算法的重识别效果。实验结果表明,将SNN融合到车辆重识别算法中后,对算法效果的影响是可以接受的,CBAM对SNN的影响是很好的。同时,文中算法需要在某些方面进行改进,以便在灵活性方面获得更好的性能,例如损失函数的收敛性。今后,我们将针对模糊场景优化损失函数的收敛性,并设计完全基于SNN的车辆重识别算法,以SNN取代整个网络。