本发明涉及图像处理和计算机视觉目标检测领域技术领域,特别涉及一种基于视觉相关判别网络的室外场景安全监控方法。
背景技术:
夜晚的时候,各种公共场所的监控都需要值班人员在时时刻刻看着以防止有突发情况的发生,公共场所的安全定义很多样,需要值班人员在盯着,根据个人的经验进行分析,这样会造成人员的资源浪费,也会使工作人员的辛苦程度大量增加。针对室外安全的视觉检测判别方法就有着重要的意义。
过去的监控方法是基于图像处理技术实现的,存在着噪音干扰,语义推断能力不足,视觉判断能力弱,场景识别效果很差的问题。随着计算机算力的提升,基于机器学习算法的视觉判别方法的提出,相对于过去的场景识别,准确率有了很大的提升,鲁棒性也大大增强。但是传统的算法所采用的数据存在着大量的非视觉先验信息,方法上很容易形式化,不具备进一步推断真实场景的语义信息。从而导致现有的关系数据的表征并不能明显提升相关场景推断。
技术实现要素:
为了解决现有技术推断真实场景困难而导致的场景推断结果不准确的问题,本发明提供一种基于视觉相关判别网络的室外场景安全监控方法。
所述的一种基于视觉相关判别网络的室外场景安全监控方法,其特征在于:包括如下步骤:
s1:采集室外不同场景的图片,通过视觉标记工具对各个图片中的室外常见事物进行标记,并且标注图片类别;
s2:基于yolov3网络搭建深度学习网络;
s3:根据yolo3采用k-means聚类得到先验框的尺寸,为每种下采样尺度设定3种先验框,总共聚类出9种尺寸的先验框,并利用k-means推断出abchorbox的数据集;
s4.利用步骤s1所得到的anchorbox数据集训练yolov3网络,得到训练后的数据集;
s5.把s4步骤获得的经过训练的数据集进行视觉相关网络vd-net进行判别训练,对yolov3检测出的图像进行标签推断,得到图像判别结果;
s6、根据s5步骤所获得的图像判别结果,利用场景真实语义的符合度进行对比,判断是否真正获取了场景的真实内容。
本发明的有益效果是:本发明利用yolov3深度学习网络和视觉相关判别网络vd-net训练算法模型,识别室外公共场所的安全状况,通过推断场景里面是否有危险的定义来定义是否安全,具有识别准确率高的优点。
附图说明
图1为本发明的流程图。
图2为视觉判别网络原理示意图。
图3为本发明中输入到输出的示意图。
图4为不同的方法检测能力对比图。
具体实施方式
下面结合附图对本发明进行进一步的说明。
具体实施例i:为了进一步叙述本发明的特征、理念、技术手段以及所达到功能目的。下面开始进一步详细叙述实施方案。
所述的一种基于视觉相关判别网络的室外场景安全监控方法,具有以下步骤:
步骤s1:通过微软开发的coco数据集软件下载3种大小各2000张以上室外人员不同场景的图片,图片长宽尺寸大于400像素;并用视觉标记工具labelimg对各个图片中室外常见的事物包括人、日常活动、各种突发情况的特征图进行标注进行标记矩形框,并且标注好图片类别。
步骤s2:基于yolov3检测网络搭建用于室外场景状况的深度学习网络,在yolov3的网络架构是采用了darknet-53(53个卷积层)进行图像的特征提取,在层次里面设置快捷链路(shortcutconnections)。
步骤s3:yolo3检测算法采用k-means聚类得到先验框的尺寸,为每种下采样尺度设定3种先验框,总共聚类出9种尺寸的先验框。所述的先验框有三种,分别对应大中小三种大小尺寸的对象,利用k-means推断出abchorbox的数据集。
步骤s4:利用步骤s1所得到的数据集训练yolov3网络。对象分类输出采用logistic,因为室内事物很多都具备多标签。所以为了让语义推断具有真实有效性,需要输出数据集有实际价值。
步骤s5:把所获得的经过训练的数据集进行视觉相关网络vd-net进行图像的一个判别训练。分辨出yolov3检测出的图像进行标签推断,保证数据中最终获得的是所需要的高语义价值的关系图像。
步骤s6:根据所获得的场景真实语义的符合度进行对比是否真正获取了场景的真实内容。
对数据集进行目标框标定,待标记的数据集的图片大小基本分为大中小三个层次,数据集标签包括目标坐标(x,y,h,w)框内的物体类别c,其中类别c主要分为:person、dangerthing、safething三种。将数据集分成两部分:训练集和数据集,比例为7比3。
yolov3的架构包括darknet-53,因为有53个卷积层,所以是darknet-53,里面有三个预测层:13、26、52.采用了三个尺度的特征图,13*13、26*26、52*52。每一个尺度采用三种先验图,所以k-mean.有9种先验框。
传统的yolov3采用的256x256尺寸,但是本发明采用的是416*416尺寸的图片。由于图片尺寸大小的不一致,先进行归一化。如图2,darknet53架构拆分开看主要由一系列的1*1和3*3卷积层组成,每个卷积层后面都有一个leakyrelu激活函数和bn归一化层。strides默认为(1,1,1,1),padding设定为same。yolov3检测网络在三个特征图中通过(4 1 c)*k个卷积层进行预测,c是类别,预设边界框k默认是3。4k个参数负责预测边界框的偏移量,k个参数负责预测目标边界框内包含目标的概率,c*k个参数负责预测k个预设边界框对应c个目标类别的概率。输入尺寸为416*416*3的图片,在不同层次的网络采样后,yolov3算法输出相对于输入图像32、16、8倍的三组采样图。输出特征图层分别为13*13*3、26*26*3、52*52*3,3代表三个先验框。对于一个416*416的输入图像,在每个尺度的特征图的每个网格设置3个先验框,总共有13*13*3 26*26*3 52*52*3=10647个预测。
训练模型前进行数据的预处理,采用coco数据集进行训练图片的获取和标签,专为对象检测、分割而生,这样就不在单独的需要调节色彩,消除噪音等等预处理。可以用python对coco数据集的使用,输出图片的大小为416*416.利用k-means算法对训练集中的目标框尺寸聚类,k为6,代表6种不的尺寸框为:
[[[w1,h1][w2,h2][w3,h3]][[w4,h4][w5,h5][w6,h6]]]]
yolov3使用anchorboxes来预测boundingboxes的坐标,由于卷积神经网络的平移不变特性,且abox的位置已经被栅格固定住,用k-means计算出abox的w、h值,而yolov3通过abox对bbox进行坐标预测,坐标相对于栅格边长的比例(0-1),之间的公式如下:
w=anchor_width*input/downsamles
h=anchor_height*input_height/downsamples
由于设定的输入是416*416,采样的倍数分别为32倍、16倍、8倍采样率。可以通过上述公式进行推导。在用abox来预测bbox的时候,先是通过k-means来获取yolov3所需要的anchors的尺寸,anchors包含目标的w和h。围绕着预测无数目标的形状,通过参考abox的大小可以通过kmeans的聚类统计得出最大概率的目标尺寸。在计算样本点到质心的距离的时候算出两点之间距离,然后将样本划为距离最近的一个质心。yolov3中样本点数据是为了计算出目标点对于的bbox的形状,通过计算abox和bbox的iou即相似度,iou的计算公式为交并集比例:交叉面积/总面积.计算每一个样本点到cluster质心的距离,d=1-iou(x[i],centroids)的意思是样本点到每个cluster质心的距离。通过公式np.argmin(d,axis=1)得到每一个样本点离哪个cluster质心的距离最近,不断重复上述过程,直到质心不再变化,聚类完成。yolov3在用python运算时,要求的label文件中,填写的是相对于width,height的比例.所以得到的anchorbox的大小要乘以模型输入图片的尺寸。
在对bbox进行预测开始后,采用logisticregression。yolov3每次对bbox预测输出都是(tx,ty,tw,th,to),如图3所示,通过预测的四个坐标值为xi、yi、wi、hi.求真实目标框坐标,对目标框坐标进行偏差调整。偏差调整公式为:
bx=σ(xi) cx
by=σ(yi) cy
pr(object)*iou(b,object)=σ(to)(1)
根据bx、by、bw、bh画出原图目标框,并标记目标框类别c,yolo_v3只会对1个prior进行操作,也就是那个最佳prior。而logistic回归就是用来从9个anchorpriors中找到objectnessscore(目标存在可能性得分)最高的那一个使用logistic进行预测性输出,根本性的操作就行对anchor进行包围范围的目标评分,logistic回归根据上述的公式,从9个anchorpriors中寻找概率最大的值。
回归预测中所才用的损失loss函数,是根据多个均方差相加所得到的,分类部分和执行度c是用keras的binary_crossentropy来预测,然后进行整合,得到最后的损失函数。
具体的损失函数如下所示:
xy_loss=object_mask*box_loss_scale*k.binary_croddentropy
(raw_true_xy,raw_pred[.....,0:2],from_logits=true)
wh_loss=object_mask*box_loss_scale*0.5*k.square(raw_true_wh-raw_pred[...,2:4])
confidence_loss=object_mask*k.binary_crossentropy
(object_mask,raw_pred[...,4:5],from_logits=true)
(1-object_mask)*k.binary_crossentropy(object_mask,
raw_pred[...,4:5],from_logits=true)*ignore_mask
class_loss=object_mask*k.binary_crossentropy(true_class_probs,
raw_pred[...,5:],from_logits=true)
xy_loss=k.sum(xy_loss)/mf
wh_loss=k.sum(wh_loss)/mf
confidence_loss=k.sum(confidence_loss)/mf
class_loss=k.sum(class_loss)/mf
loss =xy_loss wh_loss confidence_loss class_lose
loss=tf.print(loss,[loss,xy_loss,wh_loss,confidence_loss,class_loss,k.sum(ignore_mask)],message='loss')
这部分主要就是通过yolov3来实现训练数据集的输入输出,输入416*416的图像,通过darknet网络得到三种不同尺度的预测结果,每一个尺度都对应n个通道,夹带着预测的信息。然后得到输出的信息就开始下一个视觉判别算法的实现了。
在本发明的视觉检测判别中,认知部分的侧重点在于深入去考虑整个室外场景的真实语义,从单个物体到整个室外场景,视觉关系在于物体间的交互信息,整体来源于多物体的纠缠状况。视觉判别里面的关系数据是真实语义的重要节点,是视觉判别的基础。
视觉判别算法中有一点很关键,在于消除先验偏置信息,先验偏置信息在关系数据中,会导致语义的真实含义发生一个偏差,比如设定的位置标签:”on”、“under”“in”这类标签会导致真实关系的推断退化成简单位置信息。不是真实的场景语义的推断。传统的筛选方法缺乏有效性。本发明公开的视觉判别网络,通过自主训练学习,分辨my出非视觉有效关系的标签,在筛选后的数据里面保存高语义价值的标签信息。这样在室外场景的真实判别中有着有效的应用。
视觉判别网络vd-net用于分辨标签数据是否具有高语义价值,通过之前yolov3视觉检测算法得出的boundingbox位置信息和类别信息c作为输入信息,而不考虑其他图像信息。
如图1,提出的vd-net用于分辨对象关系是否视觉相关。网络仅需要物体对象的位置信息bbox和类别信息c,并将两种信息做编码输入,而不考虑图像信息。
具体输入如下:
输入信息为公式(1)推断出bbox的(x,y,w,h,c)。包含着室外场景里事物信息的中心点,宽、高、位置信息、类别信息等等。用类别标签的glove特征向量作为输入。所设定的视觉判别网络在达到所需求的效果的同时防止过拟合,采用四个全连接层进行逐步的分类。全连接层可以理解为分类器,起到了映射到样本标记空间的作用,对前层是全连接的全连接层可以转化为卷积核为1x1的卷积;而前层是卷积层的全连接层可以转化为卷积核为hxw的全局卷积,h和w分别为前层卷积结果的高和宽。四个全连接层就可以形成一个有效视觉判别网络。
如图1所示,在设计的cnn中,先是前置两个全连接层
开始对模型进行训练时的各个参数设置参考以往成熟的项目,训练超参数:学习率设定根据validationerror反复验证设定为0.01,batch_size初始值为32或者64,训练集个数为21000,验证集为6000,正则化衰减值为0.99,训练epoch迭代次数为50,利用性价比最高的rtx2060gpu在深度学习框架tensorflow中进行训练,得到model.ckpt模型。
将训练模型导入yolov3神经网络,输入coco数据集得到测试图片,通过需要预测的坐标值为(xi,yi,wi,hi)去求目标框的坐标,然后把目标框放到测试图片中绘画,最后得到预测目标框bbox的[box_mins_x,box_mins_y,box_maxes_x,box_maxes_y]归一化为原图中,即boxes/对应的网格尺寸*416。然后把这些数据放到视觉判别网络中进行进一步的筛选。对目标框进行关系数据的筛选分类,把高语义的数据筛选出来,然后进行对比场景真实语义的判断,若是真实场景语义准确率超过0.5,就可以判断为符合算法预期。
如图4,yolov3一共进行了10647个预测,相对于yolov2多了近10倍,所以对于物体的检测提高了很多。
本发明形成更深的网络层次,以及多尺度检测,提升了map及小物体检测效果。如果采用cocomap50做评估指标(不是太介意预测框的准确性的话),yolo3的表现相当惊人,在精确度相当的情况下,yolov3的速度是其它模型的3、4倍。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易变化或替换,都属于本发明的保护范围之内。因此本发明的保护范围所述以权利要求的保护范围为准。
1.一种基于视觉相关判别网络的室外场景安全监控方法,其特征在于:包括如下步骤:
s1:采集室外不同场景的图片,通过视觉标记工具对各个图片中的室外常见事物进行标记,并且标注图片类别;
s2:基于yolov3网络搭建深度学习网络;
s3:根据yolo3采用k-means聚类得到先验框的尺寸,为每种下采样尺度设定3种先验框,总共聚类出9种尺寸的先验框,并利用k-means推断出abchorbox的数据集;
s4.利用步骤s1所得到的anchorbox数据集训练yolov3网络,得到训练后的数据集;
s5.把s4步骤获得的经过训练的数据集进行视觉相关网络vd-net进行判别训练,对yolov3检测出的图像进行标签推断,得到图像判别结果;
s6、根据s5步骤所获得的图像判别结果,利用场景真实语义的符合度进行对比,判断是否真正获取了场景的真实内容。
2.根据权利要求1所述的一种基于视觉相关判别网络的室外场景安全监控方法,其特征在于:所述的s3步骤中,首先对s1步骤获得的图片数据集进行目标框标定,待标记的数据集的图片大小分为大中小三个层次,数据集标签包括目标坐标(x,y,h,w)框内的物体类别c,其中类别c主要分为:person、dangerthing、safething三种标签。
3.根据权利要求1或2所述的一种基于视觉相关判别网络的室外场景安全监控方法,其特征在于:所述的s3步骤中,输入尺寸为416*416*3的图片,在不同层次的网络采样后,yolov3算法输出相对于输入图像32、16、8倍的三组采样图;输出特征图层分别为13*13*3、26*26*3、52*52*3,3代表三个先验框。
4.根据权利要求1或2或3所述的一种基于视觉相关判别网络的室外场景安全监控方法,其特征在于:所述的s3步骤具体为:
对数据集通过k-means聚类算法获得数据集中3种不同尺度目标框的anchorbox;k-means聚类算法的k初步设定为8,聚类中心初始化采用扩展二叉排序树,步骤如下:
输入:分类的数目k和包含n个对象的数据集
输出:8个初试聚类中心点
s301:为数据集创建一颗扩展二叉排序树
s302:计算每一个划分的密度pj和中值mj
s303:选择maxpj和中值点mj为第一个初始点c1
s304:选择第2到第8个初始点
dj=mink=1,2(e(ck,mj))]·ρj;其中,maxdj为ct;t=2to8;j=1top。
5.根据权利要求1所述的一种基于视觉相关判别网络的室外场景安全监控方法,其特征在于:在s6步骤中,将输入图片分成13*13、26*26、52*52个网格大小,每个网格预测三个box,每个box需要有(x,y,w,hc)五个基本参数;利用yolov3采用三种训练层次去提升目标尺度精度,yolov3的输出为三组不同目标尺度下的预测值。
6.根据权利要求1所述的一种基于视觉相关判别网络的室外场景安全监控方法,其特征在于:在s6步骤中,对训练模型采用的数据进行预处理,包括对图片的色彩进行亮度调节,进行图片角度矫正处理,再对数据集进行均值消减预处理的步骤。
7.根据权利要求1所述的一种基于视觉相关判别网络的室外场景安全监控方法,其特征在于:在s6步骤中,利用logistic输出进行对象分类预测;且yolov3对boundbox进行预测的时候,采用logisticregression,每次对boundbox进行predict时,输出是(tx,ty,tw,th,to);预测的四个坐标值为xi、yi、wi、hi,偏差调整公式为:
bx=σ(xi) cx
by=σ(yi) cy
pr(object)*iou(b,object)=σ(to)
根据bx、by、bw、bh画出原图目标框,并标记目标框类别c。
8.根据权利要求1所述的一种基于视觉相关判别网络的室外场景安全监控方法,其特征在于:在s6步骤中,通过标签信息包括boundingbox,class推断非视觉关系;在关系数据中,通过对视觉关系的训练,使网络通过图像的视觉信息,推理得到关系语义信息。
9.根据权利要求1所述的一种基于视觉相关判别网络的室外场景安全监控方法,其特征在于:在s6步骤中,根据室外场景中的高语义价值判断结果,判断图片中的安全场景符合程度,若是符合程度超过0.5,这场景中的对象身处于一个安全环境,否则就是处于一定的威胁状况内。
技术总结