基于国产智能芯片K210的yolov3目标检测方法及电子装置[发明专利]

(19)中华人民共和国国家知识产权局
(12)发明专利申请
(10)申请公布号 (43)申请公布日 (21)申请号 202011490588.5
(22)申请日 2020.12.16
(71)申请人 中国科学院软件研究所
地址 100190 北京市海淀区中关村南四街4
(72)发明人 苗玉霞 于佳耕 邰阳 侯朋朋 
武延军 
(74)专利代理机构 北京君尚知识产权代理有限
公司 11200
代理人 陈艳
(51)Int.Cl.
G06K  9/32(2006.01)
G06N  3/04(2006.01)
G06N  3/08(2006.01)
(54)发明名称基于国产智能芯片K210的yolov3目标检测方法及电子装置(57)摘要本发明公开了一种基于国产智能芯片K210的yolov3实时目标检测方法及电子装置,包括模型训练、模型量化和剪枝、模型转换、新增算子、实现yolo层、编译、烧录。首先根据K210开发板所支持的算子修改yolov3模型的backbo
ne;然后使用PASCAL  VOC2012和PASCAL  VOC2007数据集训练模型,并进行剪枝;将保存好的模型转换为K210可以识别加载的格式,最后由K210摄像头采集到的图像,经过模型得到feature  map,对得到的feature  map通过yolo层进行激活、nms等操作得到图像中物体的位置和类别。本发明对yolov3算法进行剪枝、量化后使得模型大小减少到原来的11%;且利用K210软件栈执行硬件加速后运行
速度相比于cpu有所提升。权利要求书2页  说明书6页  附图4页CN 112580627 A 2021.03.30
C N  112580627
A
1.一种基于国产智能芯片K210的yolov3目标检测方法,其步骤包括:
1)采用MobileNet模型结构替代yolov3模型中的darknet‑53层网络结构,并减少网络中卷积核的数量与网络层数,得到调整后yolov3模型;
2)使用若干训练样本图像对调整后yolov3模型进行稀疏化训练,并对稀疏化训练后yolov3模型进行剪枝操作,得到最终yolov3模型;
3)将依据最终yolov3模型生成的.h5模型文件,转化为kmodel模型文件,生成kmodel模型,并在国产智能芯片K210的软件栈中新增算子,其中算子包括:kpu_logistic算子;
4)将待检测数据转化为输入图像后,输入主干网络为MobileNet模型结构的kmodel模型中,得到特征图,并通过kpu_logistic算子,对特征图中每个网格预测的B个边界框的中心坐标与相应置信度及C个类别概率进行激活,计算特征图中每一边界框的中心坐标、宽高、相应置信度及各类别的概率值,其中B≥1,C≥1;
5)根据输入图像的大小和特征图的尺寸,计算每个边界框在输入图像上的位置,得到目标检测结果。
2.如权利要求1所述的方法,其特征在于,使用若干训练样本图像对调整后yolov3模型进行稀疏化训练之前,对训练样本图像进行预处理;所述预处理的策略包括:
1)依据国产智能芯片K210对于神经网络模型输入和输出特征图存储空间大小的要求,以及根据yolov3模型对于输入图像的宽高限制,调整训练样本图像的尺寸;
2)对训练样本图像的真实值与标签进行适应性地缩放。
3.如权利要求1所述的方法,其特征在于,在keras框架下,对调整后yolov3模型进行稀疏化训练;所述剪枝操作包括:删除权重张量中的部分值和减少神经网络层之间的连接数量。
4.如权利要求1所述的方法,其特征在于,通过以下步骤转化为kmodel模型文件:
1)通过tensorflow的tflite_convert命令,将.h5模型文件转化为tflite模型文件;
2)使用K210模型转化工具nncase,将tflite模型转化为kmodel模型文件。
5.如权利要求1所述的方法,其特征在于,待检测数据包括:视频数据或图像数据;通过调用dvp模块获取所述视频数据;通过以下步骤将图像数据转化为输入图像:
1)将任意图像的大小调整为kmodel模型所需要的大小;
2)将图像格式通过代码转换为国产智能芯片K210可加载的.c文件。
6.如权利要求1所述的方法,其特征在于,输入图像输入主干网络为MobileNet模型结
构的kmodel模型中时,边界框的数量B
N =w
I
*h
I
*a,kmodel模型的output数量N
=B
N
*(c+4+
1),其中w
I 为kmodel模型中yolo层的宽,h
I
为kmodel模型中yolo层的高,a为锚点数量,c为类
别数量。
7.如权利要求1所述的方法,其特征在于,计算每个边界框在输入图像上的位置之前,删除相应置信度低于设定置信度阈值的边界框;计算每个边界框在输入图像上的位置之后,根据非极大值抑制算法获取各边界框的非极大值抑制值,并删除低于非极大值抑制阈值的边界框。
8.如权利要求1所述的方法,其特征在于,所述算子还包括:kpu_quant_resize_ nearest_neighbor算子
和kpu_kmodel_channelwise_dequantize算子。
9.如权利要求8所述的方法,其特征在于,通过以下步骤将待检测数据、kmodel模型、算
子与目标检测结果烧录在国产智能芯片K210的开发板上:
1)创建yolov3的工作空间,并将待检测数据、kmodel模型、算子与目标检测结果放入工作空间进行编译,生成一个bin文件;
2)使用kflash,将bin文件烧录在国产智能芯片K210的开发板上。
10.一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行如权利要求1‑9中任一所述方法。
基于国产智能芯片K210的yolov3目标检测方法及电子装置
技术领域
[0001]本发明涉及目标检测技术领域,具体涉及一种基于国产智能芯片K210的yolov3实时目标检测方法及电子装置。
背景技术
[0002]近年来,随着人工智能领域的快速发展,卷积神经网络已经成为不同视觉任务的主要研究方法,例如目标检测、图像分类等,为了提高模型的表达能力,卷积神经网络模型规模越来越大,参数量越来越多。然而更大的网络模型需要更多的计算资源,例如一个152层的ResNet有超过6000万个参数,在推理224*224大小的图像时需要超过20千兆的浮点运算。这在资源受限的终端设备上运行是不现实的。
[0003]卷积神经网络在实际应用部署中主要受以下限制:
[0004]1)模型大小的限制:卷积神经网络强大的表达能力来自其数百万个可训练参数。这些参数以及网络结构信息需要存储在磁盘上,并在推理期间加载到内存中。例如,存储一个典型的在ImageNet上训练过的CNN要消耗300MB以上空间,这对于资源受限的智能芯片端是一大资源负担。
[0005]2)运行时内存:在推理期间,CNN的中间层的激活和响应甚至比存储模型参数占用更多的内存空间,即使批量大小为1。对于许多应用程序来说,这不是一个高性能的问题。[0006]3)计算操作的数量:卷积运算在高分辨率图像上是计算密集型的。一个大型的CNN 在资源受限的智能芯片端处理一个单一的图像可能需要几分钟的时间,这使得将其用于实际应用是不现实的。
[0007]国产智能芯片K210开发板采用RISC‑V处理器架构,KPU加速模块仅支持1*1和3*3的卷积核,其
他尺寸的卷积核均不能被KPU加速,且其只有6MB的通用RAM和2MB的KPU专用RAM。卷积神经网络模型的输入和输出特征图存储在2MB的KPU专用RAM中。模型的权重和其他参数存储在6MB通用RAM中,然而其实际支持的最大神经网络模型参数只有5.5M到5.9M。[0008]yolov3模型是一阶段目标检测任务中运行速度更快、准确度较高的一种算法。它以yolov1和yolov2为基础,采用了多尺度特征对目标进行预测,利用Logistic方法对目标进行分类。该算法与其他目标检测方法相比不仅速度快而且对于小目标的检测效果更好。[0009]原有yolov3模型参数量较多,运行时占用内存较大,由于国产智能芯片K210硬件平台的存储和运行内存有限,并且在基于FreeRtos的SDK中不支持quant_resize_nearest_ neighbor、channelwise_dequantize和Logistic算子,使得yolov3模型并不能在国产智能芯片K210上运行。
发明内容
[0010]针对现有技术中存在的技术问题,本发明的目的在于提供一种基于国产智能芯片K210的yolov3实时目标检测方法及电子装置,可以将现有yolov3模型通过剪枝、量化等方法减小模型大小,降低运行时内存消耗,并减少计算操作的数量,使其满足国产智能芯片
K210对神经网络模型参数的最大限制;减小输入图像的尺寸,使其满足国产智能芯片K210对卷积神经网络模型的输入和输出特征图的存储限制;将训练后的模型进行转换为K210可以加载运行的模型文件;
在K210软件栈中新增算子、并实现了yolo层;获取K210上摄像头采集的视频数据,加载运行yolov3模型,对目标检测结果在LCD上进行显示。
[0011]为了实现上述目的,提供如下技术解决方案:
[0012]一种基于国产智能芯片K210的yolov3目标检测方法,其步骤包括:
[0013]1)采用MobileNet模型结构替代yolov3模型中的darknet‑53层网络结构,并减少网络中卷积核的数量与网络层数,得到调整后yolov3模型;
[0014]2)使用若干训练样本图像对调整后yolov3模型进行稀疏化训练,并对稀疏化训练后yolov3模型进行剪枝操作,得到最终yolov3模型;
[0015]3)将依据最终yolov3模型生成的.h5模型文件,转化为kmodel模型文件,生成kmodel模型,并在国产智能芯片K210的软件栈中新增算子,其中算子包括:kpu_logistic算子;
[0016]4)将待检测数据转化为输入图像后,输入主干网络为MobileNet模型结构的kmodel模型中,得到特征图,并通过kpu_logistic算子,对特征图中每个网格预测的B个边界框的中心坐标与相应置信度及C个类别概率进行激活,计算特征图中每一边界框的中心坐标、宽高、相应置信度及各类别的概率值,其中B≥1,C≥1;
[0017]5)根据输入图像的大小和特征图的尺寸,计算每个边界框在输入图像上的位置,得到目标检测结果。
[0018]进一步地,使用若干训练样本图像对调整后yolov3模型进行稀疏化训练之前,对训练样本图像进行预处理;所述预处理的策略包括:
[0019]1)依据国产智能芯片K210对于神经网络模型输入和输出特征图存储空间大小的要求,以及根据yolov3模型对于输入图像的宽高限制,调整训练样本图像的尺寸;[0020]2)对训练样本图像的真实值与标签进行适应性地缩放。
[0021]进一步地,在keras框架下,对调整后yolov3模型进行稀疏化训练。
[0022]进一步地,所述剪枝操作包括:删除权重张量中的部分值和减少神经网络层之间的连接数量。
[0023]进一步地,通过以下步骤转化为kmodel模型文件:
[0024]1)通过tensorflow的tflite_convert命令,将.h5模型文件转化为tflite模型文件;
[0025]2)使用K210模型转化工具nncase,将tflite模型转化为kmodel模型文件。[0026]进一步地,待检测数据包括:视频数据或图像数据。
[0027]进一步地,通过调用dvp模块获取所述视频数据。
[0028]进一步地,通过以下步骤将图像数据转化为输入图像:
[0029]1)将任意图像的大小调整为kmodel模型所需要的大小;
[0030]2)将图像格式通过代码转换为国产智能芯片K210可加载的.c文件。
[0031]进一步地,将输入图像输入主干网络为MobileNet模型结构的kmodel模型时,边界
框的数量B
N =w
I
*h
I
*a,kmodel模型的output数量N
=B
N
*(c+4+1),其中w
I
为kmodel模型中
yolo层的宽,h
I
为kmodel模型中yolo层的高,a为锚点数量,c为类别数量。

本文发布于:2024-09-20 12:10:14,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/797344.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:模型   图像   检测   进行   智能   芯片   目标
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议