丧尸目标检测和你分享Python非极大值

2019年04月11日 来源:

雷锋(公众号:雷锋)按:本文为AI研习社编译的技术博客,原标题 (Faster) Non-Maximum Suppression in Python,作者为 Adrian Rosebrock。

翻译 | 陶玉龙 校对|吴桐 整理 | MY

我有一个困惑:我不能停止对目标检测的思考。

你知道的,昨晚在我在看《行尸走肉》时印刷纸批发
,不是享受僵尸野蛮和被迫吃人,或引人入胜的故事情节,我只想建立一个目标检测系统来对僵尸进行识别。

这个检测系统会很有用吗?可能不会。

我是说,如果一个僵尸跟在你后面那将是很明显的:光是那阵恶臭就会告诉你这是一个死人(嘿,看看这个一语双关)散发出来的,更不用说狰狞的牙齿和挥动的手臂。我们也可能会陷入那些从僵尸喉咙里发出的「脑子.... 脑子...」呻吟声中。

就像我说的,如果有一个僵尸在你身后,你当然不需要计算机视觉系统来告诉你这件事。但这只是一个每天都在我脑海里流淌的例子罢了。

为了给你一些相关信息,两个星期前,我在帖子中展示了如何使用直方图的方向梯度和线性支持向量机来建立一个目标检测系统。厌倦了 OpenCV Haar 复杂的结构和糟糕的性能,更不要说那么长的训练时间,因此我自己动手编写了自己的 Python 目标检测框架。

到目前为止,它运行得非常好,而且实现起来非常有趣。

但是在构建目标检测系统——重叠候选框这个不可回避的问题你必须处理旺旺棋牌代理
。这是会发生的,没有任何办法可以绕过它。但事实上,这是一个很好的迹象,表明你的目标检测器正在进行合理的微调,所以我甚至不说它是一个「问题」。

为了处理这些需要移除的重叠候选框(对同一个对象而言),我们可以对 Mean Shift 算法进行非极大值抑制。虽然 Dalal 和 Triggs 更喜欢 Mean-Shift 算法,我却发现 Mean Shift 给出了低于平均值的结果。

在收到我朋友 Tomasz Malisiewicz 博士(目标检测方面的专家)的建议之后,我决定将他 Matlab 上实现的非抑制方法移植到 Python 上。

上周我向你们展示了如何实施 FelZeZZWalb 等方法。这周我要向你们展示 MalISIEWICZ 这种运行速度快 100 倍的方法。

注:我本来打算在十一月发布这篇博客,但由于我糟糕的拖延症,我花了很多时间才把这篇文章写出来。不过无论如何,它现在已经在上了!

那么提速是从哪里来的呢?我们是如何获得这么快的抑制时间的呢?

继续阅读去找出答案。

(更快的)在Python上的非极大值抑制方法

在我们开始之前,如果你还没有读过上周关于非极大值抑制的帖子,我建议你先看一下那个帖子。

如果你已经看过那个帖子,那么在你喜欢的器中新建一个文件,命名为,让我们开始创建一个更快的非极大值抑制实现方法:

请花几秒钟时间仔细检查这个代码,将其与上周提出的 FelZeZZWalb 方法进行比较。

代码看起来几乎一样,对吧?

所以你可能会问自己:「这 100 倍加速是从哪里来的?」

答案是我们移除了一个内部循环结构。

上周提出的实现方法需要一个额外的内部循环来计算边界区域的大小和重叠区域的比率。

在本文中取而代之的是,Malisiewicz 博士用矢量化代码替换了这个内部循环,这就是我们在应用非极大值抑制时能够实现更快速度的原因。

与其像上周那样我一个人逐行逐行地阅读代码,不如让我们一起来看一下其中关键的部分。

我们这个更快的非极大值抑制函数第 行基本与上周相同。我们通过抓取检测框的(x,y)坐标,计算它们的面积,并根据每个框的右下 y 坐标将他们分类到框列表中。

第 行包含我们的加速过程,其中第 行特别重要。我们不再使用内部 for 循环来对单独对每个框进行循环,而是使用 ximum 和 nimum 对代码进行矢量化,这使得我们能够在坐标轴上找到值和小值而不仅仅是一个数。

注意:你在这里必须使用 ximum 和 nimum——它们允许您混合标量和向量。然而 x 和 n 函数就没有这样的功能,当你使用它们时,你会发现有一些非常严重的 bug 需要查找和修复。当我把算法从 Matlab 移植到 Python 时穴位贴厂家
,我花了很长时间来解决这个问题。第 47 行和第 48 行也被矢量化,在这里我们计算每个矩形的宽度和高度来进行检查。相似的,第 51 行上的重叠率也被矢量化。从那里,我们只需删除我们的 IDX 列表中的所有条目,这些条目都大于我们提供的重叠阈值。通常重叠阈值在 0..5 之间。

Malisiewicz 等人提出的方法与 FelZeZnZWalb 等的基本相同。但通过使用矢量化代码,我们能够在非极大值抑制上实现 100 倍加速!

运行更快的非极大值抑制方法

让我们继续并研究几个例子。我们从这张照片的顶部的一个恐怖的小女孩僵尸开始:

图 1:图像中有 3 个检测边界框,但非极大值抑制方法让其中的两个重叠框消失。

......

想要继续阅读,请移步至我们的AI研习社社区:

更多精彩内容尽在 AI 研习社。

不同领域包括计算机视觉,语音语义,区块链,自动驾驶,数据挖掘,智能控制,编程语言等每日更新。

端可以扫描二维码访问

雷锋雷锋

雷锋

相关文章
  • 股民如何从年报里淘金
    股民如何从年报里淘金

    进入蛇年,年报披露渐入高潮。读年报,把握投资机会,成为春季股市的主旋律蛇年到来,A股上市公司2012年年报披露大戏不断升温。数据统计显示,截至2月18日,沪深两市共有65家上市公司披露了年报。接下来,年报披露将进入高峰期。年报行情历来都是开年股市的...

  • 昆明拟调整现行煤气价格市民排队充值煤气卡
    昆明拟调整现行煤气价格市民排队充值煤气卡

    昆明拟调整现行煤气价格 市民排队充值煤气卡昨天,春苑一家煤气交费点交费的市民比往常增多 王中杰 摄12月4日,昆明市发改委发布了“关于举行昆明市煤气价格调整听证会的公告”,拟对现行煤气价格进行调整,预计明年1月上旬听证。消息一出,昆明市多个中石...

  • 土耳其或对叙利亚全面动武中东局势或致原油
    土耳其或对叙利亚全面动武中东局势或致原油

    土耳其或对叙利亚全面动武 中东局势或致原油巨震在叙利亚炮弹落入土耳其境内引发人员伤亡之后,土耳其方面旋即对叙利亚展开了炮击报复。双方的交火在截止至本周一(10月8日)已经进入到第六天,而周一当天,土耳其总统居尔更是警告称,两国之间很有可能将发...

  • 好声音起底美女白领陈冰身家30亿陈乐基粉丝是陈奕迅
    好声音起底美女白领陈冰身家30亿陈乐基粉丝是陈奕迅

    第三季《中国好声音》上周五(1日)播出了第三期,“四转”频频,学员质素一人更比一人高,被友评点为目前为止的“本季”。在播出的9位学员中,有几位成为了上周末的茶歇谈资,比如貌美声猛的陈冰、质朴有力的帕尔哈提、粤语首唱的陈乐基、又唱又画...

  • 新天龙八部阿紫定妆照雷翻友图
    新天龙八部阿紫定妆照雷翻友图

    定妆照张晓禾“阿紫就必须全身是紫的吗?衣服紫的,脸上嘴上都被高锰酸钾给染了!突然很担心阿朱……”日前新《天龙八部》开机,剧组曝光的阿紫定妆照,照片中的阿紫身着紫色衣服,脸和嘴都是紫色,引来众多友的吐槽。近日导演赖水清也在微博上公布了乔...

  • 不用等不用绕出门就乘公交车
    不用等不用绕出门就乘公交车

    东华苑小区以前出门走300米才能见公交车;如今,小区门口有数辆公交车通行,平均几分钟就一趟东华苑小区1999年建起来时,我就在这住。那时候,出门得步行300米到华北广播电影电视管理干部学院门口,才能坐上公交车。现在小区北门有三条公交路线,东门也有两...