编译 | Arno

来源 | Medium

目标检测(Object detection)是一种计算机视觉技术,旨在检测汽车、建筑物和人类等目标。这些目标通常可以通过图像或视频来识别。

目标检测在视频监控、自动驾驶汽车、人体跟踪等领域得到了广泛的应用。在本文中,我们将了解目标检测的基础知识,并回顾一些最常用的算法和一些全新的方法。

目标检测的原理

目标检测定位图像中目标的存在,并在该目标周围绘制一个边界框(bounding box)。这通常包括两个过程:预测目标的类型,然后在该目标周围绘制一个框。现在让我们来回顾一些用于目标检测的常见模型架构:

  • R-CNN

  • Fast R-CNN

  • Faster R-CNN

  • Mask R-CNN

  • SSD (Single Shot MultiBox Defender)

  • YOLO (You Only Look Once)

  • Objects as Points

  • Data Augmentation Strategies for Object Detection

R-CNN 模型

该技术结合了两种主要方法:使用一个高容量的卷积神经网络将候选区域(region-proposals)自底向上的传播,用来定位和分割目标;如果有标签的训练数据比较少,可以使用训练好的参数作为辅助,进行微调(fine tuning),能够得到非常好的识别效果提升。

论文链接: https://arxiv.org/abs/1311.2524?source=post_page---------------------------

进行特定领域的微调,从而获得高性能的提升。由于将候选区域(region-proposals)与卷积神经网络相结合,论文的作者将该算法命名为R-CNN(Regions with CNN features)。

该模型在对每张图片提取了约2000个自底向上的候选区域。然后,它使用一个大型CNN计算每个区域的特征。然后,利用专门针对类别数据的线性支持向量机(SVMs)对每个区域进行分类。该模型在PASCAL VOC 2010上的平均精度达到53.7%。

该模型中的目标检测系统由三个模块组成。第一个负责生成类别无关的候选区域,这些区域定义了一个候选检测区域的集合。第二个模块是一个大型卷积神经网络,负责从每个区域提取固定长度的特征向量。第三个模块由一个指定类别的支持向量机组成。

该模型采用选择性搜索(selective search)方法来生成区域类别,根据颜色、纹理、形状和大小选择搜索对相似的区域进行分组。在特征提取方面,该模型使用CNN的一个Caffe实现版本对每个候选区域抽取一个4096维度的特征向量。将227×227 RGB图像通过5个卷积层和2个完全连接层进行前向传播,计算特征。论文中所解释的模型与之前在PASCAL VOC 2012的结果相比,取得了30%的相对改进。

而R-CNN的一些缺点是:

  • 训练需要多阶段: 先用ConvNet进行微调,再用SVM进行分类,最后通过regression对 bounding box进行微调。

  • 训练空间喝时间成本大: 因为像VGG16这样的深度网络占用了大量的空间。

  • 目标检测慢: 因为其需要对每个目标候选进行前向计算。

Fast R-CNN

下面的论文中提出了一种名为Fast Region-based Convolutional Network(Fast R-CNN)目标检测方法。

https://arxiv.org/abs/1504.08083?source=post_page---------------------------

它是用Python和c++使用Caffe实现的。该模型在PASCAL VOC 2012上的平均精度为66%,而R-CNN的平均精度为62%。

与R-CNN相比,Fast R-CNN具有更高的平均精度、单阶段训练,训练更新所有网络层并且特征缓存不需要磁盘存储。

在其架构中, Fast R-CNN接收图像以及一组目标候选作为输入。然后通过卷积层和池化层对图像进行处理,生成卷积特征映射。然后,通过针对每个推荐区域,ROI池化层从每个特征映射中提取固定大小的特征向量。

然后将特征向量提供给完全连接层。然后这些分支成两个输出层。其中一个为多个目标类生成softmax概率估计,而另一个为每个目标类生成4个实数值。这4个数字表示每个目标的边界框的位置。

Faster R-CNN

论文链接: https://arxiv.org/abs/1506.01497?source=post_page---------------------------

论文提出了一种针对候选区域任务进行微调和针对目标检测进行微调的训练机制。

Faster R-CNN模型由两个模块组成:负责提出区域的深度卷积网络和使用这些区域的Fast R-CNN探测器。候选区域网络(Region Proposal Network)以图像为输入,生成矩形目标候选的输出。每个矩形都有一个objectness score。

Mask R-CNN

论文链接: https://arxiv.org/abs/1703.06870?source=post_page---------------------------

论文提出的模型是上述Faster R-CNN架构的扩展。它还可以用于人体姿态估计。

在该模型中,使用边界框和对每个像素点进行分类的语义分割对目标进行分类和定位。该模型通过在每个感兴趣区域(ROI)添加分割掩码(segmentation mask)的预测,扩展了Faster R-CNNR-CNN。Mask R-CNN产生两个输出:类标签和边界框。

SSD: Single Shot MultiBox Detector

论文链接: https://arxiv.org/abs/1512.02325?source=post_page---------------------------

论文提出了一种利用单个深度神经网络对图像中目标进行预测的模型。该网络使用应用于特征映射的小卷积滤波器为每个目标类别生成分数。

这种方法使用了一个前馈卷积神经网络,针对那些方框里的目标类别实例,产生一个固定大小的边界框的集合和分数。增加了卷积特征层,允许多比例特征映射检测。在这个模型中,每个特征映射单元(feature map cell)都链接到一组默认的边界框(default box)。下图显示了SSD512在动物、车辆和家具上的性能。

You Only Look Once (YOLO)

论文提出了一种基于神经网络的图像边界框和类概率预测方法。

论文链接: https://arxiv.org/abs/1506.02640?source=post_page---------------------------

YOLO模型每秒实时处理45帧。YOLO将图像检测看作是一个回归问题,使得它的管道非常简单。因为这个简单的管道,它非常快。

它可以实时处理流视频,延迟小于25秒。在训练过程中,YOLO可以看到整个图像,因此能够在目标检测中包含上下文。

在YOLO中,每个边界框都由整个图像的特征来预测。每个边界框有5个预测:x, y, w, h,和置信度。(x, y)表示边界框的中心相对于网格单元格的边界。w和h是整个图像的预测宽度和高度。

该模型作为卷积神经网络实现,并在PASCAL VOC检测数据集上进行了评价。网络的卷积层负责提取特征,全连接层负责预测坐标和输出概率。

该模型的网络架构受到了用于图像分类的GoogLeNet模型的启发。该网络有24个卷积层和2个全连接层。该模型的主要挑战在于,它只能预测一个类,而且在鸟类等小目标上表现不佳。

该模型的平均精度达到52.7%,但有可能达到63.4%。

Objects as Points

论文提出将目标建模为单个点。它使用关键点估计来找到中心点,并回归到其他目标属性。

论文链接: https://arxiv.org/abs/1904.07850v2?source=post_page---------------------------

这些属性包括3D位置、姿态和尺寸。它使用了CenterNet,这是一种基于中心点的方法,比其他边界框探测器更快、更准确。

目标大小和姿态等属性是由图像中心位置的特征回归得到的。该模型将图像输入卷积神经网络,生成热力图。这些热力图中的峰值表示图像中目标的中心。为了估计人体姿态,该模型检测关节点(2D joint)位置,并在中心点位置对其进行回归。

在COCO上,该模型以每秒1.4帧的速度实现了45.1%的平均精度。下图显示了与其他研究论文的结果进行比较的结果。

Learning Data Augmentation Strategies for Object Detection

数据增广包括通过旋转和调整大小等操作原始图像来创建新图像数据的过程。

论文链接: https://arxiv.org/abs/1906.11172v1?source=post_page---------------------------

虽然这本身不是一个模型结构,但论文提出了可以应用于可以转移到其他目标检测数据集的目标检测数据集的变换的创建。转换通常在训练时应用。

该模型将增广策略定义为训练过程中随机选择的n个策略集合。该模型中应用的一些操作包括颜色变化、图像几何变化以及只变化bounding box annotations的像素内容。

在COCO数据集上的实验表明,优化数据增广策略可以使检测精度提高到+2.3以上的平均精度。这使得单个推理模型的平均精度达到50.7。

总结

现在,我们应该对在各种上下文中进行目标检测的一些最常见的技术(以及一些最新的技术)有所了解。
上面的论文/摘要也包含它们的代码实现的链接。希望能看到你在测试这些模型后得到的结果。

你好,这里有一份2019年目标检测指南相关推荐

  1. python目标检测答案_你好,这里有一份2019年目标检测指南

    译者|Arno 来源|medium 目标检测(Object detection)是一种计算机视觉技术,旨在检测汽车.建筑物和人类等目标.这些目标通常可以通过图像或视频来识别. 目标检测在视频监控.自动 ...

  2. 深度学习目标检测指南:如何过滤不感兴趣的分类及添加新分类?

    编译 | 庞佳 责编 | Leo 出品 | AI 科技大本营(公众号ID:rgznai100) AI 科技大本营按:本文编译自 Adrian Rosebrock 发表在 PyImageSearch 上 ...

  3. 2019 ICCV 目标检测 论文简述整理

    2019 ICCV  (43篇) 题目 发表单位 针对问题 创新点 性能 ThunderNet: Towards Real-time Generic Object Detection (实现实时通用对 ...

  4. 2019 目标检测指南

    目标检测是一种为了检测汽车.建筑物和人类等目标对象的计算机视觉技术,这些对象通常可以通过图片或视频来识别. 目标检测在视频监控.自动驾驶汽车.目标/人跟踪等领域得到了广泛的应用.在本文中,我们将了解目 ...

  5. 还有34天18年就过完了, 收好这份2019区块链行业指南

     戳蓝字"区块链大本营"关注我们哦! 作者 | Gerald Fenech 译者 | 李晓泉 责编 | Aholiab hi 各位老铁好,又见面了!最近营长在忙着组织我们的香港区块 ...

  6. CVPR目标检测与实例分割算法解析:FCOS(2019),Mask R-CNN(2019),PolarMask(2020)

    CVPR目标检测与实例分割算法解析:FCOS(2019),Mask R-CNN(2019),PolarMask(2020) 目标检测:FCOS(CVPR 2019) 目标检测算法FCOS(FCOS: ...

  7. 真正意义的Anchor-Free,FCOS目标检测算法了解一下

    点击上方"AI搞事情"关注我们 2019年目标检测领域比较火的一个方向就是Anchor-Free,比如:CornerNet.ExtremeNet.CenterNet.FoveaBo ...

  8. 目标检测(四)——xml快速上手(可完整实现)

    文章目录 什么是xml xml解析讲解 一.标签介绍 filename标签 size标签 object标签 二.xml解析的API xml单个文件的解析 构建类别索引(category_id) 构建x ...

  9. 增加检测类别?这是一份目标检测的基础指南

    关注"迈微AI研习社",内容首发于公众号 来自丨机器之心 Adrian Rosebrock  目标检测技术作为计算机视觉的重要方向,被广泛应用于自动驾驶汽车.智能摄像头.人脸识别及 ...

最新文章

  1. 强化学习之贝尔曼方程中文解释
  2. Android真机运行错误INSTALL_FAILED_MEDIA_UNAVAILABLE
  3. 封装事件绑定函数解决this在ie下的绑定问题
  4. JS原生---鼠标拖拽
  5. Aix5.3安装Bash Shell环境
  6. python render_python:玫瑰图展示2020年1-3月轿车销量前十及占比(pyecharts)
  7. 一步一步学Repast 第五章——模拟粒子运动,了解Schedule
  8. java 解析中文乱码_解析Java中文乱码的处理方法
  9. 曼昆微观经济学--十大原理
  10. 三菱plc分拣程序_基于三菱PLC控制的物料分拣系统设计与实现
  11. 卡尔曼滤波(Kalman Filtering)——(7)扩展卡尔曼滤波(EKF)一阶滤波
  12. 矩阵取数游戏【题解】
  13. 我在b站上推荐一个看小电影的网站,结果被骂了
  14. 加拿大主教大学计算机世界排名,加拿大大学计算机专业排名
  15. 一个熟练程序员所具备的特质-2
  16. 树莓派刷系统(mac)
  17. java foreach循环语句_Javaforeach语句
  18. mongodb数据库扩展名_MongoDB文件型数据库
  19. 第5章 虚拟存储器
  20. 一不小心就四个月的实习总结。。。

热门文章

  1. 一键清理项目下pycharm和Jupyter缓存文件
  2. 美洽发送离线消息到开发者服务器
  3. Keil5汇编语言之模拟仿真
  4. SIM卡应用-OPN,PLMN,SPN
  5. 老友记台词学习笔记-SE01EP01(一)
  6. 一文读懂K-Means原理与Python实现
  7. 牛人用 Rust 重写了 Apache Spark,并把它开源了
  8. Linux创建新用户并使用证书远程登录
  9. java可以微信qq同时登陆_java实现 微博登录、微信登录、qq登录实现代码_java_脚本之家...
  10. 零基础学习Unity 教你掌握游戏开发!!!