YOLO—实时对象检测的新视角

近几年,在深入学习的帮助下, 目标检测领域取得了巨大的进步。对象检测是标识图像中的对象并在其周围绘制边界框的任务, 也就是定位它们。在计算机视觉由于其众多的应用从自动驾驶汽车到安全和跟踪是一个非常重要的问题。

以前的对象检测方法通常是让管道按序分段。这会导致每一段完成的任务和最终目标之间的脱节, 最终的目标是在一个图像的对象周围绘制一个紧密的边界框。一个充分利用在联合的方式中侦测错误的终端框架将是一个更好的解决方案,不仅是为了更好地训练模型, 还要提高检测速度。

这就需要YOLO发挥作用。Varun Agrawal对Statsbot团队讲述了,为什么YOLO比其他方法的对象检测更好的理由。

在图像分类领域,深度学习已被证明是一个强大的工具,机器在这项任务中的表现已经达到人类水平。早期的检测方法利用这一能力将对象检测的问题转化为一个分类, 即识别图像所属的对象类别。

通过两个过程来完成这个方法:

  • 第一阶段涉及产生数以万计的提案。它们只是图像中的特定矩形区域, 也称为边界框, 该系统在图像中被认为是类似对象的东西。边框框提案可能围绕图像中的实际对象,并将它筛选为第二阶段的目标。
  • 在第二阶段,图像分类器将对边界框方案中的子图像进行分类, 分类器会认定它是特定的对象类型还是非特定对象或背景。

尽管这两个过程很精准, 但由于所产生的提案数量庞大, 并且在提案的产生和分类方面缺乏联合优化, 因此存在像效率这样的缺陷。这导致了每个阶段无法真正领会更大的图像,而是孤立自己的小问题,因此也限制了它们的表现。

YOLO是什么

YOLO代表“You Only Look Once”,是一种在2016年由Joseph Redmon和Ali Farhadi在华盛顿大学开发的基于深度学习的对象检测算法。

这系统之所以称之YOLO,它不再进入潜在对象的多个子图像,只进入整个图像的深度学习系统一次。然后, 你会一次性得到所有的边界框以及对象类别分类。这就是YOLO的基本设计决策, 对目标检测任务的一个全新的视角。

YOLO的工作方式是将图像细分为NxN的网格, 或更具体的原始论文上的7×7的网格。每个网格单元 (也称为锚点) 表示一个分类器, 它负责在潜在对象周围生成 k个边界框, 其地面中心位于该网格单元 (在论文中k为 2) 中, 并将其分类为正确的对象。

请注意:边界框不限于网格单元格内,它可以在图像的边界内展开,以容纳它认为它负责检测的对象。这意味着在当前版本的YOLO中,系统生成98大小不等的边界框,以容纳场景中的各种对象。

成绩

对于更密集的对象检测, 用户可以根据需要将K或N设置为更高的数字。但是, 在当前配置下, 我们有一个系统,能够在对象周围输出大量的边界框, 并根据图像的空间布局将它们分类为不同的对象类别之一。

这是在推理时通过图像的单次传递完成的。因此, 联合检测和分类有助于更好地优化学习目标 (损失函数) 和实时性能。

事实上, YOLO的结果很有希望。在挑战Pascal VOC检测挑战数据集时, 当每秒运行45帧时,YOLO成功达到平均精度,或者说mAP为63.4 (最高100)。相比之下,更快的R-CNN VGG 16上mAP达到了 73.2, 但每秒只运行7帧, 效率低了6倍。

在下表中可以看到YOLO与其他检测框架的比较。

如果让YOLO牺牲一些精度, 它可以每秒运行155帧, 但是mAP只有52.7。

因此, YOLO 的主要卖点是它在目标检测的实时检测速度上表现良好。这使得它在诸如机器人、自动驾驶汽车和无人驾驶飞机等系统中的应用非常重要(因为时间足够短在这里很重要)。

YOLOv2框架

最近, 同一组研究人员发布了新的YOLOv2框架, 它利用最近在一个深度学习网络设计中的结果, 去建立一个更高效的网络, 并使用Faster-RCNN的主机框架理念,以减轻学习网络问题。

结果显示这个检测系统表现更好,在Pascal VOC检测数据集上mAP达到了78.6的最佳性能 , 而其他系统中, 如改良版的Faster-RCNN (Faster-RCNN ResNet) 和SSD500, 在同一数据集上mAP只达到了76.4和76.8。

关键的区别在于性能速度。最好的YOLOv2模型的运行速度为40FPS,而Faster-RCNN ResNet则为5个FPS。

SSD500运行速度为45fps,具有76.8(与SSD500相同)mAP的YOLOv2分辨率较低的版本的运行速度为67 FPS。这样我们可以看到YOLOv2的设计选择结果能力有多优秀。

总之,YOLO在实时对象检测上表现出色, 这是资源匮乏的深度学习算法时代的重要中心阵地。随着我们迈向更加自动化的未来, 像YOLO和SSD500这样的系统将迎来巨大的进步, 并实现伟大的AI梦想。

原文发布于微信公众号 - ATYUN订阅号(atyun_com)

原文发表时间:2017-10-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AI科技大本营的专栏

资源 | 一文掌握机器学习所有值得看的视频、课程、工具

越来越多的开发者和学习者转投人工智能,但很多人鉴于跨行的难度,并不知道如何开始学习人工智能和机器学习。本文是作者Arun Agrahri整理的一些优秀文章,内容...

33910
来自专栏IT派

深度学习框架排名:TensorFlow第一,PyTorch第二

上周,Keras作者、谷歌研究科学家François Chollet晒出一张图,他使用Google Search Index,展示了过去三个月,ArXiv上提到...

3534
来自专栏人工智能LeadAI

译文 | 简明 TensorFlow 教程:混合模型

确保你已经阅读了第一部分(http://camron.xyz/index.php/2016/08/22/in_a_nutshell_part_one/) 在本文...

3946
来自专栏null的专栏

推荐算法——基于矩阵分解的推荐算法

一、推荐算法概述 对于推荐系统(Recommend System, RS),从广义上的理解为:为用户(User)推荐相关的商品(Items)。常用的推荐算法主要...

40610
来自专栏CVer

[计算机视觉论文速递] ECCV 2018 专场3

Amusi 将日常整理的论文都会同步发布到 daily-paper-computer-vision 上。名字有点露骨,还请见谅。喜欢的童鞋,欢迎star、for...

520
来自专栏AI启蒙研究院

别人都在晒18岁照片,而我却在学习~

643
来自专栏计算机视觉战队

CVPR—II | 经典网络再现,全内容跟踪

今天首先给大家带来“YOLO”!也被上一篇“Faith”读者说对了,在此也感谢大家的关注与阅读,O(∩_∩)O谢谢 YOLO ? 看到这个封面,相信很多很多...

3255
来自专栏个人分享

最大熵的Java实现

这是一个最大熵的简明Java实现,提供训练与预测接口。训练采用GIS训练算法,附带示例训练集。本文旨在介绍最大熵的原理、分类和实现,不涉及公式推导或其他训练算法...

723
来自专栏PPV课数据科学社区

【学习】ggplot2绘图入门系列之一:导论

1 什么是ggplot2 ggplot2是用于绘图的R语言扩展包,其理念根植于《Grammar of Graphics》一书。它将绘图视为一种...

28010
来自专栏测试开发架构之路

小波系数

1. 求小波变化系数时a b怎么取? 小波变换的概念是由法国从事石油信号处理的工程师J.Morlet在1974年首先提出的,通过物理的直观和信号处理的实际需要经...

3418

扫描关注云+社区