基于yolov3神经网络的车尾灯识别方法及系统与流程

文档序号:23339713发布日期:2020-12-18 16:34阅读:365来源:国知局
基于yolov3神经网络的车尾灯识别方法及系统与流程

本公开涉及智能识别技术领域,尤其涉及一种基于yolov3神经网络的车尾灯识别方法及系统。



背景技术:

近年来,无人驾驶技术飞速发展,无人驾驶汽车是集自动控制、视觉技术、人工智能等为一体的科学成果。现有的无人驾驶技术采用了激光测距,或是视觉辅助雷达测距。

现有技术中关于识别前车车尾灯灯语的方法,纯粹的采用边缘提取来实现识别(例如采用canny算子进行处理后查找边缘),识别的边缘规则性差,难以利用轮廓信息正确判断出车或车灯的存在;而进行基于颜色的区域分割与边缘轮廓查找来识别尾灯,在白天的尾灯和多外部环境干扰光源的情形下识别准确度有限,能否识别出尾灯主要依赖外部环境,前车距离稍远也无法识别。

另外,亦有采用fastr-cnn神经网络的算法,其对目标识别的能力相比上述轮廓提取有所提高,但是速度有限,实时性差。亦或是每一帧图片都采用yolo神经网络先识别汽车再识别尾灯的方法,但训练量大且实时性差,因为对于某帧图片使用此方法,可能涉及到n+1(n为神经网络识别出的汽车目标数量)的yolo神经网络运算,多次多目标的神经网络运算,难以采用并行计算,计算量巨大,耗时太长。



技术实现要素:

本公开提供了一种基于yolov3神经网络的车尾灯识别方法及系统,其技术目的是:为无人驾驶汽车或汽车辅助驾驶系统提供视觉保障方案,利用车尾灯刹车灯亮等灯语信息预测前车运动的趋势,实现车辆尾灯的识别和前后变化的对比输出;利用yolov3神经网络与颜色对比,以保障对于车的成功识别及车尾灯刹车灯亮起或熄灭的变化的读取的基本要求,同时也通过每个周期只使用一次yolov3神经网络,其余帧间隔地或连续地使用跟踪算法,以保障运算的速度足够快速,以满足实时性的要求。

本公开的上述技术目的是通过以下技术方案得以实现的:

一种基于yolov3神经网络的车尾灯识别方法,包括:

获取目标的实时视频并在所述实时视频中选择本周期的第一帧;

将所述第一帧导入到yolov3神经网络进行识别,得到第一返回值,所述第一返回值包括第一标签名、第一置信度和第一矩形盒;

通过所述第一标签名和所述第一置信度对所述第一矩形盒进行筛选,筛选缩减目标后得到第二矩形盒,在所述第二矩形盒中得到识别目标;

在所述本周期内,在所述实时视频中通过目标跟踪算法选择所述识别目标的第二帧,通过所述第二帧得到第三矩形盒;

对所述第二矩形盒和所述第三矩形盒分别进行变换;

将变换后的所述第二矩形盒与变换后的所述第三矩形盒的前后帧色彩进行对比,获取对比结果,根据所述对比结果得到目标车尾灯的变化。

进一步地,对目标车尾灯的所述变化编号并输出所述编号。

进一步地,所述第一矩形盒和所述第三矩形盒的变换包括:

其中,x、y为矩形范围的中心点坐标,w、h分别为矩形范围的宽度和高度,x'、y'、w'、h'分别为x、y、w、h变换后中心点坐标、宽度和高度。

进一步地,前后帧的色彩对比的所述对比结果包括:

其中,k为rgb的r通道数值和/或hsv通道的v通道数值,k'为k变化后的数值,δ为预设的阈值,δ∈[0.2,0.3);式(1)表示车尾灯变亮,式(2)表示车尾灯的亮灭状态与上一帧保持相同,式(3)表示车尾灯变灭。

进一步地,所述目标跟踪算法包括csrt跟踪算法或kcf跟踪算法。

一种基于yolov3神经网络的车尾灯识别系统,包括:

视频采集模块,获取目标的实时视频;

第一选择模块,在所述实时视频中选择本周期的第一帧;

识别模块,将第一帧导入到yolov3神经网络进行识别,得到第一返回值,所述第一返回值包括第一标签名、第一置信度和第一矩形盒;

筛选模块,通过所述第一标签名和所述第一置信度对所述第一矩形盒进行筛选,筛选缩减目标后得到第二矩形盒,在所述第二矩形盒中得到识别目标;

第二选择模块,在所述本周期内,在所述实时视频中通过目标跟踪算法选择所述识别目标的第二帧,通过所述第二帧得到第三矩形盒;

变换模块,对所述第二矩形盒和所述第三矩形盒分别进行变换;

色彩对比模块,将变换后的所述第二矩形盒与变换后的所述第三矩形盒的前后帧色彩进行对比,获取对比结果,根据所述对比结果得到目标车尾灯的变化。

进一步地,该系统还包括输出模块,所述输出模块对目标车尾灯的所述变化编号并输出所述编号。

本公开的有益效果在于:本发明实现了对于前车车尾灯变化的识别,相对于现有方法,在目标的实时视频中选择每个周期的第一帧,将第一帧导入到yolov3神经网络进行识别得到识别目标,在实时视频中通过目标跟踪算法选择所述识别目标的第二帧,同理采用目标跟踪算法选择所述识别目标在同个周期内的后续数帧。因此本公开每周期仅使用一次yolov3神经网络,其后采用目标跟踪算法,实时性更好;yolov3神经网络能够保证识别目标的准确性。

附图说明

图1为本公开方法流程图;

图2为本公开系统示意图;

图3为缩减目标的流程图。

具体实施方式

下面将结合附图对本公开技术方案进行详细说明。在本公开的描述中,需要理解地是,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量,仅用来表示不同的组成部分。本申请中,“第一帧”指的是获取到目标的实时视频后投入到yolov3神经网络进行识别的第一帧图像,“第一帧”图像中包括多个识别目标,通过筛选缩减目标后在“第一帧”选择出合格的识别目标;“第二帧”则是使用目标跟踪算法在实时视频中获取到的识别目标的第二帧,“第二帧”的图像有多个,且只要是在同个周期内,就会持续通过目标跟踪算法在识别目标中选择第二帧,直至该周期结束。

图1为本公开方法流程图,如图1所示,首先获取目标的实时视频并在实时视频中的一个周期内选择第一帧,将第一帧导入到yolov3神经网络进行识别,得到第一返回值,该第一返回值包括第一标签名、第一置信度和第一矩形盒;通过第一标签名和第一置信度对第一矩形盒进行筛选,筛选缩减目标后得到第二矩形盒,在第二矩形盒中得到识别目标。

在同个周期内,在实时视频中通过目标跟踪算法选择上述识别目标的第二帧,然后通过第二帧得到第三矩形盒。再对第二矩形盒和所述第三矩形盒分别进行变换,变换的目的即是为了颜色比对;将变换后的第二矩形盒与变换后的第三矩形盒的前后帧色彩进行对比,获取对比结果,根据对比结果得到目标车尾灯的变化。

yolov3神经网络经训练后再投入使用,在具体实施过程中,可采用darknetyolov3神经网络框架(josephredmon:darknet:opensourceneuralnetworksinc[eb/ol],其具体框架结构可参考网页http://pjreddie.com/darknet/,2013-2016),该框架仅作为一种实施方式之一,其他的yolov3神经网络框架亦能达到同样的效果。对于yolov3神经网络的训练,需要提供训练所用的数据(训练)集,制作训练集的方法如下:训练集应当包含充足的包含识别目标(即车辆)的图片,将车辆用car(即label_name,或其他目标用其他label_name)进行命名,选择出能够包含目标的矩形,然后人工将该矩形所在的中心点坐标与该矩形范围的宽与高标注出来,则图片和对图片的标注信息即为待投入神经网络的训练集。将图片与对应的标注信息所在的文本文件来喂入yolov3神经网络进行训练,必要时需要输出损失值(loss)来考察训练进行情况。同样的方法可准备另外一份数据集(测试集),利用测试集对训练后的神经网络模型进行测试,在测试集下神经网络的准确率较高,例如大于95%则可视为完成神经网络的训练。

作为具体实施例地,在将实时视频的某一帧图像投入到yolov3神经网络进行识别时,首先应对该帧图像进行预处理,以使得图像的尺寸、深度等能够匹配yolov3神经网络,除此之外,无需进行其他多余的例如卷积运算等操作。图像预处理操作可以基于opencv库完成,为了读取darknet框架,可以采用python语言进行编程,故可以基于opencv-python的库函数完成。

在darknet框架的python接口,可以读取的神经网络的返回值如下述元组所示:即(label_name,confidence,(x,y,w,h));

该式中label_name是yolov3神经网络识别出的某个目标的标签名叫做label_name(例如car)的标签;confidence是神经网络得出判断的置信度,置信度的值越高,根据训练结果神经网络得出结论的确定性越好;其内部嵌套的元组(x,y,w,h)则依次表明了回归矩形中心点坐标为(x,y),矩形的宽度与高度依次为w和h。

关于缩减目标,如图3所示,包括:对第一标签名进行筛选指的是在label_name为car以外的都不参与以后的操作;对第一置信度进行筛选指的是需要排除置信度过低(例如低于75%,也可以用于排除那些由于距离过远而不会影响摄像头所在车辆的车辆)的识别目标。

缩减目标后,为了减少车体色彩对后续车尾灯的影响,根据通常车尾灯在车身上的位置,将矩形盒作出如下变换:

其中,x'、y'、w'、h'分别为x、y、w、h变换后中心点坐标、宽度和高度。作为具体实施例地,坐标的原点默认为某一帧图像的左上角,将变换后的矩形作为最终的目标盒(进行色彩比对的目标盒)。

在实时视频中通过目标跟踪算法选择第二帧时,采用的目标跟踪算法为csrt跟踪算法,效果较好,也可以使用速度更快但质量稍差的kcf跟踪算法。目标跟踪算法跟踪的目标是:在实时视频中跟踪到yolov3神经网络识别出的识别目标,在实时视频中选择该识别目标的第二帧。在第一帧过后,可以根据计算机性能放出50帧以内的视频帧来进行跟踪,以防止跟踪时间过长而导致跟踪框的跑偏,作为具体实施例地,可以利用opencv的库函数实现此跟踪(cv2.trackercsrt_create()),值得注意的是,opencv的跟踪函数的跟踪盒的坐标确立和神经网络返回值的坐标含义不同,opencv的矩形坐标(x,y)是矩形左上角点的坐标,神经网络返回值中矩形盒的坐标是矩形中心点的坐标。

作为具体实施例地,对变换后的第二矩形盒和变换后的第三矩形盒的前后帧的色彩进行对比,是采用目标框内颜色均值的r、g、b单通道的前后帧的变化来判断是否车尾灯亮起,其中尤其需要关注r通道数值的变化。在各个通道数值归一化后(都除以255),当r单通道数值前后帧的正负变化量的绝对值超过预设的阈值时,可视作车尾灯亮或灭;另外,若利用hsv颜色空间,可以通过对比前后帧v通道的数值变化来判断车尾灯的变化。前后帧的色彩对比的对比结果如下:

其中,k为rgb的r通道数值或hsv通道的v通道数值,k'为k变化后的数值,δ为预设的阈值,δ∈[0.2,0.3)。式(1)为车尾灯变亮的判断式,包含了归一化过程,表述了某目标矩形盒内某通道数值均值从k变化到k'(k可取rgb通道的r通道或是hsv通道的v通道),若该变化是增长的且超过阈值δ,则判定为车尾灯变亮。同样,式(2)中k变化到k'的增长小于阈值δ时,则判定车尾亮灭状态与上一帧保持一致;式(3)中k变化到k'则增长为负增长,且该负增长超过了阈值δ,判定车尾灯由亮到灭。

作为具体实施例地,可以对上述车尾灯的变化进行编号,编号指将跟踪目标对应的情况变化编为车尾灯亮或车尾灯保持原有状态,例如,编号1表示车尾灯处于亮的状态,编号0表示车尾灯处于灭的状态,编号后可以用文本或是图像输出,从而能够更直观的了解到车尾灯的状态。

图2为本公开系统示意图,如图2所示,本公开所述的系统包括视频采集模块、第一选择模块、识别模块、筛选模块、第二选择模块、变换模块、色彩对比模块和输出模块。上述各模块的作用参考本公开所述的方法,不再赘述。

本发明的实现可以在windows系统中采用python进行编程,yolov3神经网络框架采用darknet,神经网络运行使用cuda(computeunifieddevicearchitecture,计算机并行计算架构)进行并行加速;图像处理编程过程中采用opencv-python模块包内的函数。以上仅为一种可行的较易实现的配置方法,并未对本发明进行任何实践限制,在其他系统上,或自己搭建yolov3神经网络框架或使用其他的开源yolov3神经网络框架,或使用其他的编程语言或其他的图形库进行编程等,凡是依据本发明的技术思想实现车尾灯识别的,或是对以上实施例简单修改或等同变化的,均属于本发明的保护范围内。

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