CN114419473B - 一种基于嵌入式设备的深度学习实时目标检测方法 - Google Patents

一种基于嵌入式设备的深度学习实时目标检测方法 Download PDF

Info

Publication number
CN114419473B
CN114419473B CN202111363102.6A CN202111363102A CN114419473B CN 114419473 B CN114419473 B CN 114419473B CN 202111363102 A CN202111363102 A CN 202111363102A CN 114419473 B CN114419473 B CN 114419473B
Authority
CN
China
Prior art keywords
model
data
embedded
embedded device
target detection
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202111363102.6A
Other languages
English (en)
Other versions
CN114419473A (zh
Inventor
刘海涛
甘彤
张琦珺
商国军
杨利红
程剑
房思思
任好
卢安安
王崇海
唐亮
凌虎
刘正丽
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
CETC 38 Research Institute
Original Assignee
CETC 38 Research Institute
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by CETC 38 Research Institute filed Critical CETC 38 Research Institute
Priority to CN202111363102.6A priority Critical patent/CN114419473B/zh
Publication of CN114419473A publication Critical patent/CN114419473A/zh
Application granted granted Critical
Publication of CN114419473B publication Critical patent/CN114419473B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Health & Medical Sciences (AREA)
  • Mathematical Physics (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Evolutionary Biology (AREA)
  • Image Analysis (AREA)
  • Image Processing (AREA)

Abstract

本发明提供了一种基于嵌入式设备的深度学习实时目标检测方法,包括:初始化寒武纪嵌入式设备;设置使用的嵌入式设备;在嵌入式设备上加载离线模型文件;初始化模型配置;获得输入和输出数据的内存大小,为嵌入式设备输入数据和输出数据分配内存指定空间;将图像数据从CPU拷贝到嵌入式设备上;将推理任务下发到队列,执行推理任务;将计算结果从嵌入式设备拷贝到CPU。本发明利用寒武纪嵌入式设备出色的图像处理能力和强大的算力,结合YOLOV3目标检测算法,对摄像头数据进行实时解码,对视频图像中的目标物体进行实时检测分析,大大提高了检测效率,减少了成本。

Description

一种基于嵌入式设备的深度学习实时目标检测方法
技术领域
本发明涉及目标检测领域技术,具体涉及一种基于嵌入式设备的深度学习实时目标检测方法。
背景技术
目标检测的主要任务是利用图像处理等手段找出图像中所有感兴趣的目标,确定它们的类别和位置,是计算机视觉领域的核心问题之一。由于各类物体有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具有挑战性的问题。
近年来,随着深度学习技术的飞速发展,深度学习技术逐渐被应用目标检测领域,并获得巨大的应用价值。基于深度学习的目标检测方法相比较传统的目标检测算法,在性能上有巨大的提升,基于深度学习的目标检测方法已经成为目标检测的技术趋势,并在视频安防监控、智能导航控制等领域得到了广泛的应用。
但是,由于深度学习的目标检测算法具有复杂的网络结构,存在大量的计算量,需要专业的GPU芯片加速,GPU芯片强大的计算和处理能力使得基于深度学习的目标检测算法可以达到对目标的实时检测。但是GPU芯片的服务器功耗大,体积大,便携性差,不适用前端场景适用。在传统的应用中,通常通过网络将前端摄像头数据传图后台GPU服务器,在后台调用目标检测算法实现目标检测功能,但是这种应用模式对网络的部署和信号要求越来越高,而且成本高,难以满足众多现实场景的需求,不能充分发挥深度学习的目标检测方法的优势。
目标检测技术普遍应用与算法运行平台缺陷之间的矛盾,使得运行平台正向着嵌入式和小型化的方向发展。但是大部分的嵌入式设备仅可以满足轻量化的网络运算需求,检测效率低,精度差,特别是在实时性要求较高的场景,不能充分发挥深度学习的目标检测技术的优势。
发明内容
本发明所要解决的技术问题在于:如何在嵌入式设备上实时运行复杂网络的深度学习目标检测算法。
本发明是通过以下技术方案解决上述技术问题的,本发明提供了一种基于嵌入式设备的深度学习实时目标检测方法,包括以下步骤:
S1,初始化寒武纪嵌入式设备;
S2,设置使用的嵌入式设备;
S3,在嵌入式设备上加载离线模型文件;
S4,初始化模型配置;
S5,获得输入和输出数据的内存大小,为嵌入式设备输入数据和输出数据分配内存指定空间;
S6,将图像数据从CPU拷贝到嵌入式设备上;
S7,将推理任务下发到队列,执行推理任务;
S8,将计算结果从嵌入式设备拷贝到CPU;
步骤S3中加载的离线模型文件通过模型训练及转换获得,包括以下步骤:
步骤S31,建立训练图像数据库;
步骤S32,以YOLOV3模型为主框架,在服务器上搭建Darknet运行环境,通过训练图像数据库对目标检测模型进行训练,并根据训练的损失值调整训练计划,得到基于Darknet框架最优的模型;
步骤S6中,拷入的图像数据的采集过程如下:
步骤S61,在嵌入式设备上接入摄像头;
步骤S62,获取视频流数据;
步骤S63,根据获取的视频流数据相关参数初始化嵌入式设备的硬解码模块;
步骤S64,创建送流线程,将视频流数据不断送入硬解码模块;
步骤S65,摄像头数据解码,得到实时的YUV数据。
本发明利用寒武纪嵌入式设备(MLU芯片)出色的图像处理能力和强大的算力,结合YOLOV3目标检测算法,对摄像头数据进行实时解码,对视频图像中的目标物体进行实时检测分析,充分发挥了基于嵌入式的深度学习目标检测算法的优势,大大提高了检测效率,减少了成本,满足便携,低功耗的需求。
作为进一步优化的技术方案,步骤S8后还包括以下步骤:
S9,检测结果后处理,根据场景需求设置置信度阈值,过滤不符合实际需求的目标,对筛选后的结果位置坐标进行尺寸转换,得到最终结果;
S10,结果显示及保存。
作为进一步优化的技术方案,所述步骤S3还包括以下步骤:
步骤S33,基于Darknet框架最优的模型移植到嵌入式设备上需要进行三个步骤的处理:Darknet模型转Caffe模型,INT8量化和转离线,通过三个步骤的处理获取模型文件。
作为进一步优化的技术方案,Darknet模型转Caffe模型具体为:需要先将模型文件YOLOV3.cfg和YOLOV3.weights分别转换成YOLOV3.prototxt和YOLOV3.caffemodel,在PC服务器上配置开源深度学习编程框架Caffe运行环境,执行darknet2caffe脚本完成Darkent框架模型向Caffe框架模型的转换,在得到yolov3.prototxt和yolov3.caffemodel文件后,针对YOLOV3网络需要进行YOLO层的特殊网络配置,需要配置输入图像尺寸,最大检测框数量,非极大值抑制的阈值,目标检测置信度阈值,以及YOLOV3网络中三个尺度对应的anchors值。
作为进一步优化的技术方案,利用量化工具generate_quantized_pt和离线转换工具caffe genoff对转换后的Caffe框架下的模型进行量化和转离线,在进行量化时需要选取相应的量化参考图片,选择的图像要尽量覆盖模型的典型场景,包含检测的目标,得到量化后的yolov3_int8.prototxt和yolov3.caffemodel后,执行genoff工具生成在嵌入式设备上运行的离线模型yolov3.cambricon文件。
作为进一步优化的技术方案,步骤S62具体包括:需要先在嵌入式设备上移植FFMPEG,使用FFMPEG库中的相关函数接入摄像头的RTSP,并获取每一帧视频流数据。
作为进一步优化的技术方案,步骤S6拷入的图像数据的采集过程还包括如下步骤:
步骤S66,YUV数据需要转换成ARGB格式才能够进行推理计算,使用寒武纪嵌入式设备的图像处理模块,实现YUV向ARGB数据的转换,并将ARGB图像数据进行缩放,得到缩放后的ARGB数据,并拷入寒武纪嵌入式设备输入指定内存空间。
作为进一步优化的技术方案,所述步骤S7执行推理任务具体包括:
在嵌入式设备上利用已加载的目标检测离线模型对解码后的每一帧视频图像进行目标检测处理,获取图像中存在的目标物的类别、位置等信息,执行模型推理函数。
作为进一步优化的技术方案,步骤S62具体包括:首先需要在嵌入式设备上交叉编译其系统支持的FFMPEG库,在Ubuntu服务器上配置交叉编译环境,编译嵌入式设备支持的FFMPEG库;
通过摄像头RTSP流地址实现对摄像头的连接,并获取数据流的尺寸,编码格式信息;
步骤S63具体包括:创建一个解码器实例,根据获取的视频流数据配置解码器参数,启动解码器;
步骤S64具体包括:创建送流线程,利用FFMPEG获取每帧的视频流数据,并逐帧发送数据给解码器解码;
步骤S65具体包括:调用解码回调函数,获取摄像头视频流中每一帧图像数据。
作为进一步优化的技术方案,步骤S3在嵌入式设备上加载离线模型是需要将离线的模型文件文件加载到寒武纪嵌入式设备上,并初始化进行深度学习计算的相关配置,具体步骤如下:
(1)创建cnrtModel_t结构体;
(2)将离线模型文件中的数据写入创建的cnrtModel_t结构体变量中;
(3)获取模型中包含的Function数量;
(4)初始化cnrtFunction_t结构体变量;
(5)提取模型中的模型信息,并将其写入上一步创建的cnrtFunction_t结构体变量中;
(6)获得输入和输出数据的内存大小,为MLU输入数据和输出数据分配内存指定空间;
(7)设置Context
a.创建Context;
b.绑定设备;
c.初始化Context;
d.创建队列。
本发明相比现有技术具有以下优点:本发明在国产嵌入式设备上实现了基于深度学习的实时目标检测方法。在MLU芯片上实现对摄像头实时解码,并对解码后的图像进行基于YOLOV3深度学习目标检测网络的实时目标物体检测,从摄像头接入到目标结果检测,整个过程可在一块体积很小的嵌入式板卡上进行,对比传统的深度学习运行环境要求,实现了便携化、低功耗、低成本的要求。
检测精度相对于GPU服务器略有提升,对比传统嵌入式深度学习中轻量化网络精度低,复杂网络效率低的情况,大大提高了检测效率和精度,更加符合实际应用的需求,使得基于深度学习的目标检测的应用普遍性进一步提高。
附图说明
图1是本发明一种基于嵌入式设备的实时目标检测方法流程图;
图2是本发明提供的目标检测深度学习模型YOLOV3的网络结构图;
图3是本发明方法的检测效果图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面将结合本发明实施例中的附图对本发明的实施例作详细说明,本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程,本发明的保护范围不限于下述的实施例。
请参阅图1所示,本发明的一种基于嵌入式设备的深度学习实时目标检测方法,包括以下步骤:
S1,调用cnrtInit()API,初始化寒武纪嵌入式设备;
S2,调用cnrtSetCurrentDevice()API,设置使用的嵌入式设备;
S3,调用cnrtLoadModel()API,在嵌入式设备上加载离线模型yolov3.cambricon文件;
S4,调用cnrt_function,设置cnrt_context,初始化模型配置;
S5,调用cnrtGetInputDataSize()和cnrtGetOutputDataSize()API,获得输入和输出数据的内存大小,调用cnrtMalloc()API,为嵌入式设备输入数据和输出数据分配内存指定空间;
S6,调用cnrtMemcpy()API,将图像数据从CPU拷贝到嵌入式设备上;
S7,调用cnrtInvokeRuntimeContext()API,将推理任务下发到队列,调用cnrtSyncQueue()API,执行推理任务;
S8,调用cnrtMemcpy()API,将计算结果从嵌入式设备拷贝到CPU;
S9,检测结果后处理,根据场景需求设置置信度阈值,过滤不符合实际需求的目标,对筛选后的结果位置坐标进行尺寸转换,得到最终结果;
S10,结果显示及保存,最终结果通过OPENCV函数将图像中目标物位置框图,类别信息、置信度绘制到每帧图片,通过HDMI接口输送到显示器进行显示,可调用硬编码模块,对结果图片进行编码为JPEG保存,便于后续查看。
其中,步骤S3中加载的离线模型文件通过模型训练及转换获得,包括以下步骤:
步骤S31,建立训练图像数据库,模型训练主要是搜集大量多样性的包括人、车目标的监控视频图片,标记出其中人和车的位置和类别;
步骤S32,以YOLOV3模型为主框架,在服务器上搭建Darknet运行环境,通过训练图像数据库对目标检测模型进行训练,并根据训练的损失值调整训练计划,得到基于Darknet框架最优的模型;
步骤S33,基于Darknet框架最优的模型移植到嵌入式设备上需要进行三个步骤的处理:Darknet模型转Caffe模型,INT8量化和转离线。通过三个步骤的处理获取可在嵌入式设备上高效运行的模型文件yolov3.cambricon文件。
步骤S6中,拷入的图像数据的采集过程如下:
步骤S61,在嵌入式设备上接入摄像头;
步骤S62,获取视频流数据,需要先在嵌入式设备上移植FFMPEG(FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序),使用FFMPEG库中的相关函数接入摄像头的RTSP((Real Time Streaming Protocol,实时流传输协议)流,并获取每一帧视频流数据;
步骤S63,根据FFMPEG获取的视频流数据相关参数初始化嵌入式设备的硬解码模块;
步骤S64,创建送流线程,将视频流数据不断送入硬解码模块;
步骤S65,调用解码回调,实现摄像头数据解码,得到实时的YUV数据。
步骤S66,YUV数据需要转换成ARGB格式才可以进行推理计算,使用寒武纪嵌入式设备的图像处理模块,实现YUV向ARGB数据的快速转换,并将ARGB图像数据进行缩放,转成608*608的图像数据,得到缩放后的ARGB数据,并拷入寒武纪嵌入式设备输入指定内存空间,上述转换是调用图像处理模块cncodecImageTransform()API函数完成。
所述步骤S7执行推理任务具体包括:
在嵌入式设备上利用已加载的目标检测离线模型对解码后的每一帧视频图像进行目标检测处理,获取图像中存在的目标物的类别、位置等信息,执行模型推理函数。
进一步地,步骤S7整个推理过程的处理时间约为37ms,已达到实时处理的指标。
步骤S8输出检测结果数据,完成对输入的图像数据进行目标检测。
S5)结果处理及展示:对步骤S4)中获取的结果数据进行后处理并保存展示。步骤S4)中得到的检测结果可根据实际场景需求通过置信度阈值等条件进行筛选,得到符合要求的目标物。将检测的目标物的位置、类别、置信度等信息绘制在原图上,通过HDMI接口实时显示在显示器上,而且可调用MLU硬件编码模块,将结果图编码成JPEG图像输出保存。
进一步地,所述步骤S32中的目标检测的深度学习目标检测网络是目标检测领域中经典的YOLOV3网络,网络包括输入、特征提取、YOLO层和输出,可提取人和车两个类别的深度特征。输出结果为预测目标的中心点x坐标、中心点y坐标、宽度、高度、类别、置信度。
所述深度学习网络的图像特征提取采用的是Darknet-53网络,包含53个卷积层,最后一层是FC。52个卷积用于主体网络,主体网络被分成三个scale,1-26层是scale1,27-43层是scale2,44-52层为scale3,分别在三个不同尺度特征图中进行目标检测。scale1实现8倍采样,感受野更小,负责检测小目标,scale2实现15倍采样,适合检测一般大小物体,scale3实现32倍采样感受野大,容易检测出大目标。在每个尺度的特征图的每个网格设置3个先验框,总共有19*19*3+38*38*3+76*76*3=22743个预测。每一个预测是一个(4+1+2)=7维向量,这个7维向量包含边框坐标(4个数值:边框坐标,中心坐标x和y,框的高度h和宽度w),边框置信度(1个数值),对象类别的概率(类别数),三个尺度的目标检测结果通过YOLO层处理,得到最终结果。
进一步地,所述步骤S33中,所述深度学习模型在经过训练得到最优模型后,需要转成Caffe框架下的模型。Caffe离线模型生成不依赖于MLU设备,而依赖于框架进行编译。目前MLU设备暂时不支持Darknet框架,仅支持Caffe、Pytorch、Tensorflow三种深度学习框架,由于YOLOVV3没有官方的Caffe网络模型,如果要在MLU设备上使用YOLOV3网络,需要先将模型文件YOLOV3.cfg和YOLOV3.weights分别转换成YOLOV3.prototxt和YOLOV3.caffemodel。
在PC服务器上配置开源深度学习编程框架Caffe(Cambricon Caffe)运行环境,执行darknet2caffe脚本完成Darkent框架模型向Caffe框架模型的转换,特别地,在得到yolov3.prototxt和yolov3.caffemodel文件后,针对YOLOV3网络需要进行YOLO层的特殊网络配置,需要配置输入图像尺寸,最大检测框数量,非极大值抑制的阈值,目标检测置信度阈值,以及YOLOV3网络中三个尺度对应的anchors值。
所述深度学习模型转换为Caffe框架模型后,需要进一步量化和转离线,对FLOAT32类型模型量化到INT8类型模型,缩小模型体积和计算量,以便移植到嵌入式设备。利用量化工具generate_quantized_pt和离线转换工具caffe genoff对转换后的Caffe框架下的模型进行量化和转离线步骤。
在进行量化时需要选取相应的量化参考图片,选择的图像要尽量覆盖模型的典型场景,包含检测的目标。参考图片影响量化系数,选择典型场景的图片计算出来的量化系数对典型场景的量化误差越小。
得到量化后的yolov3_int8.prototxt和yolov3.caffemodel后,执行genoff工具生成可在嵌入式设备上运行的离线模型yolov3.cambricon文件,离线化的模型大小相对PC版本模型缩小将近4倍。
进一步地,所述步骤S6中,采集摄像头数据主要利用嵌入式设备的硬件解码模块对摄像头数据进行实时解码。MLU220芯片自带高性能解码模块,可支持16路1080P视频流实时解码,调用其硬解码模块可实现低内存占用,高效率解码,达到实时获取图像数据。解码过程主要是使用主流的多媒体处理框架FFMEPG并配合提供的解码模块进行,通过FFMPEG库函数解析摄像头RTSP视频帧数据,送入硬件解码模块,得到解码后的图像数据。
步骤S62具体包括:首先需要在嵌入式设备上交叉编译其系统支持的FFMPEG库,在Ubuntu服务器上配置gcc-linaro-6.2.1-2016.11-x86_64_aarch64-linux-gnu交叉编译环境,编译嵌入式设备支持的FFMPEG库;
利用avformat_open_input通过摄像头RTSP流地址实现对摄像头的连接,并获取数据流的尺寸,编码格式等信息;
步骤S63具体包括:调用函数cnvideoDecCreate创建一个解码器实例,根据获取的视频流数据配置解码器参数,并调用cnvideoDecStart函数启动解码器;
步骤S64具体包括:创建送流线程,利用FFMPEG中av_read_frame获取每帧的视频流数据,并调用cnvideoDecFeedData函数逐帧发送数据给解码器解码;
步骤S65具体包括:通过pfnCncodecEventCallback回调函数获取摄像头视频流中每一帧图像数据。
进一步地,步骤S3在嵌入式设备上加载离线模型是需要将离线的模型文件yolov3.cambricon文件加载到MLU设备(寒武纪嵌入式设备)上,并初始化进行深度学习计算的相关配置,具体步骤如下:
(1)创建cnrtModel_t结构体。
(2)调用cnrtLoadModel()API将离线模型文件.cambricon中的数据写入创建的cnrtModel_t结构体变量中。
(3)调用cnrtGetFunctionNumber()API获取模型中包含的Function数量。
(4)调用cnrtCreateFunction()API初始化cnrtFunction_t结构体变量。
(5)调用cnrtExtractFunction()API提取模型中的模型信息,并将其写入上一步创建的cnrtFunction_t结构体变量中。
(6)通过cnrtGetInputDataSize()和cnrtGetOutputDataSize()API获得输入和输出数据的内存大小,调用cnrtMalloc()API,为MLU输入数据和输出数据分配内存指定空间。
(7)设置Context。
a.调用cnrtCreateRuntimeContext()API,创建Context。
b.调用cnrtSetRuntimeContextDeviceId()API,绑定设备。
c.调用cnrtInitRuntimeContext()API,初始化Context。
d.用cnrtRuntimeContextCreateQueue()API,创建队列。
以下为本发明提供一种基于嵌入式设备的深度学习实时目标检测方法的一个具体例子,包括以下步骤:
S1,初始化寒武纪嵌入式设备;
S2,设置使用的嵌入式设备;
S3,在嵌入式设备上加载离线模型;
S4,初始化模型配置;
S5,获得输入和输出数据的内存大小,为嵌入式设备输入数据和输出数据分配内存指定空间;
S6,调用cnrtMemcpy()API,将图像数据从CPU拷贝到嵌入式设备上;
S7,调用cnrtInvokeRuntimeContext()API,将推理任务下发到队列,调用cnrtSyncQueue()API,执行推理任务;
S8,调用cnrtMemcpy()API,将计算结果从嵌入式设备拷贝到CPU;
S9,检测结果后处理,输出结果进一步根据需求过滤,对筛选后的结果位置坐标进行尺寸转换,得到最终结果;
S10,结果显示及保存,最终结果通过OPENCV函数将图像中目标物位置框图,类别信息、置信度绘制到每帧图片,通过HDMI接口输送到显示器进行显示,可调用硬编码模块,对结果图片进行编码为JPEG保存,便于后续查看。
步骤S3中加载的离线模型通过模型训练及转换获得,包括以下步骤:
S31,建立训练数据集;
S32,配置PC服务器,训练深度学习模型。,以YOLOV3模型为主框架,在服务器上搭建Darknet运行环境,本实例中训练图像数据集样本个数为60000张,测试集7300张,训练464000次。
S33,在PC服务器上配置Cambricon Caffe环境,使用darknet2caffe将S31训练得到yolov3.cfg和yolov3.weight模型转为yolov3.prototxt和yolov3.caffemodel,针对yolov3.prototxt文件中添加YOLO层配置,具体如下:
此处置信度阈值设置较低值,便于后期结果处理时进行二次过滤,满足不同的目标检测场景需求。
然后将模型从FLOAT32精度量化到INT8精度,再进行离线转换,获得嵌入式设备支持的yolov3.cambricon模型文件。
建立参考量化图片。从目标场景中选取30张包含检测目标的不同场景的图片作为量化参考图片库。
量化。执行generate_quantized_pt命令,具体命令如下,从原有的模型中计算得到int8信息,生成新的yolov3.int8_prototxt文件:
需要配置相关的ini文件如下,由于模型输入数据类型和解码后的类型需一致,而且YUV数据可通过MLU220芯片图像处理模块快速转化为ARGB类型,所以此处input_format设置为ARGB,可提高数据转换效率,减少内存占用,缩短每帧图像目标检测时间。
得到量化后的yolov3_int8_prototxt后,执行caffe genoff命令,具体命令如下,生成可在嵌入式设备上运行的离线模型yolov3.cambricon文件。命令参数core_number设置4,离线推理时4核同时运行,可达到最高效率。获取的离线模型相对GPU版本的模型缩小将近4倍。
在ubuntu系统的PC上配置交叉编译环境,交叉编译FFMPEG、OPENCV等库,并移植到嵌入式设备上。
步骤S6中,拷入的图像数据的采集过程如下:
将摄像头通过网线连接到嵌入式设备上,利用FFMPEG库函数avformat_open_input基于RTSP协议获取摄像头视频流,根据视频流参数调用initDecodeContext配置MLU220的硬解码模块,并调用cnvideoCreate创建解码实例。
创建送流线程,利用调用cnvideoDecFeedata函数将FFMPE库函数G获取的视频流数据按帧送入硬解码模块。解码线程通过回调函数newFrameCallback获取解码后的YUV数据。
对获取的解码后的视频图像数据进行格式转换和尺寸缩放,调用cnrtMemcpy()API,同步拷贝图像数据到MLU端。
如图2和3所示,在嵌入式设备上运行608*608的YOLOV3模型单帧处理时间为37ms,接入的视频流可实时解码并送入离线模型进行推理,整个系统可达到实时处理指标。参见下表所示,通过GPU服务其进行目标检测与通过MLU嵌入式设备进行目标检测的准确率和召回率进行比较:
通过MLU嵌入式设备进行目标检测的准确率相对比GPU服务器的效果有提升。
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (7)

1.一种基于嵌入式设备的深度学习实时目标检测方法,其特征在于:包括以下步骤:
S1,初始化寒武纪嵌入式设备;
S2,设置使用的嵌入式设备;
S3,在嵌入式设备上加载离线模型文件;
S4,初始化模型配置;
S5,获得输入和输出数据的内存大小,为嵌入式设备输入数据和输出数据分配内存指定空间;
S6,将图像数据从CPU拷贝到嵌入式设备上;
S7,将推理任务下发到队列,执行推理任务;
S8,将计算结果从嵌入式设备拷贝到CPU;
步骤S3中加载的离线模型文件通过模型训练及转换获得,包括以下步骤:
步骤S31,建立训练图像数据库;
步骤S32,以YOLOV3模型为主框架,在服务器上搭建Darknet运行环境,通过训练图像数据库对目标检测模型进行训练,并根据训练的损失值调整训练计划,得到基于Darknet框架最优的模型;
步骤S33,基于Darknet框架最优的模型移植到嵌入式设备上需要进行三个步骤的处理:Darknet模型转Caffe模型,INT8量化和转离线,通过三个步骤的处理获取模型文件,其中,
Darknet模型转Caffe模型具体为:需要先将模型文件YOLOV3.cfg和YOLOV3.weights分别转换成YOLOV3.prototxt和YOLOV3.caffemodel,在PC服务器上配置开源深度学习编程框架Caffe运行环境,执行darknet2caffe脚本完成Darkent框架模型向Caffe框架模型的转换,在得到yolov3.prototxt和yolov3.caffemodel文件后,针对YOLOV3网络需要进行YOLO层的特殊网络配置,需要配置输入图像尺寸,最大检测框数量,非极大值抑制的阈值,目标检测置信度阈值,以及YOLOV3网络中三个尺度对应的anchors值;
利用量化工具generate_quantized_pt和离线转换工具caffe genoff对转换后的Caffe框架下的模型进行量化和转离线,在进行量化时需要选取相应的量化参考图片,选择的图像要尽量覆盖模型的典型场景,包含检测的目标,得到量化后的yolov3_int8.prototxt和yolov3.caffemodel后,执行genoff工具生成在嵌入式设备上运行的离线模型yolov3.cambricon文件;
步骤S6中,拷入的图像数据的采集过程如下:
步骤S61,在嵌入式设备上接入摄像头;
步骤S62,获取视频流数据;
步骤S63,根据获取的视频流数据相关参数初始化嵌入式设备的硬解码模块;
步骤S64,创建送流线程,将视频流数据不断送入硬解码模块;
步骤S65,摄像头数据解码,得到实时的YUV数据。
2.如权利要求1所述的基于嵌入式设备的深度学习实时目标检测方法,其特征在于:步骤S8后还包括以下步骤:
S9,检测结果后处理,根据场景需求设置置信度阈值,过滤不符合实际需求的目标,对筛选后的结果位置坐标进行尺寸转换,得到最终结果;
S10,结果显示及保存。
3.如权利要求1所述的基于嵌入式设备的深度学习实时目标检测方法,其特征在于:步骤S62具体包括:需要先在嵌入式设备上移植FFMPEG,使用FFMPEG库中的相关函数接入摄像头的RTSP,并获取每一帧视频流数据。
4.如权利要求1所述的基于嵌入式设备的深度学习实时目标检测方法,其特征在于:步骤S6拷入的图像数据的采集过程还包括如下步骤:
步骤S66,YUV数据需要转换成ARGB格式才能够进行推理计算,使用寒武纪嵌入式设备的图像处理模块,实现YUV向ARGB数据的转换,并将ARGB图像数据进行缩放,得到缩放后的ARGB数据,并拷入寒武纪嵌入式设备输入指定内存空间。
5.如权利要求1所述的基于嵌入式设备的深度学习实时目标检测方法,其特征在于:所述步骤S7执行推理任务具体包括:
在嵌入式设备上利用已加载的目标检测离线模型对解码后的每一帧视频图像进行目标检测处理,获取图像中存在的目标物的类别、位置等信息,执行模型推理函数。
6.如权利要求1所述的基于嵌入式设备的深度学习实时目标检测方法,其特征在于:步骤S62具体包括:首先需要在嵌入式设备上交叉编译其系统支持的FFMPEG库,在Ubuntu服务器上配置交叉编译环境,编译嵌入式设备支持的FFMPEG库;
通过摄像头RTSP流地址实现对摄像头的连接,并获取数据流的尺寸,编码格式信息;
步骤S63具体包括:创建一个解码器实例,根据获取的视频流数据配置解码器参数,启动解码器;
步骤S64具体包括:创建送流线程,利用FFMPEG获取每帧的视频流数据,并逐帧发送数据给解码器解码;
步骤S65具体包括:调用解码回调函数,获取摄像头视频流中每一帧图像数据。
7.如权利要求1所述的基于嵌入式设备的深度学习实时目标检测方法,其特征在于:步骤S3在嵌入式设备上加载离线模型是需要将离线的模型文件文件加载到寒武纪嵌入式设备上,并初始化进行深度学习计算的相关配置,具体步骤如下:
(1)创建cnrtModel_t结构体;
(2)将离线模型文件中的数据写入创建的cnrtModel_t结构体变量中;
(3)获取模型中包含的Function数量;
(4)初始化cnrtFunction_t结构体变量;
(5)提取模型中的模型信息,并将其写入上一步创建的cnrtFunction_t结构体变量中;
(6)获得输入和输出数据的内存大小,为MLU 输入数据和输出数据分配内存指定空间;
(7)设置Context
a.创建Context;
b.绑定设备;
c.初始化Context;
d.创建队列。
CN202111363102.6A 2021-11-17 2021-11-17 一种基于嵌入式设备的深度学习实时目标检测方法 Active CN114419473B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111363102.6A CN114419473B (zh) 2021-11-17 2021-11-17 一种基于嵌入式设备的深度学习实时目标检测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111363102.6A CN114419473B (zh) 2021-11-17 2021-11-17 一种基于嵌入式设备的深度学习实时目标检测方法

Publications (2)

Publication Number Publication Date
CN114419473A CN114419473A (zh) 2022-04-29
CN114419473B true CN114419473B (zh) 2024-04-16

Family

ID=81264784

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111363102.6A Active CN114419473B (zh) 2021-11-17 2021-11-17 一种基于嵌入式设备的深度学习实时目标检测方法

Country Status (1)

Country Link
CN (1) CN114419473B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115941967A (zh) * 2023-03-13 2023-04-07 南京感动科技有限公司 一种基于全码流的视频编解码加速方法

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109977953A (zh) * 2019-03-29 2019-07-05 南京邮电大学 基于yolov3的目标检测算法在嵌入式设备上的实现方法
CN110135398A (zh) * 2019-05-28 2019-08-16 厦门瑞为信息技术有限公司 基于计算机视觉的双手脱离方向盘检测方法
CN111325120A (zh) * 2020-02-09 2020-06-23 南通大学 一种适用于嵌入式系统的目标检测方法
CN111709522A (zh) * 2020-05-21 2020-09-25 哈尔滨工业大学 一种基于服务器-嵌入式协同的深度学习目标检测系统
CN111860483A (zh) * 2020-07-21 2020-10-30 中国科学院光电技术研究所 一种基于海思平台的目标检测方法
AU2020103494A4 (en) * 2020-11-17 2021-01-28 China University Of Mining And Technology Handheld call detection method based on lightweight target detection network
CN112633249A (zh) * 2021-01-05 2021-04-09 北华航天工业学院 一种基于轻型深度学习框架的嵌入式人流量检测方法
CN113034828A (zh) * 2021-02-26 2021-06-25 中国电子科技集团公司第三十八研究所 基于嵌入式计算终端实现目标检测和识别系统及布设方法
CN113139615A (zh) * 2021-05-08 2021-07-20 北京联合大学 一种基于嵌入式设备的无人驾驶环境目标检测方法

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109977953A (zh) * 2019-03-29 2019-07-05 南京邮电大学 基于yolov3的目标检测算法在嵌入式设备上的实现方法
CN110135398A (zh) * 2019-05-28 2019-08-16 厦门瑞为信息技术有限公司 基于计算机视觉的双手脱离方向盘检测方法
CN111325120A (zh) * 2020-02-09 2020-06-23 南通大学 一种适用于嵌入式系统的目标检测方法
CN111709522A (zh) * 2020-05-21 2020-09-25 哈尔滨工业大学 一种基于服务器-嵌入式协同的深度学习目标检测系统
CN111860483A (zh) * 2020-07-21 2020-10-30 中国科学院光电技术研究所 一种基于海思平台的目标检测方法
AU2020103494A4 (en) * 2020-11-17 2021-01-28 China University Of Mining And Technology Handheld call detection method based on lightweight target detection network
CN112633249A (zh) * 2021-01-05 2021-04-09 北华航天工业学院 一种基于轻型深度学习框架的嵌入式人流量检测方法
CN113034828A (zh) * 2021-02-26 2021-06-25 中国电子科技集团公司第三十八研究所 基于嵌入式计算终端实现目标检测和识别系统及布设方法
CN113139615A (zh) * 2021-05-08 2021-07-20 北京联合大学 一种基于嵌入式设备的无人驾驶环境目标检测方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于目标检测的地铁站人群数量估计;房思思;Journal of Computer Applications;20210630;第S1卷(第41期);全文 *

Also Published As

Publication number Publication date
CN114419473A (zh) 2022-04-29

Similar Documents

Publication Publication Date Title
CN112203095B (zh) 视频运动估计方法、装置、设备及计算机可读存储介质
CN110751649B (zh) 视频质量评估方法、装置、电子设备及存储介质
CN110287891B (zh) 基于人体关键点的手势控制方法、装置及电子设备
WO2021046715A1 (zh) 曝光时间计算方法、装置及存储介质
CN115690382B (zh) 深度学习模型的训练方法、生成全景图的方法和装置
CN114936979B (zh) 一种模型训练方法、图像去噪方法、装置、设备及存储介质
US11463718B2 (en) Image compression method and image decompression method
CN113962859B (zh) 一种全景图生成方法、装置、设备及介质
CN114419473B (zh) 一种基于嵌入式设备的深度学习实时目标检测方法
US20230336878A1 (en) Photographing mode determination method and apparatus, and electronic device and storage medium
CN110557633A (zh) 图像数据的压缩传输方法、系统和计算机可读存储介质
CN113570689A (zh) 人像卡通化方法、装置、介质和计算设备
Qi et al. A DNN-based object detection system on mobile cloud computing
CN115767181A (zh) 直播视频流渲染方法、装置、设备、存储介质及产品
CN113724132B (zh) 图像风格迁移处理方法、装置、电子设备及存储介质
CN111385576A (zh) 视频编码方法、装置、移动终端及存储介质
WO2023231918A1 (zh) 图像处理方法、装置、电子设备及存储介质
CN116090543A (zh) 模型压缩方法及装置、计算机可读介质和电子设备
CN113645419B (zh) 图像处理方法及装置、电子设备及计算机可读存储介质
CN114630139A (zh) 直播视频的质量评估方法及其相关设备
CN112990440A (zh) 用于神经网络模型的数据量化方法、可读介质和电子设备
CN111124862A (zh) 智能设备性能测试方法、装置及智能设备
CN116996695B (zh) 一种全景图像压缩方法、装置、设备及介质
CN103918002B (zh) 用于视频分析和编码的存储器控制器
CN111526366B (zh) 图像处理方法、装置、摄像设备和存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant