目标检测笔记(一)译Histogram of Oriented Gradients

Histogram of Oriented Gradients and Object Detection

https://www.pyimagesearch.com/2014/11/10/histogram-oriented-gradients-object-detection/#

如果有问题,欢迎留言交流。

译1、如果你关注我推特,你或许已经注意到我一直所做的工作关于对已个或二个样例

采用Python框架(函数包)去快速的目标探测,通过方向梯度直方图和线性支持向量机

2、说实话,我不能理解 opencv中提供的Haar cascade classifiers ,一边传递方法极其快的,一边他们留下许多空间让我们去做的。如果你使用OPENCV做人脸检测,你就会准确地知道我所讲的。

 

图1,图像中人脸检测,有一个共同的问题当使用cv2.detectMultiScale.

3、在OPENCV中为了检测人脸、人、物体、(和排除非检测物体),你发很多时间调试cv2.detectMultiScale. 参数。一次又一次,这些相同的参数去检测一张又一张图像结果是没法保证的。这需要极大批量的人脸检测数据库变成一个巨大的任务,由于你很关心错误地人脸检测和错过完全的人脸,因为每一张图像主要成分有很少的参数。

4、采样Viola-Jones detectors解决这个问题已经近15年了。如果这种检测方法是一种很好的方法,我或许现在会非常振奋。但是这个领域已经有本质上的进步。回顾Viola-Jones detectors在2001年,它在那时是个很先进的方法,他们是一种激发人的巨大力量,在这个可信的先进的方法之后,我们才有了现在的目标检测。

5、如今,Viola-Jones detectors已经不是目标检测的唯一选择了。我们有目标检测方法,例如:使用 using keypoints, local invariant descriptors, and bag-of-visual-words models.关键点(特征点)、局部不变描述符、视觉袋-文字模型.我们有方向梯度直方图。我们有deformable parts models、 Exemplar models. (范特模型)。我们正利用深度学习取识别不同规模的目标

6、总之、尽管方向梯度直方图描述符来做目标识别已经将近20年了,但是它任然在今天被大量的使用,并有着很好的效果。方向梯度直方图是由 Dalal and Triggs in their seminal 2005 paper,方向梯度直方图做人检测方法显示了,图像描述符HOG和线性支持向量机能够被训练成高准确率的目标分类器,尤其是在人检测方面。

方向梯度直方图和目标检测

我将不去复习使用HOG训练每一个目标探测器的整个细节过程,仅因为每一步能被很详细的描述。但是我想发几分钟,详细地讲下使用HOG训练一个目标探测器的算法。按下面步骤:

step1、样本P,从你训练数据中你想检测的目标为正样本,并从这些样本提取HOG描述符

step2、样本N,来自负样本训练,它不包含你所探测任何目标的样本,也从这些样本中提取HOG描述符,实际中,N数量远大于P

step3、在正负样本训练线性支持向量机

step4、图2:滑动窗口斤近的例子,在样例图像中,我们滑动窗口从左到右,

从顶部到底部。注意:仅( a single scale )单一标记被显示,在这个例子中,这歌窗口可以被应用到图像多个标记(multiple scales of the image)

Apply hard-negative mining. 

因为每一张图像和每一副图像的每一种可能在你负样本(),应用滑动窗口技术,滑动窗口通过图像。每个窗口计算HOG描述符,并应用分类器。如果你的分类器(或错误地)将被给窗口内物体分类成一个目标(这将会是错的正样本结果),记录错的正样本相联系的特征向量,,连同分类的可能性。这个过程叫做hard-negative mining. 

step5、在hard-negative mining stage ,发现false-positive samples

按它们的confidence (即可能性)排序,和使用hard-negative samples重新训练你的分类器

(注意:你可以迭代应用步骤4-5,但是在实际中,hard-negative mining的一个阶段是足够的)。The gains in accuracy on subsequent runs of hard-negative mining tend to be minimal.)

step6、你的分类器被训练和可以被应用到测试数据。就像Step4,对你测试的每一张和每张图像的规模(scale),并应用滑动窗口技术(sliding window technique)。在每个窗口提取HOG描述符,并应用分类器。如果你的分类器通过高效大的可能性探测目标,标记 窗口中的盒子?(the bounding box of the window)。在你完成浏览图片之后,应用非极大限制去除去多余的和部分重叠的边界盒子。

这些仅仅是最少量的必须步骤,但是通过用6步过程,你可以训练并构建你自己的木匾检测分类器。拓展这个过程包括一个deformable parts model 和 Exemplar SVMs,在这里你可以训练每种正样本例子而不是一个‘他们的集合?’(a collection of them)。

但是,如果你曾经已经做过目标检测,在图像中你想要解决探测 multiple bounding boxes,在你想要探测目标的图像上。

这就是个例子 是部分重叠.overlapping bounding box problem

注意在左边我们有6个重叠的边界盒子,它准确的检测出Audrey Hepburn’s face,但是5个边界盒子都提及相同的脸,我们需要一个方法去抑制区域中5个最小的边界盒子,仅保留最大的一个,正如右图。

这是共同的问题,无论你是正在使用iola-Jones based method or following the Dalal-Triggs paper.

(有多种方法去修正这个问题, Triggs et al. 建议使用Mean-Shift algorithm去探测 bounding box space边界盒子孔家多个模型,通过利用边界盒子( bounding box) (x,y)坐标,和)

腾讯翻译:

有多种方法可以解决这个问题。triggs等人建议使用Mean-Shift算法,利用包围盒的(x,y)坐标和图像当前尺度的对数来检测包围盒空间中的多个模式。

我亲自尝试过这种方法,但对结果并不满意。相反,更好的方法是依赖一个具有更高精度的强分类器(这意味着很少有误报),然后对包围框应用非最大抑制。

金山翻译:

我花了一些时间在python中寻找一个很好的非最大抑制(有时称为非极大值抑制)实现。当我找不到它时,我和我的朋友Tomasz Malisiewicz博士聊天,他的整个职业生涯都在研究目标探测器算法和HOG描述。实际上,没有人比Tomasz在这个领域有更多的经验。如果你有过这样的经历的话。读他的任何论文,你就会知道为什么。他的工作太棒了

总之,在和他聊天之后,他给我指出了两个MATLAB实现。第一种是基于Felzenszwalb等人的工作和他们的可变形零件模型。

第二种方法是由Tomasz本人为他的样本svm项目实现的,这是他的论文和ICCV 2011论文“用于目标检测和超越的样本集成”。值得注意的是,Tomasz的方法比felzenszwalb等人快100倍以上。而且,当你执行非最大抑制函数的时候,100倍的加速非常重要。

我已经实现了felzenszwalb等人和Tomasz等人的方法,并将它们从MATLAB移植到python。下周我们将从felzenszwalb方法开始,接下来的一周我将讨论Tomasz的方法。虽然Tomasz的方法要快得多,但我认为看到这两种实现都很重要,这样我们就能确切地理解为什么他的方法会得到如此剧烈的速度。

一定要呆在这里,看看这些帖子!这些绝对是建立你自己的物体探测器的关键步骤!

Summary

在这篇博文中,我们学到了一些关于对象检测器的历史课程。我们还偷偷地浏览了一个python框架,我正在研究如何在图像中检测对象。

在此基础上,我们简要回顾了方向梯度法的直方图是如何与线性SVM相结合来训练鲁棒目标检测器的。

然而,无论您使用何种方法检测对象,您都可能会在要检测的对象周围设置多个边界框。为了移除这些冗余框,您需要应用非最大抑制。

在接下来的两周内,我将向您展示两种非最大抑制的实现,您可以在自己的对象检测项目中使用这些实现

一定要输入你的电子邮件地址在下面的形式,以收到通知时,这些帖子去直播!非最大的抑制是绝对关键的获得一个准确和健壮的目标检测系统使用HOG,所以你肯定不想错过这些帖子!

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. Viola-Jones算法: 优点: - 算法速度非常快,能够在实时系统中使用 - 算法对于不同的目标具有较好的泛化性能,可以应用于人脸识别、人体检测等多个领域 缺点: - 对于遮挡、光照变化、角度变化等因素敏感,准确率有限 - 对于非正面的人脸检测效果较差 - 对于目标的大小、旋转角度等要求较高,需要对输入图像进行预处理 2. HOG算法: 优点: - 算法对于光照变化、遮挡等因素具有一定的鲁棒性,能够在一定程度上保持检测的准确性 - 算法能够在不同的尺度下进行目标检测,对于不同大小的目标具有较好的适应性 缺点: - 算法对于目标的姿态、旋转角度等变化较为敏感,需要进行预处理 - 算法对于背景噪声较大的情况下,会对检测结果产生影响 3. YOLO算法: 优点: - 算法速度较快,能够在实时系统中使用 - 算法能够在单个网络中完成目标检测和分类,具有较高的精度和召回率 - 算法对于目标的姿态、旋转角度等变化较为鲁棒 缺点: - 算法对于小目标的检测准确率较低 - 算法对于密集目标的检测准确率较低 - 算法对于目标的长宽比例较大的情况下,检测效果不佳 4. CNN算法: 优点: - 算法能够自动学习特征,无需手工提取,具有较高的鲁棒性和准确性 - 算法对于目标的姿态、旋转角度等变化较为鲁棒 - 算法在图像分类、目标检测等多个领域具有广泛的应用 缺点: - 算法需要大量的计算资源和数据集支持,训练时间较长 - 算法对于数据集的质量要求较高,需要进行预处理 - 算法的可解释性较差,难以理解和解释其决策过程 5. MTCNN算法: 优点: - 算法能够同时完成人脸检测、关键点检测和人脸对齐等任务,具有较高的精度和鲁棒性 - 算法对于不同尺度、姿态、光照等因素具有较好的适应性和泛化性能 缺点: - 算法运行速度较慢,对于实时系统应用有一定限制 - 算法对于遮挡、模糊等情况下的检测效果较差 - 算法对于不同种族、年龄等差异较大的人脸检测效果有限
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值