发明内容
本发明实施例提供了一种基于Jetson Nano的视频分析方法,以解决现有技术中视频流处理实时性低的问题。为了对披露的实施例的一些方面有一个基本的理解,下面给出了简单的概括。该概括部分不是泛泛评述,也不是要确定关键/重要组成元素或描绘这些实施例的保护范围。其唯一目的是用简单的形式呈现一些概念,以此作为后面的详细说明的序言。
根据本发明实施例的第一方面,提供了一种基于Jetson Nano的视频分析方法。
在一些可选实施例中,基于Jetson Nano的视频分析方法,基于DeepStream SDK开发,运行在Jetson Nano平台上,包括以下步骤:
步骤(a0),捕获视频流数据;
步骤(a1),解码视频流数据;
步骤(a2),解码之后,对视频流数据进行预处理;
步骤(a3),将多路视频流数据组合到一起进行批处理;
步骤(a4),采用YOLOV3-Tiny算法对多路视频流数据进行实时分析,执行目标检测,将推理结果沿管道传递到下一个插件;
步骤(a5),将推理结果对应的文字等信息附加到元数据上;
步骤(a6),获取最终的推理结果。
可选地,所述步骤(a3)中,所述批处理采用Nvstreammux插件,N路视频需要N个解码器,每路视频对应一个解码器,最终通过Nvstreammux插件将这N路分支合并起来,再与推理插件连接。
可选地,采用YOLOV3-Tiny算法对多路视频流数据进行实时分析,包括:
首先,输入图像经过主干网络提取特征;
再然后,特征图输入到嫁接网络,嫁接网络采用的是两种分辨率,最后得到两个不同尺度的特征图输出。
可选地,输入图像经过YOLOV3-Tiny主干网络生成的特征图输入到嫁接网络后分为两路进行处理,第一路经过卷积操作后生成特征图一,第二路经过卷积操作后再经过上采样层,与主干网络生成的特征图拼合,生成特征图二;
所述特征图一用来检测相对较大的目标,所述特征图二用来检测相对较小目标。
可选地,所述YOLOV3-Tiny算法还包括NMS算法,包括:
将获得的所有候选框根据分类器的类别分类概率做排序,选择最大概率候选框,分别判断其他候选框与最大概率候选框的重叠度IOU是否大于某个设定的阈值,如果其他某个候选框与最大概率候选框的重叠度超过阈值,则剔除该候选框,并标记当前最大概率候选框是需要保留下来的;
接下来,从剩下的候选框中,选择最大概率候选框,然后判断其他候选框与当前最大概率候选框的重叠度,如果重叠度大于某个设定的阈值,则剔除该候选框,并标记当前最大概率候选框是需要保留下来的候选框;
重复上述步骤,直至找到所有被保留下来的候选框。
可选地,所述IOU阈值为固定值。
可选地,所述IOU阈值为变化量,随着每次剔除对象的改变IOU阈值也随之改变。
可选地,所述IOU阈值Nt=ko-(n-1)d,n为筛选的次数,ko为初始阈值,d为增量;
初始阈值ko取值范围为0.3-0.5,随着每次的筛选,阈值Nt每次递减一个增量d,若多次之后Nt小于等于下限值kw,则设置Nt=kw。
可选地,上述基于Jetson Nano的视频分析方法,还包括:针对当前最大概率候选框M,求出其边界框位置对应的密度dm,获得阈值Nm和Nt,Nm和Nt计算过程如公式(1)所示:
Nm=max(Nt,dm),Nt=min(Nt,dm) (1)
如果第i个候选框bi与最大概率候选框M的重叠度IOU(M,bi)小于Nt,则该候选框保留;
如果IOU(M,bi)大于Nm,则直接剔除掉该候选框;
如果IOU(M,bi)大于等于Nt且小于等于Nm,则使用一个衰减函数降低第i个候选框的概率pi,然后更新保留;
将保留下的候选框重复筛选过程,直至找到所有被保留下来的候选框。
可选地,第i个检测框bi的概率pi计算过程如公式(2)所示:
其中,pmax为当前最大概率候选框的概率,σ为常数。
本发明实施例提供的技术方案可以包括以下有益效果:
视频分析方法与Jetson Nano平台绑定在一起,部署方便,操作灵活,筛选效率高且精度高,可应用于多种监控场景。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。
具体实施方式
以下描述和附图充分地示出本文的具体实施方案,以使本领域的技术人员能够实践它们。一些实施方案的部分和特征可以被包括在或替换其他实施方案的部分和特征。本文的实施方案的范围包括权利要求书的整个范围,以及权利要求书的所有可获得的等同物。本文中,术语“第一”、“第二”等仅被用来将一个元素与另一个元素区分开来,而不要求或者暗示这些元素之间存在任何实际的关系或者顺序。实际上第一元素也能够被称为第二元素,反之亦然。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的结构、装置或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种结构、装置或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的结构、装置或者设备中还存在另外的相同要素。本文中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
本文中的术语“纵向”、“横向”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本文和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。在本文的描述中,除非另有规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是机械连接或电连接,也可以是两个元件内部的连通,可以是直接相连,也可以通过中间媒介间接相连,对于本领域的普通技术人员而言,可以根据具体情况理解上述术语的具体含义。
本文中,除非另有说明,术语“多个”表示两个或两个以上。
本文中,字符“/”表示前后对象是一种“或”的关系。例如,A/B表示:A或B。
本文中,术语“和/或”是一种描述对象的关联关系,表示可以存在三种关系。例如,A和/或B,表示:A或B,或,A和B这三种关系。
本发明的目的在于提供一种边缘一体化的软硬件结合的视频分析方法,该方法基于Jetson Nano AI边缘硬件平台,实现了实时智能视频分析的功能。本发明的视频分析方法不仅可以实现监控视频的实时检测分析,并且,由于采用软硬件一体化的方式部署在Jetson Nano平台,具有成本低、即插即用、部署灵活的特点,从而具有高度产业利用价值。
图1示出了本发明的基于Jetson Nano的视频分析方法的一个可选实施例。
在该可选实施例中,所述视频分析方法基于DeepStream SDK开发,运行在JetsonNano平台上,Jetson Nano平台内置CUDA、OpenCV、TensorRT模块。
该可选实施例中,视频分析方法包括以下步骤:
步骤(a0),捕获视频流数据。可选地,该视频流数据来自摄像机的RTSP流或者USB或CSI摄像机;
步骤(a1),解码视频流数据。可选地,解码器插件采用NIVIDIA的硬件加速解码引擎。
步骤(a2),解码之后,对视频流数据进行预处理,例如,图像的放缩、裁剪、格式转换等。
步骤(a3),将多路视频流数据组合到一起进行批处理。
步骤(a4),采用YOLOV3-Tiny算法对多路视频流数据进行实时分析,执行目标检测,将推理结果沿管道传递到下一个插件。YOLOV3-Tiny算法对多路视频流数据进行实时分析,在保证检测精度的同时,又能满足视频实时分析的要求。
步骤(a5),将推理结果对应的文字等信息附加到元数据上,可显示在屏幕上。
步骤(a6),获取最终的推理结果。
可选地,所述步骤(a3)中,所述批处理采用Nvstreammux插件,N路视频需要N个解码器,每路视频对应一个解码器,最终通过Nvstreammux插件将这N路分支合并起来,再与推理插件连接。可选地,批处理过程中,Nvstreammux插件的batched-push-timeout的属性设置为40000(40ms),计算公式为:batched-push-timeout=1/Max(fps),其中,fps为frameper second,Max(fps)代表取所有视频流中最快的一路的数值。采用上述设置方式,如果有一路没有视频流了,等待40ms,没有数据进来就会继续下一步的处理,确保视频流处理的实时性。
可选地,所述步骤(a4)中,采用YOLOV3-Tiny算法对多路视频流数据进行实时分析,包括:首先,经过一个主干网络提取特征;再然后,特征图输入到嫁接网络,嫁接网络采用的是两种分辨率,最后得到两个不同尺度的特征图输出。YOLOV3-Tiny总共的网络层相比于其他网络结构,例如YOLOV3的107层网络结构大为减少,减少了计算量,加快了推理速度。可选地,YOLOV3-Tiny总共输出2个特征图,第一个特征图下采样32倍,第二个特征图下采样16倍。
可选地,输入图像经过YOLOV3-Tiny主干网络生成的特征图输入到嫁接网络后分为两路进行处理,第一路,顺序经过卷积操作后生成特征图一,第二路,经过卷积操作再经过上采样层,与主干网络生成的特征图拼接,生成特征图二。两张特征图为YOLOV3-Tiny输出的检测结果,检测框位置是一个4维向量,检测置信度是一个一维向量,类别是一个2维向量,分别是人、车。特征图还包括其他维度的信息,包括检测框的参考位置信息和不同尺度的先验框。
可选地,所述YOLOV3-Tiny目标检测算法采用多尺度特征图用于检测,即采用大小不同尺度的特征图进行检测,小特征图(特征图一)用来检测相对较大的目标,而大特征图(特征图二)用来检测相对较小目标。对于监控场景中物体大小不同,远近不同的特点,采用该实施例中的YOLOV3-Tiny目标检测算法非常适合该场景的检测,即大特征图用来检测相对较小的目标,而小特征图用来检测相对较大目标,对于不同大小的目标都能实现精确检测。
采用该实施例中的YOLOV3-Tiny目标检测算法非常适合人、车场景的检测,大尺度特征图属于底层级特征图,语义含义不够丰富但是精度高。而小尺度特征图属于高层级特征图,语义含义丰富,但是精度低。在特征提取过程,将小尺度特征图经过Upsample放大之后与大尺度特征图拼接,输出特征图既有较高的精度,又具有较丰富的语义含义,可以针对场景中物体大小不一的情况,提高检测精度。
图2给出了YOLOV3-Tiny目标检测算法网络结构的一个可选实施例。
如图2所示,输入到网络的图像(832*832*3)经过卷积池化操作,得到一个52*52*256的特征图;将此52*52*256的特征图再经过卷积池化操作,得到一个26*26*256的特征图;将此26*26*256的特征图分为两路,第一路经过卷积池化操作后得到一个26*26*18的特征图,即特征图一;第二路先通过一层卷积操作,接着通过上采样方法变换成52*52*128的特征图,然后与前面的52*52*256的特征图进行拼接,扩充特征图的维度,得到52*52*384大小的特征图,再经过卷积池化操作获得一个52*52*18的特征图,即特征图二。
分辨率信息直接反映的是构成目标的像素的数量。一个目标的像素数量越多,其对目标的细节表现就越丰富越具体,也就是说分辨率信息越丰富。因此,大尺度特征图提供的是分辨率信息。语义信息在目标检测中指的是让目标区分于背景的信息,即语义信息是让用户知道这个是目标,其余是背景。在不同类别中语义信息并不需要很多细节信息,分辨率信息大,反而会降低语义信息,因此,小尺度特征图在提供必要的分辨率信息下语义信息会提供的更好。而对于小目标,小尺度特征图无法提供必要的分辨率信息,所以还需结合大尺度特征图。本发明实施例中YOLOV3-Tiny目标检测算法更进一步采用了2个不同尺度的特征图来进行对象检测,能够检测到更高细粒度的特征。嫁接网络的最终输出有2个尺度分别为1/32,1/16;在经过几个卷积操作后得到的是1/32的预测结果,下采样倍数高,这里小尺度特征图的感受野比较大,因此适合检测图像中尺寸比较大的对象。然后这个结果通过上采样与前面的特征图concat(张量拼接),将darknet中间层和后面的某一层的上采样进行拼接。拼接的操作和残差层add的操作是不一样的,拼接会扩充张量的维度,而add只是直接相加不会导致张量维度的改变。再经过几个卷积操作得到1/16的预测结果,大尺度特征图的感受野小,适合检测小尺度的对象,比如小目标远处的行人在大尺度特征图中的尺寸较大,检测框并不能完全框住物体,而在小尺度特征图中可以较好的检测出物体。同理,大目标在小尺度特征图中较小,检测框会包含背景,而在大特征图中能较好的包围大目标,这些检测框,会进入本发明实施例的NMS算法,筛选出最好的检测框。
为了防止同一个人出现多个检测框,所述视频分析系统还包括:在所述YOLOV3-Tiny目标检测算法中加入非极大值抑制(NMS,non maximum suppression)算法,提高检测的准确性,最终确保一个人只有一个检测框。所述NMS算法是一个迭代-遍历-消除的过程,例如,检测目标是人、车,将YOLOV3-Tiny目标检测算法与NMS算法结合起来做进一步优化,在推理过程中每个目标会产生大量的候选框,比如,一个目标可能产生多个候选框,这时将此目标产生的候选框使用NMS算法,去除冗余的候选框,得到与此目标的区域最接近的候选框,也就是检测框,使得最后的检测数据更准确。
本发明实施例的NMS算法采用如下步骤,包括:将获得的所有n个候选框根据分类器的类别分类概率做排序,从小到大属于目标的概率分别为p
1、p
2、……、p
n,选择最大概率候选框,即p
n对应候选框,分别判断其他候选框(p
1~p
n-1对应候选框)与最大概率候选框的重叠度IOU(交并比,假设两个候选框的面积分别是A、B,则
)是否大于某个设定的阈值,如果其他某个候选框与最大概率候选框的重叠度超过阈值,则剔除该候选框,并标记当前最大概率候选框是需要保留下来的;接下来,从剩下的候选框中,选择最大概率候选框,然后判断其他候选框与当前最大概率候选框的重叠度,如果重叠度大于某个设定的阈值,则剔除该候选框,并标记当前最大概率候选框是需要保留下来的第二个候选框;重复上述步骤,直至找到所有被保留下来的候选框。可选地,每次筛选IOU阈值可以与前次筛选阈值相同,即IOU阈值为固定值,也可以每次筛选重新设置IOU阈值,即IOU阈值为变化量。
例如,检测目标是车辆,假设有6个候选框,根据分类器的类别分类概率做排序,假设从小到大属于车辆的概率分别为A、B、C、D、E、F。首先,从最大概率F候选框开始,分别判断A~E候选框与F候选框的重叠度IOU是否大于某个设定的阈值;然后,假设B、D候选框与F候选框的重叠度超过阈值,那么就剔除B、D候选框,并标记F候选框是需要保留下来的;接下来,从剩下的A、C、E候选框中,选择概率最大E候选框,然后判断A、C候选框与E候选框的重叠度,重叠度大于某个设定的阈值,则剔除,并标记E候选框是需要保留下来的第二个候选框。重复上述步骤,直至找到所有被保留下来的候选框。
若IOU阈值设定过高,则可能抑制的不够充分,而将IOU阈值设定过低,则多个正样本被整合到一起。传统的IOU阈值的设定方法,因为检测框的密集可能使NMS算法丢掉一些置信度(即概率)高的检测框,因此,在一些可选实施例中,本发明的NMS算法在IOU阈值设定上,IOU阈值Nt随着每次剔除对象的改变,阈值也随之改变,本发明提出的IOU阈值设定方法,设置初始阈值ko为0.3-0.5范围内的某个值,一开始阈值大,抑制不充分,也防止剔除掉一些置信度高的检测框,然后随着每次的筛选,阈值Nt每次递减一个增量d,即第n次的阈值Nt=ko-(n-1)d,若多次之后Nt小于等于下限值kw,则设置Nt=kw,例如,初始阈值ko为0.5,d=0.1,kw为0.3,第1次筛选Nt=0.5,第2次筛选Nt=0.4,第3次筛选Nt=0.3,因此,第3次筛选之后,Nt保持为0.3。
采用上述可选实施例设定阈值,即采用可变阈值的方案,可以加快剩余候选框的剔除速度,提高系统运行效率,尽可能快地将剩余候选框中最相关的候选框筛选出来,避免由于固定阈值导致同一张图重复筛选。
在另一些可选实施例中,基于上述可选实施例的IOU阈值设定方法,NMS算法每次选出来的最大概率候选框M,针对最大概率候选框M利用网络求出其边界框位置对应的密度dm,获得阈值Nm和Nt,Nm和Nt计算过程如公式(1)所示。如果第i个候选框bi与最大概率候选框M的重叠度IOU(M,bi)小于Nt,则该候选框保留;如果IOU(M,bi)大于Nm,则直接剔除掉该候选框;如果IOU(M,bi)大于等于Nt且小于等于Nm,则使用一个衰减函数降低第i个候选框的概率pi,然后更新保留,第i个候选框bi的概率pi计算过程如公式(2)所示。将保留下的候选框重复上述可选实施例公开的筛选过程,直至找到所有被保留下来的候选框。
Nm=max(Nt,dm),Nt=min(Nt,dm) 公式(1)
其中,pmax为当前最大概率候选框的概率,σ为常数。可选地,常数σ可以根据具体应用进行设置。可选地,σ=0.5。
采用上述可选实施例的方案,可以在利用可变IOU阈值设定方法提高筛选效率的基础上,为防止一些置信度高的检测框被误剔除掉,对其使用衰减函数降低置信度后进一步筛选,提高筛选精确度。
可选地,所述步骤(a4)中,所述推理过程采用TensorRT导入和执行的神经网络批量处理帧,获得推理结果。在推理过程中,如果输入多个视频流,该方法在同一时刻会获取多条数据,进行批量推理,得出多条结果,大大提高了利用率。
TensorRT主要有5个作用:
1、对权重参数类型进行优化。参数类型有FP32,FP16,INT8三种类型,使用较低的数据精度会降低内存占用和延迟,使模型体积更小,推理速度会有很大提升。
2、层间融合。在部署模型推理时,每一层的运算由GPU完成,GPU启动不同的CUDA(Compute unified device architecture)核心进行计算,由于CUDA进行运算的速度很快,大量的时间浪费在CUDA核心的启动和对每一层输入输出的读写操作上,造成了内存宽带的瓶颈和GPU资源的浪费。TensorRT对层间进行横向或纵向融合,大大减少了层的数量。横向合并可以把卷积、偏置和激活层合并成一个CBR结构,只占用一个CUDA核心。纵向合并可以把结构相同,但是权值不同的层合并成一个更宽的层,也只占用一个CUDA核心。合并之后的计算图的层次更少了,占用的CUDA核心数也少了,因此整个模型结构会更小,更快,更高效。
3、多流的执行。GPU擅长并行计算,除了不同的多个线程、Block以外,还有不同的Stream,多流的执行可以隐藏数据传输的时间。GPU把一大块数据切分成不同的小块进行计算,第一块数据在传输的时候,后面所有任务都在等待,当第一块传输完了之后第二块开始传输。与此同时,第一块数据开始计算,就可以把传输时间隐藏在计算时间里。
4、动态的Tensor Memory。在每个Tensor的使用期间,TensorRT会为其指定显存,这样可以避免显存重复申请,减少内存占用,提高重复使用效率。
5、内核调用。TensorRT可以针对不同的算法、不同的网络模型、不同的GPU平台,进行CUDA核的调整,以保证当前模型在特定平台上以最优性能计算。
可选地,所述步骤(a6)中,所述方法还包括获取检测结果进行后处理操作:首先,将检测结果传输到另一个线程当中,避免在当前线程中执行影响推理速度;然后分析检测结果,对检测到的人、车分类分析、存储结果;使用OpenCV绘制检测检测框到每一帧的图像上;最后显示带有检测框的每帧图像到界面上。
本发明实施例的视频分析方法与Jetson Nano平台绑定在一起,部署方便,操作灵活,可应用于多种监控场景。
下面给出Jetson Nano平台的一个具体实施例,Jetson Nano平台包括:四核64位ARM CPU和128核集成NVIDIA GPU,可提供472GFLOPS的计算性能,还包括4GB LPDDR4存储器,采用高效,低功耗封装,具有5W/10W功率模式和5V DC输入。
Jetson Nano平台成本低、功耗低,体积小,具有强大的GPU加速能力,内置Cuda、Opencv等,同时,DeepStream是NVIDIA基于GStreamer的插件系统开发,继承了GStreamer的特性。NVIDIA将TensorRT、cuDNN、CUDA、Video SDK等以插件的形式集成进GStreamer当中,以管道的形式进行智能视频分析应用的开发,将各个功能封装成组件,通过将对应功能的组件插入管线中,启动管线使数据按照要求在管线内流动,数据经过解析、编解码、预处理、算法处理后进行图像渲染。视频快速检索程序运行在Jetson Nano平台上,能够对多路视频进行实时检测分析,显示以及保存结果。
本发明并不局限于上面已经描述并在附图中示出的结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。