一种基于均匀泊松编码的脉冲神经网络目标检测方法
未命名
08-05
阅读:96
评论:0

1.本发明涉及类脑智能、计算机视觉领域,是一种基于均匀泊松编码的脉冲神经网络的目标检测方法。
背景技术:
2.人工神经元最初在上世纪40、50年代被提出,其目的是为了模拟生物神经元和大脑功能,从而实现智能学习。随着21世纪计算机硬件和软件技术的飞速发展,人工神经网络逐渐成为一种有效的计算模型,在图像识别、自然语言处理、机器人控制、医疗检测等领域取得了重要成果。但随着应用模型的不断扩大,其所需的功耗和内存成为限制其发展的瓶颈。例如,alphago预测一场围棋比赛需要1202块cpu和176块gpu,这对于应用于边缘设备和存储空间有限的场景来说是一个巨大的挑战。
3.在这种背景下,脉冲神经网络(snn)引起了人们的广泛关注。作为类脑智能的重要研究领域之一,脉冲神经网络与人工神经网络在本质上存在显著差异。脉冲神经网络中的神经元模拟人脑中的神经元,在接收到输入后并不直接发放信号,只有当累积输入大于等于阈值时才会产生一个离散的脉冲信号,通过突触传递给下一个神经元。这种离散信号的产生和传递过程更具生物可解释性。同时,由于输出具有离散特征,可以在基于事件驱动的硬件上运行。相较于传统的时钟驱动处理器,事件驱动的硬件仅在发生事件时才会执行相应操作,在功耗方面具有显著优势。以ibm公司的truenorth芯片为例,其能耗仅为传统微处理器的3-4个数量级。尽管脉冲神经网络具有低功耗、高生物可解释性等特点,但其难以进行训练,限制了其发展。
4.目标检测是一项重要的计算机视觉技术,它的目的是通过对图像或视频中的目标进行分析和识别来提高计算机视觉系统的智能化水平。随着人工神经网络技术的发展,目标检测技术在智能驾驶、医疗等领域的应用越来越广泛。例如,在智能驾驶领域,目标检测技术可以帮助汽车系统识别周围的交通工具和行人,提高驾驶安全性。在医疗领域,目标检测技术可以帮助医生快速定位疾病的部位,辅助医生准确诊断病情。然而,传统的目标检测方法通常需要大量的功耗和存储空间,难以应用于边缘设备上,这对于一些资源受限的场景可能不太适用。因此,需要探索更加轻量化、高效的目标检测方法,以适应边缘设备的要求。
5.利用脉冲神经网络在类脑硬件上低功耗的特点可以解决传统目标检测因为功耗和空间而难以应用到边缘设备上的问题。无论是在脉冲神经网络领域还是目标检测领域都是一个比较新的尝试,2020年kim等人进行第一次spiking-yolo的尝试,实验证明了这个方向的可行性。但受限于ann转snn(ann-snn)训练法的误差,需要在3000个时间步长以上的情况下才能有较好表现。此外大多数snn因为泊松编码会产生一定的误差所以选择基于图像直接输入,这给搭配硬件带来了很大的挑战。
技术实现要素:
6.本发明的目的是:提供一种基于泊松编码的脉冲神经网络目标检测方法,构造脉冲神经网络模型实现视频目标检测算法,利用脉冲神经网络在专属硬件上具有较低功耗的特点,为目标检测算法的边缘设备应用提供软件方案。
7.为了实现该目的,本发明采用如下技术方案:
8.一种基于均匀泊松编码的脉冲神经网络目标检测方法,包括如下步骤:
9.步骤s1,选取yolov4-tiny网络为ann模型。在图像预处理阶段,使用多通道泊松编码对图像进行编码,一共产生512个时间步长的泊松编码。泊松编码后的图片按照三种维度进行数据增强:原有编码进行叠加,在全部时间步长范围内对随机区域进行丢弃或填充,在随机时间步长内对随机事件区域进行丢弃或填充。对ann模型进行预调整,最大池化用平均池化进行替代。
10.步骤s2,对ann模型进行训练,得到权重。
11.步骤s3,使用ann模型进行预测,得到ann各激活层神经元的输出。共预测5000张不同的图片,每个神经元在5000个输出中选取99.9%峰位的正激活值和负激活值作为后续snn的阈值和ann中leak-relu激活函数的阈值。
12.步骤s4,使用带阈值的leak-relu激活函数,对ann模型在原有权重上进行继续训练,得到最新的ann权重。leak-relu激活函数描述为:
[0013][0014]
其中x表示为输入,a表示为leak-relu激活函数在负激活部分的斜率,表示ann中的99.9%峰位的正激活,表示ann中的99.9%峰位的负激活。
[0015]
步骤s5,使用软复位改后snn中if神经元为:
[0016][0017][0018]vl
(t)=v
l
(t-1)+w
l
x
l-1
(t)+b
l-x
l
(t) (4)
[0019]
式中,向量表示阈值,向量w
l
,b
l
表示第l层权重与偏置,向量表示第l层神经元在t时刻发放脉冲前的膜电位,向量v
l
(t-1)表示第l层所有神经元在t-1时刻的剩余膜电位,向量x
l-1
(t)表示t时刻第l-1层神经元释放的脉冲,同时也是第l层的输入;就硬复位神经元而言,在发出脉冲后,膜电位会立即恢复到静息电位。因此,硬复位神经元忽略放电瞬间的剩余电位,导致转换后snn的准确性下降。软复位神经元避免了上述问题,被广泛应用于分类任务的各种模型中,如vgg16、resnet-20。
[0020]
添加负阈值和负激活。传统的if神经元只能应对正激活,而较为复杂的网络中往往使用leak-relu激活函数,如果使用传统的if神经元会忽略负激活,预测效果大大降低。
改进if神经元加入负激活和负阈值,同时通过设置初始膜电压、神经元偏置以减小ann-snn法所带来的误差。最终改进后的神经元膜电位v
l
(t)描述为:
[0021][0022][0023][0024]
设置初始阈值当神经元输入为正时当输入为负时
[0025]
步骤s6,搭建snn目标检测模型,选择用多通道泊松编码将图片变成0,1脉冲,并将其均匀分布作为输入,将ann模型中leak-relu函数用改进后的if神经元代替,即可完成基于脉冲神经神经网络的目标检测模型搭建。
[0026]
本发明以yolov4-tiny为模型基础,使用ann-snn的训练方法。在ann训练中使用了泊松编码对图像进行预处理,减少了预测时使用泊松编码而导致的信息丢失同时增加了系统的鲁棒性以及对遮挡物体的识别。对ann模型中原有leak-relu函数和snn模型中if神经元进行改进,进一步减少ann-snn而产生的误差,提升snn的预测准确性。
附图说明
[0027]
图1是基于ann的yolov4-tiny模型结构示意图;
[0028]
图2是基于snn的yolov4-tiny模型结构示意图;
[0029]
图3是原yolov4-tiny预测结果示意图;
[0030]
图4是基于snn的yolov4-tiny预测结果示意图;
[0031]
图5是脉冲神经网络进行目标检测具体流程图
[0032]
图6是泊松编码前原图
[0033]
图7是泊松编码后不同时间步长下示意图
[0034]
图8是转换误差示意图
[0035]
图9是平移后转化误差示意图
具体实施方式
[0036]
下面结合具体实施例,进一步阐述本发明。应理解,这些实施例仅用于说明本发明而不用于限制本发明的范围。此外应理解,在阅读了本发明讲授的内容之后,本领域技术人员可以对本发明作各种改动或修改,这些等价形式同样落于本技术所附权利要求书所限定的范围。
[0037]
本发明选取yolov4-tiny经典目标检测网络模型为基础,在ann训练阶段加入泊松编码数据增强同时改进传统的leak—relu激活函数,训练得到权重进行保存。snn模型在
yolov4-tiny的基础上进行调整,使用均匀泊松编码作为输入,改进后的if神经元替代ann中的leak-relu激活函数并把maxpool替换成avgpool,最终基于snn的目标检测模型结构如图2所示。利用ann训练得到的权重应用于snn模型中,最终实现使用脉冲神经网络进行目标检测。具体流程见图5。
[0038]
一种基于均匀泊松编码的脉冲神经网络目标检测方法,包括如下步骤:
[0039]
步骤s1,选取yolov4-tiny网络为ann模型。在图像预处理阶段,使用多通道泊松编码对图像进行编码,一共产生512个时间步长的泊松编码。泊松编码后的图片按照三种维度进行数据增强:原有编码进行叠加,在全部时间步长范围内对随机区域进行丢弃或填充,在随机时间步长内对随机事件区域进行丢弃或填充。对ann模型进行预调整,最大池化用平均池化进行替代。
[0040]
步骤s2,对ann模型进行训练,得到权重。
[0041]
步骤s3,使用ann模型进行预测,得到ann各激活层神经元的输出。共预测5000张不同的图片,每个神经元在5000个输出中选取99.9%峰位的正激活值和负激活值作为后续snn的阈值和ann中leak-relu激活函数的阈值。
[0042]
步骤s4,使用带阈值的leak-relu激活函数,对ann模型在原有权重上进行继续训练,得到最新的ann权重。leak-relu激活函数描述为:
[0043][0044]
其中x表示为输入,a表示为leak-relu激活函数在负激活部分的斜率,表示ann中的99.9%峰位的正激活,表示ann中的99.9%峰位的负激活。
[0045]
步骤s5,使用软复位改后snn中if神经元为:
[0046][0047][0048]vl
(t)=v
l
(t-1)+w
l
x
l-1
(t)+b
l-x
l
(t) (4)
[0049]
式中,向量表示阈值,向量w
l
,b
l
表示第l层权重与偏置,向量表示第l层神经元在t时刻发放脉冲前的膜电位,向量v
l
(t-1)表示第l层所有神经元在t-1时刻的剩余膜电位,向量x
l-1
(t)表示t时刻第l-1层神经元释放的脉冲,同时也是第l层的输入。就硬复位神经元而言,在发出脉冲后,膜电位会立即恢复到静息电位。因此,硬复位神经元忽略放电瞬间的剩余电位,导致转换后snn的准确性下降。软复位神经元避免了上述问题,被广泛应用于分类任务的各种模型中,如vgg16、resnet-20。
[0050]
添加负阈值和负激活。传统的if神经元只能应对正激活,而较为复杂的网络中往往使用leak-relu激活函数,如果使用传统的if神经元会忽略负激活,预测效果大大降低。改进if神经元加入负激活和负阈值,同时通过设置初始膜电压、神经元偏置以减小ann-snn
法所带来的误差。最终改进后的神经元膜电位v
l
(t)描述为:
[0051][0052][0053][0054]
设置初始阈值当神经元输入为正时当输入为负时
[0055]
步骤s6,搭建snn目标检测模型,选择用多通道泊松编码将图片变成0,1脉冲作为输入,将ann模型中leak-relu函数用改进后的if神经元代替,即可完成基于脉冲神经神经网络的目标检测模型搭建。
[0056]
yolov4-tiny网络结构分为三个部分:骨干网络部分、特征融合部分、yolo head部分,如图1所示。
[0057]
在数据集选取方面,选取voc2007+voc2012数据集,其中训练数据集一共19353张,测试数据集一共2140张。数据集包含了20个常见的物体类别,如人、汽车、飞机、狗、猫等,并提供了大量的图像和相应的物体标注信息,包括每个物体的边界框和类别。每个图像的分辨率大小不同从100*100到500*500不等。
[0058]
数据集编码选择泊松编码,泊松编码的基本思路是,通过对图像的概率分布进行建模,计算每个像素点的概率,将概率高的像素点编码为短码,概率低的像素点编码为长码。泊松编码不仅考虑了像素点的概率分布,还考虑了像素点与相邻像素点的关系,从而使得编码结果更加紧凑,是一种无损压缩图像的编码方法。泊松编码服从泊松分布概率密度公式:
[0059][0060]
式中,x是事件在固定时间或空间内发生的次数,n是具体的次数,λ是事件在单位时间或单位空间内平均发生的次数,e是自然对数的底数。
[0061]
当输入一张图片,将图片上每个像素点除以255会得到每个时间步长该像素点发放脉冲的概率,再经过泊松编码每个时间步长上的像素点都会变成0、1脉冲。设置时间步长为255,再将每个时间步长上的脉冲进行叠加最终进行归一化就会得到于原图片。图6为原图,图7分别为1、100、150、200、255和时间步长叠加后得到的新图片。实验证明随着时间步长的增加经过泊松编码得到的新图片与原图片相似度会在99%以上。
[0062]
利用255个时间步长的脉冲矩阵,在随机时间步长维度进行随机丢弃或则增加脉冲、全部时间步长中某区域脉冲矩阵进行丢弃或者增加脉冲、原有脉冲这三种方式进行叠加脉冲得到编码后图片进行数据增强。
[0063]
对ann模型微调之后,将ann进行训练,先验框大小通过kmeans聚类算法得到的,输
入图片大小为[416,416],初始学习率为0.01,最小学习率为0.0001,使用随机梯度下降(sgd)优化器进行参数优化。
[0064]
训练完成后得到,将权重进行保存用于后续snn模型中。使用训练好的ann模型进行预测,选择5000张不同图片来进行预测,记录每个激活神经元的的输出。选取每个神经元的99.9%峰位的正激活或和负激活,设置为leak-relu的正阈值和负阈值。改正激活函数后的ann模型在原有权重上进行继续训练,得到最终的权重。
[0065]
对if神经元进行改进,在if神经元加入对负阈值和负激活,改进之后if神经元发放公式为:
[0066][0067]
得到在t时刻神经元膜电压为:
[0068][0069]
将第l层神经元模电压在t个时间步长进行累加可得到:
[0070][0071]
令向量表示第l-1层神经元的平均输出,初始膜电位此处设置为0。可得第l层的平均输出z
l
:
[0072][0073]
根据神经元发放脉冲特性,只有当膜电位大于等于正阈值或者膜电小于等于负阈值时才会发放脉冲,v
l
(t)为剩余膜电位不会影响脉冲发放,最终平均输出可以表示为:
[0074][0075]
对比改进后的leak-relu激活函数:得到两者误差,设正输出部分负输出部分
[0076][0077]
设置初始阈值当神经元输入为正时当输入为负时此时可以得到if神经元的输出和leak-relu的输出误差最小。其中图8表示改进前误差,图9表示改进后误差。
[0078]
将改进之后的if神经元替换激活函数leak-relu,图像输入部分使用泊松编码进编码,将编码后的脉冲在时间步长内均匀分布,即可完成基于脉冲神经网络的目标检测系统搭建。
[0079]
实验结果分析:
[0080]
通过改进snn中if神经元和ann中leak—relu激活函数。ann预测的map值如图3所示。将snn目标检测在相同平均精度map情况下预测时间步长从2048缩短到512,大大减少了预测时间,map从0.512提升到0.591。同时在分类任务中也证明了此法的可行性和通用性。以resnet-20模型在cifar18数据集下为例,32个时间步长下准确率就达到了94.5%对比之前256步长下才能得到94.3%准确率。在ann中加入泊松编码数据增强进行训练,在时间步长512下map保持在0.582,在时间步长1024下map达到0.639,如图4所示。
[0081]
综上所述,通过改进if神经元,leak—relu激活函数,ann训练中加入泊松编码三项举措可以有效提升基于snn目标检测的平均精度同时减少预测所需的时间步长。对比spiking-yolo在未使用泊松编码的的情况下,相同平均精度所需的时间步长从3000减小到256,在相同时间步长512的情况下平均精度map从0.43提高到了0.591。在使用泊松编码后未因为编码而大大降低预测能力,平均精度map保持在0.582。
技术特征:
1.一种基于均匀泊松编码的脉冲神经网络目标检测方法,其特征在于包括如下步骤:步骤s1,选取yolov4-tiny网络为ann模型,在图像预处理阶段,使用多通道泊松编码对图像进行编码,一共产生512个时间步长的泊松编码;泊松编码后的图片按照三种维度进行数据增强:原有编码进行叠加,在全部时间步长范围内对随机区域进行丢弃或填充,在随机时间步长内对随机事件区域进行丢弃或填充;对ann模型进行预调整,最大池化用平均池化进行替代;步骤s2,对ann模型进行训练,得到权重;步骤s3,使用ann模型进行预测,得到ann各激活层神经元的输出;共预测5000张不同的图片,每个神经元在5000个输出中选取99.9%峰位的正激活值和负激活值作为后续snn的阈值和ann中leak-relu激活函数的阈值;步骤s4,使用带阈值的leak-relu激活函数,对ann模型在原有权重上进行继续训练,得到新的ann权重。leak-relu激活函数描述为:其中x表示为输入,a表示为leak-relu激活函数在负激活部分的斜率,表示ann中的99.9%峰位的正激活,表示ann中的99.9%峰位的负激活;步骤s5,使用软复位改后snn中if神经元为:步骤s5,使用软复位改后snn中if神经元为:v
l
(t)=v
l
(t-1)+w
l
x
l-1
(t)+b
l-x
l
(t) (4)式中,向量表示阈值,向量w
l
,b
l
表示第l层权重与偏置,向量表示第l层神经元在t时刻发放脉冲前的膜电位,向量v
l
(t-1)表示第l层所有神经元在t-1时刻的剩余膜电位,向量x
l-1
(t)表示t时刻第l-1层神经元释放的脉冲,同时也是第l层的输入;添加负阈值和负激活;改进if神经元加入负激活和负阈值,同时通过设置初始膜电压、神经元偏置以减小ann-snn法所带来的误差,最终改进后的神经元膜电位v
l
(t)描述为:(t)描述为:
设置初始阈值当神经元输入为正时当输入为负时步骤s6,搭建snn目标检测模型,选择用多通道泊松编码将图片变成0,1脉冲,使其均匀分布作为输入,将ann模型中leak-relu函数用改进后的if神经元代替,完成基于脉冲神经神经网络的目标检测模型搭建。
技术总结
本发明提供了一种基于均匀泊松编码的脉冲神经网络目标检测方法,构造脉冲神经网络模型实现视频目标检测算法,利用脉冲神经网络在专属硬件上具有较低功耗的特点,为目标检测算法的边缘设备应用提供软件方案。本发明以YOLOv4-tiny为模型基础,使用ANN-SNN的训练方法。在ANN训练中使用了泊松编码对图像进行预处理,减少了预测时使用泊松编码而导致的信息丢失同时增加了系统的鲁棒性以及对遮挡物体的识别。对ANN模型中原有Leak-ReLU函数和SNN模型中IF神经元进行改进,进一步减少ANN-SNN而产生的误差,提升SNN的预测准确性。提升SNN的预测准确性。提升SNN的预测准确性。
技术研发人员:韩芳 黄庆杰 王琦少 王青云
受保护的技术使用者:北京航空航天大学
技术研发日:2023.05.10
技术公布日:2023/8/4
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/