本发明涉及图像处理技术领域,尤其涉及一种基于机器视觉的负样本采集方法。
背景技术:
目前,在用机器学习算法进行目标分类时,需要用到大量图像样本来训练分类器,如深度学习算法对图像样本的需求量一般以万张为单位。图像样本大多数都是通过摄像头采集的,如:车载摄像头或行车记录仪等。为了获得更优的算法鲁棒性,机器学习算法对负样本的需求量则更大,如:在训练cascade分类器时,默认情况下,正负样本量之比在1:3到1:5之间。
相对于正样本来说,负样本是非常难以采集的,尤其特定应用场景的负样本。如果用理想的背景图像作为负样本,则更难办到,因为或多或少存在着待检测目标的干扰。
在一张视频图像中,目标前景在其中所占的比例通常非常小,而非目标区域则占据着非常大的图像区域。并且,在用车载摄像头进行样本采集时,目标前景在连续几帧、十几帧甚至几十帧的情况下,状态改变非常小,而非目标区域相对于目标前景而言,则变化要快很多。所以,将图片中的非目标区域裁剪出来作为负样本,则既可满足负样本的复杂性、多样性和与应用场景一致性要求,也容易实现,同时可提高视频样本的使用率。
现在,对负样本的收集,主要是通过样本公开库、人工裁剪和基于深度学习等方式。
网络上提供的免费样本公开库一般提供的样本量是非常有限的,而且有的公开库直接提供未标注和未裁剪的原始视频,根本无法满足分类器训练的需求。
人工裁剪一般都是通过众包的方式或科研企事业单位自己通过摄像头进行日复一日的采集,然后通过人工标注和裁剪来获取训练样本。人工进行样本收集的工作量非常大,效率非常低,很耗时。由于人完全参与,导致最终的负样本很随意,什么场景的都有,很可能给机器学习系统引入人为误差。
基于深度学习进行样本裁剪,主要是先基于深度学习网络对样本进行自动化裁剪,然后基于裁剪结果进行人工筛选。虽然一定程度上减少了人的参与,但是一方面,这种方式主要是用于正样本采集;另一方面,众所周知,深度学习对硬件的要求非常高,且计算量非常大,对硬件的计算能力和存储能力等有一定的要求,从而会增加前期成本的投入。
技术实现要素:
本发明提供一种基于机器视觉的负样本采集方法,旨在解决现有技术中的缺陷,实现在保证负样本与应用场景一致,数量上满足分类器训练需求的情况下,降低人工成本。
为达到上述目的,本发明所采取的技术方案为:
本发明提供一种基于机器视觉的负样本采集方法,包括:
训练分类器的步骤:利用样本公开库中的样本训练分类器;
读取视频帧图像的步骤:每间隔预设帧f读取一次视频帧图像;
设置roi的步骤:在视频帧图像中设置合适的roi;
获取目标矩形框位置的步骤:用所述训练后的分类器对所述视频帧图像进行目标检测,并用目标矩形框进行标识,同时记录所述目标矩形框位置ri;
获取裁剪矩形框位置的步骤:在该视频帧图像上,利用预设大小的滑行窗口获取候选负样本图像块的裁剪矩形框位置rect;
计算重叠面积的步骤:将所述裁剪矩形框位置rect依次与所述目标矩形框位置ri两两之间进行重叠检测,并计算重叠面积slap;
计算重叠面积比的步骤;
选择裁剪矩形框的步骤:将所述重叠面积比sr与预设阈值st进行比较,若所述重叠面积比sr大于所述预设阈值st,则舍弃该裁剪矩形框;否则保留裁剪矩形框,并返回计算重叠面积的步骤;
裁剪负样本的步骤:根据所述裁剪矩形框位置,在该帧图片上进行裁剪,作为负样本。
进一步地,所述基于机器视觉的负样本采集方法,还包括:
筛选负样本的步骤:当全部视频序列处理完毕后,对最后裁剪得到的负样本进行人工筛选,剔除掉不合格的负样本。
具体地,所述预设帧f为15~20帧。
具体地,所述滑行窗口的像素为130*130。
具体地,所述阈值范围st=0.3~0.5。
具体地,所述阈值范围st=0.4。
具体地,所述计算重叠面积slap包括如下步骤:
获取两矩形的左上角行坐标y1、y2,以及列坐标x1、x2,两矩形的宽w1、w2以及两矩形的高h1、h2;
确定最小的起始列start_col和最大的终止列end_col、最小的起始行start_row和最大的终止行end_row;
判断两矩形在行列方向上是否发生重叠,是则进入下一步;
计算其重叠面积slap。
具体地,所述判断两矩形在行列方向上是否发生重叠包括:
若w=w1+w2-(end_col-start_col)>0则表示两矩形在列方向发生了重叠,否则表示没有发生重叠;
若h=h1+h2-(end_row-start_row)>0则表示两矩形在行方向发生了重叠,否则表示没有发生重叠。
具体地,所述重叠面积slap=h*w。
本发明的有益效果在于:本发明通过传统机器学习算法,利用网络上样本公开库提供的样本就可实现负样本的自动裁剪,节约了硬件、人力和时间等前期成本。而且,对于一帧视频图像裁剪多个样本(包括正负样本),有利于提高视频样本的利用率,从而降低了单位成本;再者,裁剪到的负样本与正样本来自同一应用场景,有利于提高分类器的泛化能力。
附图说明
图1是本发明的基于机器视觉的负样本采集方法的流程示意图。
具体实施方式
下面结合附图具体阐明本发明的实施方式,附图仅供参考和说明使用,不构成对本发明专利保护范围的限制。
请参看图1,本发明的实施例提供一种基于机器视觉的负样本采集方法,包括:
第1步、训练分类器的步骤:利用样本公开库中的样本训练分类器。
例如,在车辆检测中,可用kitti、inriacardataset、mitcardataset、uiucimagedatabaseforcardetection、imagenet等样本公开库中的样本训练hog+svm或haar+cascade等检测系统。
第2步、读取视频帧图像的步骤:每间隔预设帧f读取一次视频帧图像。
例如,所述预设帧f为15~20帧。
由于实际情况下,在一组视频序列中,由于摄像头帧率与目标移动速度之间存在差异,导致非目标区域可能在连续十几帧或几十帧中状态的改变非常小,所以为了避免重复裁剪同一区域,加快自动化裁剪速度,减少后面人工筛选的工作量,可以每隔若干帧读取一次视频帧图像。
第3步、设置roi的步骤:在视频帧图像中设置合适的roi。
roi是regionofinterest的缩写,意为“感兴趣区域”。在机器视觉、图像处理中,rio是从被处理的图像中以方框、圆、椭圆、不规则多边形等方式勾勒出需要处理的区域。
所述roi是通过下采样(对图像进行缩小)或人为设定的方式来进行。例如:对于存在畸变的图像,则取中间区域部分作为roi。
第4步、获取目标矩形框位置的步骤:用第1步中训练后的分类器对所述视频帧图像进行目标检测,并用目标矩形框进行标识,同时记录所述目标矩形框位置ri。
在本步骤中,所述目标可能不止一个。
第5步、获取裁剪矩形框位置的步骤:在该视频帧图像上,利用预设大小的滑行窗口获取候选负样本图像块的裁剪矩形框位置rect。
例如,所述滑行窗口的像素为130*130。
第6步、计算重叠面积的步骤:将所述裁剪矩形框位置rect依次与第4步中的目标矩形框位置ri两两之间进行重叠检测,并计算重叠面积slap。
在本实施例中,所述计算重叠面积slap包括如下步骤:
首先,假设两个矩形为rect_1(x1,y1,w1,h1)、rect_2(x2,y2,w2,h2),其中,x1、x2分别对应两矩形左上角坐标的列,y1、y2分别对应两矩形左上角坐标的行,w1、w2分别对应两矩形的宽,h1、h2则分别对应两矩形的高。
第601步、获取两矩形的左上角行坐标y1、y2,以及列坐标x1、x2,两矩形的宽w1、w2以及两矩形的高h1、h2。
第602步、确定最小的起始列start_col和最大的终止列end_col、最小的起始行start_row和最大的终止行end_row。
具体地,start_col=min(x1,x2),end_col=max(x1+w1,x2+w2);
start_row=min(y1,y2),end_row=max(y1+h1,y2+h2)。
其中,min(x,y)表示取两者中的较小者,max(x,y)表示取两者中的较大者。
第603步、判断两矩形在行列方向上是否发生重叠,是则进入下一步。
在本实施例中,所述判断两矩形在行列方向上是否发生重叠包括:
若w=w1+w2-(end_col-start_col)>0则表示两矩形在列方向发生了重叠,否则表示没有发生重叠;
若h=h1+h2-(end_row-start_row)>0则表示两矩形在行方向发生了重叠,否则表示没有发生重叠。
第604步、计算其重叠面积slap。
在本实施例中,所述重叠面积slap=h*w。
第7步、计算重叠面积比的步骤。
具体地,所述重叠面积比sr=slap/{min[area(rect),area(ri)]},其中,min[area(rect),area(ri)]表示area(rect)与area(ri)中的较小者。
第8步、选择裁剪矩形框的步骤:将所述重叠面积比sr与预设阈值st进行比较,若所述重叠面积比sr大于所述预设阈值st,则舍弃该裁剪矩形框;否则保留裁剪矩形框,并返回第6步。
具体地,所述阈值范围st=0.3~0.5,在本例中,st=0.4。
第9步、裁剪负样本的步骤:根据第8步中得到的裁剪矩形框位置,在该帧图片上进行裁剪,作为负样本。
第10步、筛选负样本的步骤:当全部视频序列处理完毕后,对最后裁剪得到的负样本进行人工筛选,剔除掉不合格的负样本。
由于第1步中训练出的分类器存在一定的检测误差,会导致裁剪出来的少量负样本图像中存在检测目标的情况,这些负样本是不合格的,需要剔除掉。
以上所揭露的仅为本发明的较佳实施例,不能以此来限定本发明的权利保护范围,因此依本发明申请专利范围所作的等同变化,仍属本发明所涵盖的范围。