基于剪枝卷积神经网络的目标检测方法

文档序号:24876483发布日期:2021-04-30 12:52阅读:128来源:国知局
基于剪枝卷积神经网络的目标检测方法

本发明属于图像处理技术领域,更进一步涉及图像识别技术领域中的一种基于剪枝卷积神经网络的目标检测方法。本发明可用于在嵌入式设备上检测自然图像中的静止目标。



背景技术:

现有的大量目标检测方法在公共数据集中获得了非常高的分数,但在现实任务中目标检测仍然存在很多挑战,像在移动端进行部署等。例如,在嵌入式设备中部署网络进行目标检测,将有助于无人机探测或者区域安防。然而,由于现有的深度学习目标检测模型参数庞大,运算消耗时间长,实时内存消耗大,所以现有的目标检测网络并不适用于实际中在移动设备的部署。现有目标检测技术的效率和准确率往往不可兼得。二阶检测模型如fasterr-cnn有着很高的准确性,同时也带来了巨大的计算量;一阶检测模型如ssd虽然计算速度较快,但是准确率不如二阶段检测模型。

北京航空航天大学在其申请的专利文献“构建用于目标检测的网络的方法和目标检测方法及系统”(专利申请号cn202010656620.6,公开号cn112036400a)中公开了一种目标检测方法。该方法的步骤为,第一步,使用第一深度学习网络提取图像的浅层特征图;第二步,使用第二深度学习网络在图像的浅层特征图上识别目标候选区域和目标尺寸分类,该目标尺寸分类指示目标大小与目标候选区域的大小之间的大小关系;第三步,根据目标候选区域和目标尺寸分类,选择最终候选区域对应的浅层特征图;第四步,使用第三深度学习网络从最终候选区域对应的浅层特征图上提取用于目标检测的深层特征图,并根据提取的深层特征图进行目标识别和定位。此方法提高了对图像的目标检测速度。但是,该方法仍然存在的不足之处是:由于该方法通过构建并训练三个深度学习网络进行目标检测,训练时为了使网络的损失函数收敛,使得网络存在参数冗余,运算量大的问题,不满足在嵌入式设备上部署的需求。

北京迈格威科技有限公司在其申请的专利文献“神经网络压缩方法、图像处理方法及装置”(专利申请号cn201910891998.1,公开号cn110717578a)中公开了一种神经网络压缩方法。该方法的步骤为,第一步,输入训练样本进行特征提取,基于神经网络的每个特征提取层的输出以及特征提取层对应的偏好参数得到调整输出,并正向传播得到网络输出结果,其中,偏好参数与神经网络的多个特征提取层一一对应;第二步,根据训练样本对应的标识以及网络输出结果,通过损失函数得到损失值;第三步,基于损失值,调整神经网络的权重以及偏好参数;第四步,删除小于或等于第一阈值的偏好参数及其对应的特征提取层,得到压缩后的神经网络。通过设置偏好参数,偏好参数较小,说明对应的特征提取层对神经网络精度的提升较小,将该特征提取层删除以精简神经网络。该方法能够减小神经网络模型的大小。但是,该方法仍然存在的不足之处是:删除原始网络中的小于阈值的特征提取层,由此带来的原始网络卷积层总数的改变会影响目标检测精度。



技术实现要素:

本发明的目的在于针对上述现有技术存在的不足,提出一种基于剪枝卷积神经网络的目标检测方法,解决现有目标检测方法中卷积神经网络复杂带来的目标检测速度慢和检测目标精度差的问题。

实现本发明目的的技术思路是,对训练好的卷积神经网络进行剪枝,经过多次的分层删除网络中存在的冗余卷积核,得到优选的修剪后目标检测卷积神经网络,对该网络进行微调,得到微调后的目标检测网络,既保证网络整体的结构不改变,又减小了目标检测卷积神经网络的大小,使得微调后的目标检测网络能够对目标进行快速检测。

本发明的实现的具体步骤如下:

(1)对卷积神经网络进行敏感度分析:

(1a)从训练好的原始目标检测卷积神经网络中选取一个未选过的卷积层,利用l1范数公式,计算所选卷积层中每个卷积核的l1范数,对l1范数进行升序排列;

(1b)设置修剪比例为90%;

(1c)按照修剪比例依次删除升序排列中l1范数对应的卷积核,得到修剪后的目标检测卷积神经网络;

(1d)将修剪前的目标检测卷积神经网络所使用的测试集,输入到修剪后的目标检测卷积神经网络中进行目标检测,输出检测结果;

(1e)计算修剪后的目标检测卷积神经网络检测目标的准确率;

(1f)判断准确率是否大于阈值,若是,则将当前的修剪比例作为所选卷积层的敏感度后执行步骤(1g),否则,将当前的修剪比例减小10%后执行步骤(1c);

(1g)判断是否选完所有的卷积层,若是,则执行步骤(2),否则,执行步骤(1a);

(2)生成剪枝序列:

(2a)对训练好的原始目标检测卷积神经网络中的每个卷积层,在小于或等于该卷积层敏感度的值中随机选取一个值,作为该卷积层的修剪百分比,将所有层的修剪百分比按照卷积层的顺序连接成一个剪枝序列;

(2c)采用与步骤(2a)相同的方法,得到至少1000个剪枝序列;

(3)对网络进行剪枝:

(3a)采用每种剪枝序列分别修剪训练好的原始目标检测卷积神经网络,得到对应每个剪枝序列的目标检测卷积神经网络;

(3b)计算每种修剪后目标检测卷积神经网络的flops;

(3c)保存flops等于目标值的修剪后目标检测卷积神经网络;

(4)选择修剪后目标检测卷积神经网络:

(4a)将原始目标检测卷积神经网络所使用的训练集,输入到每种保存的目标检测卷积神经网络的中,关闭反向传播,迭代更新bn层参数至少100次,得到更新后的目标检测卷积神经网络;

(4b)将原始目标检测卷积神经网络所使用的测试集,输入到每种更新后的卷积神经网络中进行目标检测,输出检测结果并计算每种更新后的目标检测卷积神经网络检测目标的准确率,将准确率最高的目标检测卷积神经网络作为目标检测网络;

(5)对网络进行微调:

将原始目标检测卷积神经网络所使用的训练集,输入到目标检测网络中,更新迭代目标检测网络中的参数至少150次,得到微调后的目标检测网络;

(6)对目标进行检测:

将含有待检测目标的图片输入到微调后的目标检测网络中,输出图片中待检测目标的类别和目标所在的外接矩形框位置。

与现有技术相比,本发明具有以下优点:

第一,本发明对原始训练好的目标检测卷积神经网络进行敏感度分析,利用生成的剪枝序列对该网络进行剪枝,这种剪枝处理仅删除了原始网络中每个卷积层的冗余卷积核,并未改变原始网络中卷积层的总数,克服了现有技术中为了提高目标检测的速度,采用删除原始网络中的小于阈值的特征提取层,而带来的原始网络卷积层总数改变影响目标检测精度的问题,使得本发明具有目标检测精度高,检测准确的优点。

第二,本发明在对原始训练好的目标检测卷积神经网络进行修剪后,再对修剪后网络进行微调,将得到微调后的目标检测网络作为对目标进行检测的网络,克服了现有技术中为了使目标检测网络的损失函数收敛,而带来的目标检测网络参数冗余,运算量大,影响目标检测速度的问题,使得本发明具有运算量小,目标检测速度快,能够实时识别目标的优点。

附图说明

图1为本发明的流程图;

图2为本发明中敏感度分析的流程图。

具体实施方式

下面结合附图对本发明的做进一步的描述。

参照图1对本发明的实现步骤做进一步的描述。

步骤1,对卷积神经网络进行敏感度分析。

参照图2对本发明的敏感度分析的步骤做进一步的描述。

第1步,从训练好的原始目标检测卷积神经网络中选取一个未选过的卷积层,利用l1范数公式,计算所选卷积层中每个卷积核的l1范数,对l1范数进行升序排列;

所述l1范数公式为:其中,||·||1表示1范数操作,wi,j表示第i个卷积核中第j个权重的值,∑表示求和操作,j=1,2,…,n,n表示第i个卷积核中权重的总数。

第2步,设置修剪比例为90%。

第3步,按照修剪比例依次删除升序排列中l1范数对应的卷积核,得到修剪后的目标检测卷积神经网络;

第4步,将修剪前的目标检测卷积神经网络所使用的测试集,输入到修剪后的目标检测卷积神经网络中进行目标检测,输出检测结果。

第5步,计算修剪后的目标检测卷积神经网络检测目标的准确率。

第6步,判断准确率是否大于阈值,若是,则将当前的修剪比例作为所选卷积层的敏感度后执行步骤1的第7步,否则,将当前的修剪比例减小10%后执行步骤1的第3步;

在本发明实施例中,分别设置准确率的阈值为原始目标检测卷积神经网络准确率的91%、93%、95%、97%、99%,其中使敏感度大于0的准确率为原始目标检测卷积神经网络准确率的91%,93%,95%,选择其中的最大值,即原始目标检测卷积神经网络准确率的95%为本发明实施例中准确率的阈值。

第7步,判断是否选完所有的卷积层,若是,则执行步骤2,否则,执行步骤1的第1步。

步骤2,生成剪枝序列。

第1步,对训练好的原始目标检测卷积神经网络中的每个卷积层,在小于或等于该卷积层敏感度的值中随机选取一个值,作为该卷积层的修剪百分比,将所有层的修剪百分比按照卷积层的顺序连接成一个剪枝序列。

第2步,采用与第一步相同的方法,得到至少1000个剪枝序列;

需要得到足够多的剪枝序列,方便后续从所有的剪枝序列中选择最优的剪枝序列。

步骤3,对网络进行剪枝。

第1步,采用每种剪枝序列分别修剪训练好的原始目标检测卷积神经网络,得到对应每个剪枝序列的目标检测卷积神经网络;

每个剪枝序列中包含原始目标检测卷积神经网络每个卷积层的修剪百分比,按照该修剪百分比,依次删除该层升序排列的l1范数对应的卷积核,对所有卷积层进行修剪后得到该剪枝序列对应的目标检测卷积神经网络。

第2步,计算每种修剪后目标检测卷积神经网络的flops(floating-pointoperationspersecond);

flops为浮点运算数,用来衡量目标检测卷积神经网络的复杂度。

第3步,保存flops等于目标值的修剪后目标检测卷积神经网络。

所述目标值指的是,根据修剪后的目标检测卷积神经网络精度和速度的要求设置的一个浮点数;

本发明实施例中,设置目标值为原始目标检测卷积神经网络flops的50%。

步骤4,选择修剪后目标检测卷积神经网络。

第1步,将原始目标检测卷积神经网络所使用的训练集,输入到每种保存的目标检测卷积神经网络的中,关闭反向传播,迭代更新bn(batchnormalization)层参数至少100次,得到更新后的目标检测卷积神经网络。

第2步,将原始目标检测卷积神经网络所使用的测试集,输入到每种更新后的卷积神经网络中进行目标检测,输出检测结果并计算每种更新后的目标检测卷积神经网络检测目标的准确率,将准确率最高的目标检测卷积神经网络作为目标检测网络。

步骤5,对网络进行微调。

将原始目标检测卷积神经网络所使用的训练集,输入到目标检测网络中,更新迭代目标检测网络中的参数至少150次,得到微调后的目标检测网络;

修剪后的目标检测网络准确率相较于原始目标检测卷积神经网络有一定的降低,通过微调可提高目标检测网络检测目标的准确率。

步骤6,对目标进行检测。

将含有待检测目标的图片输入到微调后的目标检测网络中,输出图片中待检测目标的类别和目标所在的外接矩形框位置。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1