本文主要是介绍Efficient object detection and segmentation forfine-grained recognition,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
用于细粒度识别的高效物体检测和分割
摘要
我们提出一种用于细粒度识别的检测和分割算法。该算法首先检测可能包含物体的低级区域然后通过传播分割出整个物体。除了分割物体外,我们也可以缩放物体,如将其移动到图像中心,缩放归一化,从而降低背景的影响。随后,我们证明了联合该方法和最先进的分类算法能够明显改善分类效果,尤其实在那些公认为很难识别的数据集上,比如鸟群。
该算法比已知的类似情景的算法[4,21]更为高效。我们的方法也更简单,适用于不同的物体,如鸟类,花类,猫类和狗类。
我们在大量用于细粒度分类的基准数据集上测试了该算法。该算法优于这些数据集上的最优算法11%,比基准算法高效3-4%,在所有数据集上表现一致。我们也观察到在包含578种花的250000张图片的极具挑战的数据集上,该算法依然将识别率提高了4%以上。
1. 引言
该论文解决了同一基类物体的分类问题,比如,鸟类,花类等。该任务通常被称为细粒度识别[8,26]并且要求极少数人具备的专家,领域内的特殊知识。所以,开发针对此类任务的自动识别系统对于非专家尤其重要。
细粒度识别的主要挑战在于种群间的区别十分细微。而且,自动系统还会遇到额外的挑战。比如,图片是在具有多变和挑战的背景的自然环境下采集的,背景特征可能很明显会成为识别算法的干扰。然而,背景特征又是有用的,比如,花的叶子提供了区别于其它超类的有益的上下文。鸟类是运动的,不同的类通常在同一背景下,所以从背景中分离将十分有效。分割通常有助于提取感兴趣物体的边缘,提供用于识别的好的特征。检测和识别算法的另一个好处是可以定位物体,这是十分有效地,尤其在物体不在图片中心或者物体的尺寸不同于其他物体的时候。
我们提出一种高效的物体检测和分割算法,该算法可以有效地应用于物体定位和尺度归一化(图1)。我们的方法在识别之前分割可能的感兴趣物体,分割过程比之前的方法更快,可用于不同超类的分割,如鸟类,花类,猫类和狗类,并且改善了细粒度识别任务的识别性能。
在检测阶段,我们的方法是基于区域识别的(区域根据特定的感兴趣类别的不同而不同)。思路是对超类物体,比如鸟类,创建一个基于特征的基础检测器。这些检测器能够很好地指示是否存在该类物体并且帮助定位物体。我们进一步采用基于拉普拉斯的传播[28]基于低级线索分割整个物体。这里的关键是,传播过程由初始检测区域指导,但同时具有保持边缘和有效分割整个物体的能力。此外,获得的分割用于定位物体,尺度归一化物体和削弱背景的影响。这对最后的识别是非常有效的,我们将在实验中说明。
本论文的关键贡献在于:
我们提出一种基于区域指导的物体检测和分割方法。除了提供物体轮廓外,该算法还十分有用,因为我们可以重新归一化所有物体,将物体移到图片中心并占据整个画面,使它与其它物体具有可比性。我们采用了目前最先进的识别算法从分割后的图片中提取特征,并且获得了有效的可靠的人脸识别管道,极大程度上改善了性能。
我们采用了拉普拉斯传播[28],但是还用快速卷积的方法求解,极大地减少了分割时间,有原来的30s[3,20]减少到2.5s。这是非常重要的,因为现在分割可以作为识别管道的一个标准部分了。此外,该方法简单,并且可以用于不同的数据集,不像之前的工作,[3]除外,他们的方法被设计用于特定的种群,如花类,鸟类,猫类和狗类[8,17,20]。
我们的实验在良好的细粒度分类数据集(牛津花类数据集,包含102种花[17],牛津猫类和狗类数据集,包含37种猫和狗[20],Caltech-UCSD-200鸟类数据集,包含200种鸟类[26])上进行。这些数据集都是非常具有挑战的,尤其是最后一个,因为鸟类可能会遭遇各种可能的背景和物体纹理多样性。牛津猫类和狗类数据集包含感兴趣物体的不同的姿态和变形。提出的算法在上述三个数据集上的表现都比我们的基准算法要高3-4%。
此外,我们团队收集了大范围的花类数据集,包含578种花的250000张图片(图2)。该数据集是目前最大的细粒度数据集。除了数量大之外,识别任务也是很据挑战的,因为图片具有类内差异,类间相似,尺度不同等特性(图2)。我们测试了578个类的数据集,结果显示我们的算法性能依然比基准算法高了4.41%。
1. 之前工作
细粒度识别是一个具有重要的实践意义的话题,最近有很多工作都在解决这一任务,包括花类识别[17],鸟类识别[2,8,26],猫类和狗类识别[19,20],树叶识别[15]。
在目前的很多识别算法[1,4,21]中,分割都扮演了一个非常重要的角色。在[5,9]中,作者提出先检测物体的特殊部位,如猫的头部,然后再根据观察到的纹理和颜色来分割物体。另一项关于猫类和狗类的识别工作[20],提出在识别前先做分割。该工作应用了著名的GrabCut算法[21],该算法对于在线应用来说运行速度太慢。我们的工作在很大程度上接近该项工作。
分割时物体检测[10]或场景解释[11]的一个初始步骤。这些工作典型地处理图片中的小的连贯区域(超像素)并将低级分割放入物体检测管道[10]。虽然这些方法为识别[10]提供了很多深刻的见解和有用的工具,但并未为物体识别和检测提供有效的用于整个物体分割的算法。
其它相关工作,尽管未进行分割,但提议先定位潜在物体区域然后在识别中利用这些信息[14,22,23]。
2. 物体检测和分割
本节描述如何从图片中检测和分割一个或多个物体。作为第一步,一组基本的基于区域的物体部分检测被执行(参见3.1)。然后,使用这些区域初始化,执行拉普拉斯传播方法(参见3.2)。最后,对分割后的图片(包括检测和分割出的物体,可能经过裁剪和缩放)和输入图片执行特征提取和分类操作(参见4)获得最终类别。
3.1检测物体相关的区域
我们首先通过超类搜索可能属于物体的区域。为简单起见,我们采用Felzenszwalb和Huttenlocher[9]提出的超像素分割方法将真个图片分割为若干小的连贯区域。每个超像素区域都用下面的特征描述子[3]来描述:区域中所有像素的平均颜色(RGB),用LLC算法[25]编码后的该区域的HOG特征[6],通过将区域边界框归一化到6*6得到的形状掩码,[3]中提到的大小和边界特征。在这里,我们用编码后的HOG特征替代[3]中的SIFT特征,因为我们相信该特征具有更好的泛化能力并且因为在我们的分类算法(参见4)中,这些特征已经预先计算了且可以重复使用。
利用上述特征,哦我们训练一个分类模型用于判断一个区域是属于某个超类(比如,所有的花类)还是属于背景。利用训练图片的标准分割,我们将大部分与前景重叠的超像素区域作为正样本,大部分与背景重叠的超像素区域作为负样本。然后训练一个线性SVM分类器[7]。在无法得到标准分割图片的情况下,我们采用初始估计分割和迭代改善的方法训练模型。换言之,每个模型都用来分割更新后的图片。新分割的图片作为标准分割来构建改善的模型。这一过程在其他分割工作[3]中是标准的。鸟类猫类和狗类数据集都提供了标准分割图,所以我们构建了单个模型。对于牛津102花类数据集,我们采用[17]分割图片作为进一步迭代的种子。模型的训练是离线完成的。
该模型的一个优势是它是通用模型,能在不同的数据集上训练,并不特定于某个超类。在随后的实验中,我们将采用同一算法来训练模型和检测花类,鸟类,猫类和狗类。
3.2完全对象分割
3.2.1设置
令Ij表示图片的第j个像素,fj表示它的特征。分割任务的目标是为每个像素Ij找到一个标签Xj,当该像素属于物体时Xj=1,否则Xj=0。为了优化,我们放松对Xj的要求,允许它们取实数值。我们用每个像素的特征构成一个关联矩阵W。
j为相邻像素时,Wij采取非零值。我们采用像素的8邻域。额外地,我们设置Wii=0。这里我们令fj为像素的RGB颜色值,这主要处于加快计算速度的考虑,当然其它选择也是可以的。
目标是对于像素标签X最小化代价函数C(X)
,Y是一些(或所有)像素要求的标签。这些标签约束对于什么是物体什么是背景的先验知识设置非常有用(我们采用3.1中生成的SVM边际)。这是一个标准的拉普拉斯标签传播公式[28],上面的等式通常被写作下面的更方便的等价形式:
3.2.2优化
方程1的优化可以采用[28]提到的迭代方法来解决。或者,可以通过线性方程系统来求解,这正是我们采用的方法。通过对方程1变形后,采用线性方程求解,我们等到一个X的优化解:
在我们的实现中,我们采用共轭梯度法(带前提的)获得了很快的收敛。
因为不同的图片(数据集)的前景和背景的传播属性可能不同,我们单独检测只带前景的区域和只带背景的区域。这样做的原因是:对其中之一的分割效果很好,但对另一个的分割可能就不那么好了;联合前景分割和背景分割的结果可以生成更多的连贯分割并利用它们互补函数的优势。当Y大于等于0时,Yfg=Y,反之,Yfg=-Y,
在实践中,这两个分割是同时进行的,在优化前先归一化标签Yfg和Ybg:
这使得算法更迅速,因为它避免了单独的优化过程。同时,达到了更稳定的独立前景和背景分割相当的效果。为获得最后的分割对Xsegm用阈值0进行阈值化。
图3显示了标签传播算法和最终分割的结果。右上方的图片显示了每个超像素区域的分数(这里我们采用类间距)。右下角的图片显示了拉普拉斯传播的处理结果,给出了初始区域(方程2的解)。注意并不是所有的物体区域在最初都有高分数。这对于背景区域也是一样的。拉普拉斯传播之后,得到一个对前景和背景的更强的分割。图4显示了一个图像分割的例子。注意到所有的分割都很成功,尤其是对鸟类。然而,正如后面的实验提到的那样,绳子是部分分割都是有用的,并且我们的方法提供了性能上的改善。
这篇关于Efficient object detection and segmentation forfine-grained recognition的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!