一种机器视觉驾驶辅助***自动获取样本以提高识别精度的
方法
技术领域
本发明涉及一种能够不断地获得有效样本(注:本文中的样本,都是指图像样本),利用不断增大的样本池来训练分类器,并使用远程升级使得基于机器视觉的车辆驾驶辅助***设备,能持续不断提高识别精度的的方法。
背景技术
基于机器视觉的车辆驾驶辅助***,是高级驾驶辅助***(ADAS)中重要的一个组成部分。其主要原理,是通过摄像头捕捉影像,然后***作目标识别,再提供信息给驾驶员作判断,或者直接介入车辆控制。常用的功能有:行人侦测(Pedestrian Detection),前向碰撞告警(Forward Collision Warming),交通信号识别(Traffic Signal Recognition),等等。在这些功能的算法实现上,由于无法用一个或几个数学公式来直接并准确地描述目标的特征,所以在目标的特征判断上,都使用机器学习的方法,利用大量的有效样本,来训练机器,使得机器最终能够提供满意的识别率。目前最常用的算法框架有,Haar+AdaBoost,HOG(Histogram of Gradients)+AdaBoost,或者它们的升级变形版本,比如:DPM(Deformable Part Model),ACF(Aggregated Channel Feature)。这些算法都有一个共同的特征,就是,第一步:要获取足够多数量的正负样本(我们把这些样本的集合叫做样本池);第二步:获取样本的特征值(Haar,HOG,等等),进行分类,用统计学习的模式让机器获得分类方法(我们把这个过程叫做机器训练,或者机器学习);最后,设备根据分类方法来做目标检测。
目前常用的算法框架,比如,Haar+AdaBoost,HOG(Histogram of Gradients)+AdaBoost,或者它们的升级变形版本DPM等,在做目标检测时,其基础都是通过组合许多个最优弱分类器得到强分类器,来做目标的特征判断,强分类器计算出所有选中的最优弱分类器投票的加权求和结果,与阈值比较,从而检测出目标。
典型的AdaBoost关于分类器训练的过程如下:
1)给定样本集(x1,y1)……(xn,yn),其中(x1,x2……xn)为样本,yi=0,1分别代表是负样本和正样本。
2)初始化权重因子
分别对应y
i=0,1 其中m和l分别代表样本池中负样本与正样本的数量。
3)执行t=1,……T循环(直到t=T为止退出):
b.对于每一个特征j,训练弱分类器h
j,并计算其加权误差ε
t=∑
iw
i|h
j(x
i)-y
i|,这里,弱分类器
x是被测试样本(检测目标窗口里的图像),f
j(x)是特征j的特征值函数,τ
j是弱分类器h
j的阈值,p
j用于校正不等式符号的方向。
c.选取产生最小加权误差εt对应的弱分类器ht,我们称之为第t个的最优弱分类器。
d.更新权重因子如果样本x
i被正确分类,则e
i=0;否则,e
i=1,并
且
检测目标时,当强分类器计算出被检测目标特征的加权求和结果大于等于其阈值(本文中我们将此阈值标记符号为θ
强,
),***判定目标检出结果为正,被检测目标属于正样本类(属于要寻找的目标);反之,如果强分类器计算出被检测目标特征的加权求和结果小于其阈值,***判定目标检出结果为负,被检测目标属于负样本类(不属于要寻找的目标)。
为了提高***的检测率同时降低误识率,以及提高效率,***有时还会采用级联强分类器的策略,设计若干个强分类器,将他们由简单到复杂排列,经过样本池的训练使每个强分类器都有较高检测率以及较低的误识率;被检测目标最终是否通过,需要经过所有强分类器的筛选,只有在所有强分类器都投票通过的情况下,***才判定目标检出结果为正。
获取足够多的有效正、负样本(图像样本)对于目标检测精度来说至关重要。然而,获取正、负样本,特别是有效的正、负样本,是一个费时费力的过程,目前通常的方法是利用车辆在路上行驶,去捕捉视频,然后将捕捉到的视频文件,离线的逐个地提取有效的正、负样本,形成样本池,然后利用这个样本池来做机器训练。这种传统的样本获取方法,成本非常高,周期长,而且设备也不具备日常使用中不断提高识别精度的能力,一旦程序定型,设备出厂后,识别性能就已固定。
本发明的任务是提供一种方法,使机器视觉车辆驾驶辅助***能自动地不断获得有效样本,然后利用不断增大的样本池来训练分类器,并用软件远程升级车辆驾驶辅助***的主机(本文中主机是指安装在车辆里基于机器视觉的车辆驾驶辅助设备),使得基于机器视觉的车辆驾驶辅助***设备能在日常的使用中持续不断提高识别精度。
发明内容
这是一种新的能自动获取样本,并在日常使用中可以通过***训练反馈,从而不断迭代改善机器视觉驾驶辅助***识别精度的方法。如何在日常使用中不断地获取样本,并将样本上传来增强***训练用的样本池,是本发明方法的关键。
我们知道在强分类器检测投票的时候,它会把计算出的被检测目标特征的加权求和结果同阈值θ强比较。在本发明方法里,我们在主机的目标检测程序里增加设置了一个可疑样本阈值区间,根据强分类器的当前阈值再设置上下限,分别为θ强-ρ下和θ强+ρ上(在本文中将可疑样本阈值区间的下限和上限参数标记为ρ下和ρ上。ρ下和ρ上只是上下限的标记符号,在程序里可以用其他标记符号代替;如果有多个强分类器,不同的强分类器可以分别设置不同的上下限),当强分类器计算出被检测目标特征的加权求和结果落在区间(θ强-ρ下,θ强+ρ上),我们称被检测目标为可疑样本,***需要将它上传到样本池做进一步判断;如果最终判断为正样本,则可疑样本被加入正样本池,今后可用于训练用的正样本数增加1;反之,则可疑样本被认为是负样本,加入负样本池。这样一来,样本池可以在设备的使用中不断地扩大。扩大后的样本池用来迭代地做***训练反馈,从而获得不断改善主机识别精度的方法。
可疑样本阈值区间参数ρ下和ρ上,***能够远程设置调整他们的值来控制可疑样本阈值区间(θ强-ρ下,θ强+ρ上)的大小,从而达到可动态的控制可疑样本上传的数量和质量。因为可疑样本阈值区间(θ强-ρ下,θ强+ρ上)的大小和赋值可以与上传样本的数量和质量建立反馈机制,可疑样本阈值区间的下限和上限参数ρ下和ρ上在主机的目标检测程序里可以远程地动态设置,当样本上传数量过少时,***可以反馈指令给主机,修改目标检测程序里的可疑样本阈值区间下限和上限参数ρ下和ρ上的值来扩大可疑样本阈值区间(θ强-ρ下,θ强+ρ上),使得上传样本数量增加;反之,当样本上传数量过多时,***可以反馈指令给主机,修改目标检测程序里的可疑样本阈值区间下限和上限参数ρ下和ρ上的值来缩小可疑样本阈值区间(θ强-ρ下,θ强+ρ上),使得上传样本数量减少;同理,调整可疑样本阈值区间下限和上限参数ρ下和ρ上的数值,再根据一段时间的运行后来评价样本池收到的上传样本的质量,根据这些上传样本的质量状况再修正目标检测程序里可疑样本阈值区间下限和上限参数ρ下和ρ上的值,再继续收集样本;利用这样的反馈机制来优化设置可疑样本阈值区间(θ强-ρ下,θ强+ρ上),最终达到控制上传样本的质量。
设置可疑样本阈僮区间用于检出可疑样本,强分类器的当前阈值θ强并不受影响,被检测目标特征的加权求和结果的判断还是用当前阈值θ强作为判据,检出正样本和负样本,直到强分类器中的最优弱分类器和相关联的阈值θ强在***下一轮升级迭代被更新为止。设置和调整用于检测可疑样本的阈值上限和下限,只是用于检出可疑样本并上传到样本池。
如果***采用级联强分类器,那我们采用如下方法:
1)强分类器由简单到复杂排列,只要被检测目标被任何一个强分类器检出过为正样本,然后又被其他级联强分类器否决(判断为负样本),被检测目标都被界定为可疑样本,需要上传至样本池。越是被排在后面的强分类器否决的可疑样本,需要上传的优先级越高,这些可疑样本越有可能成为下一轮迭代训练中样本池里的“优质”样本。
2)如果级联层数不多,或是按照以上1)方式被检出的可疑样本数量不多,为了调节上传的可疑样本数量,我们可以为强分类器增设可疑样本阈值区间,根据每一个强分类器的当前阈值再设置上下限,分别为θ强-ρ下和θ强+ρ上(不同的强分类器可以分别设置不同的上下限),当强分类器计算出被检测目标特征的加权求和结果落在区间(θ强-ρ下,θ强+ρ上),我们称被检测目标为可疑样本,***将它上传到样本池做进一步判断。可以为全部强分类器增设可疑样本阈值区间,也可以为部分强分类器增设可疑样本阈值区间;越是排在后面的级联强分类器,增设可疑样本阈值区间的优先级越高。
最优弱分类器被分配的权重αt(以及由它们而导出的强分类器阈值θ强),可疑样本阈值区间参数ρ下和ρ上,在设备中均设置为可通过软件改写的参数,可以在***下一轮升级迭代被更新。强分类器里的每个最优弱分类器(其特征值函数ft(x)的定义,阈值τt,参数pt)也设置成软件可升级。对于级联强分类器,每个强分类器可以有各自不同的可疑样本阈值参数ρ下和ρ上。
随着样本池里有效样本数量的增加,***用新的样本来重新训练,进一步优化强分类器中各最优弱分类器的组合,权重αt(以及由它们而导出的阈值θ强),来提高检测性能。这是一个迭代过程,在本发明方法中,我们将这些需要被迭代更新的参数,设计成软件可改写的参数,在每次迭代中得到更新;***可以在使用中源源不断地得到新的样本注入,再利用更多的样本来重新训练分类器以提高性能,再将新分类器的参数重新部署到主机中,完成迭代升级。这是一个***的正向反馈,利用这个机制,我们就得到了一种自动获取样本并在日常使用中可以不断改善***识别精度的方法。
本发明方法的典型特征是:在主机的目标检测程序里设计了一种自动收集样本的机制,设置了一个可疑样本阈值区间,根据强分类器的当前阈值对应设置上下限,分别为θ强-ρ下和θ强+ρ上(不同的强分类器可以分别设置不同的上下限),当强分类器计算出被检测目标的特征加权求和结果落在区间(θ强-ρ下,θ强+ρ上)内,被检测目标鉴别为可疑样本,主机将它上传到***的样本池;如果检测算法采用级联强分类器,只要被检测目标被任何一个强分类器检出过为正样本,而后再被其他级联强分类器否决的,则被检测目标被界定为可疑样本,需要上传至样本池;级联强分类器同样也可增设可疑样本阈值区间(θ强-ρ下,θ强+ρ上)来控制可疑样本上传的数量和质量。最优弱分类器被分配的权重αt(以及由它们而导出的强分类器阈值θ强),可疑样本阈值区间参数ρ下和ρ上,在设备中均设置为可通过软件改写的参数,强分类器中的每个最优弱分类器(其特征值函数ft(x)的定义,阈值τt,参数pt)也设置成软件可重新定义。随着样本池里有效样本数量的增加,***重新训练,优化强分类器中的各最优弱分类器组合和它们的权重因子αt(以及由它们而导出的阈值θ强),再将新分类器的参数重新部署到主机的目标检测程序里中,完成迭代升级。
如果在新的一轮训练中,发现有必要不仅改变强分类器中最优弱分类器的组合,还需要改变强分类器中最优弱分类器的个数(参数T),则我们在主机程序的升级过程中将整个强分类器的定义和可执行代码部分做相应的替换,可以做到***的彻底升级。在主机程序的编写过程中要事先考虑到这样升级的可执行性,要预先设计好程序结构。
具体实施方式
支持本发明方法的基于机器视觉的车辆驾驶辅助***,从硬件功能模块上来讲,由主机(指安装在车辆里的机器视觉车辆驾驶辅助设备)和数据传输通讯设备(或模块)组成;从***的角度来讲,还包含有一个远程服务器。主机由摄像头(影像捕捉子***),执行样本特征值计算、分类和执行指令的处理器,与数据传输通讯设备做数据交换的通讯子***(比如WiFi、蓝牙和USB端口)以及与驾驶员人机交互的人机界面子***为基本组成单元;主机在硬件上可以同目前现存的机器视觉车辆驾驶辅助***没有区别,但是软件上必须保留其分类器数据结构(权重,阈值)的可编程更改和可升级性,并且能够采集可疑样本并将样本数据上传至数据传输通讯设备(或模块)。数据传输通讯设备可以是个人通讯设备,比如智能手机,或者带无线通讯功能的便携式个人设备(比如PAD),或者带无线通讯功能的智能可穿戴设备,它的基本功能是负责将主机传送过来的数据中继上传到远程服务器,并将远程服务器下传的数据和指令中继发送到主机。
主机必须根据本发明方法设置一个可疑样本阈值区间(θ强-ρ下,θ强+ρ上),或者通过级联强分类器的分类,将日常使用中不断采集到的可疑样本,存储在本机内存里。当主机同数据传输中继设备建立连接后,主机将可疑样本传输给数据传输通讯设备中继。数据传输通讯设备收到样本后,通过网络(有线无线皆可),在与远程服务器有连接时上传给服务器。如果条件允许,数据传输通讯设备可以实时地同主机,以及远程服务器保持网络连接,这样从数据传输角度来讲是最佳的(但不是必须的)。下行通道来讲,远程服务器将需要更新的参数通过数据传输通讯设备传送给主机,并给主机发指令来执行更新。我们也可以将数据传输通讯设备集成在主机内,比如说以T-Box的形式存在,可以随时随地的连接上网络,但是这是一个选项并非必要形式。
远程服务器的功能是接收上传的样本数据,再将这些样本筛选后(准确鉴别为正样本,或负样本),注入各自相应的样本池。样本筛选方式可以是编写程序让机器自动运行来筛选,也可以通过人工辨认的方式来筛选,或者两者兼而有之,具有灵活性。同时在服务器端,随着样本数量的增加,到达一定阶段后,会重新训练分类器,产生新一轮机器学***时接收到的上传样本数据数量和质量,来动态地调整可疑样本阈值区间参数ρ下和ρ上,从而控制上传样本数据数量和质量;新的可疑样本阈值区间参数ρ下和ρ上,远程服务器也要经过数据传输通讯设备下发到主机里去,并指令主机做更新后用新参数执行。
如果数据传送带宽允许,将被检测出的可疑样本(检测图片窗口里的图像数据)和它的完整的原始图像数据(未做分辨率缩放和局部采样的那幅被检出样本之原始图像)可以一起上传到服务器,而不仅仅只是传送检测窗口里的被检测目标样本数据。这种方式收集的数据齐全无损失,服务器端可以更完整和高质量的完成样本分析和采样。
本方法的最佳实施例是用智能手机做数据传输通讯设备,来连接主机与远程服务器。手机一方面可以利用本身的移动数据网络,连接主机与远程服务器达到实时宽带通讯;另一方面,手机作为便携式设备,也非常适合做数据中继,在不使用3G/4G宽带移动数据网络时,用本地连接(WiFi,USB)同主机进行交互,主机可以将大量的样本数据先传输给手机,然后手机在离开车以后,与家庭或者公共WiFi网络有连接后,再将数据样本上传给服务器,这样一来,甚至都不用产生额外的通讯费用。更重要的是,智能手机本身具有非常强的数据处理能力,我们可以在手机中运行处理程序,用来预处理可疑数据样本,将手机变为***的分布式处理单元,进行样本预处理,作更细致的判断,然后再将结果上传到服务器,提高效率并减轻服务器端的工作量。手机还可以对样本做数据压缩,减少数据上传流量。另一方面,许多人在开车的时候会用手机来做导航,这个时候,手机与主机的连接是非常自然的一件事情。在用手机作为数据传输通讯设备时,手机需要安装一个数据中继软件。
当使用本方法的主机达到一定数量后,收集的样本会源源不断的传到***样本池,形成集群效应,越多的主机被使用,就会有越多的样本被收集,***的识别能力也会被训练得更准确。