使用SlimYOLOv3框架实现实时目标检测

使用SlimYOLOv3框架实现实时目标检测

译者|Arno
来源|Analytics Vidhya

概览

  • 实时目标检测正在风靡计算机视觉行业
  • 以下是SlimYOLOv3的介绍,这是最新的实时目标检测框架
  • 我们会介绍SlimYOLOv3架构,包括它如何检测目标

介绍

人类可以在几毫秒内在我们的视线中挑选出物体。事实上,你现在就环顾四周,你将观察到周围环境并快速检测到存在的物体,并且把目光回到我们这篇文章来。大概需要多长时间?

这就是实时目标检测。如果我们能让机器做到这一点有多酷?开心的是现在我们就可以做到!主要由于最近在深度学习和计算机视觉方面的突破,我们不仅可以依靠目标检测算法来检测图像中的物体,而且还可以以人类的速度和准确度来实现。

我们将首先看看目标检测的各种细微差别(包括你可能面临的潜在挑战)。然后,我将介绍SlimYOLOv3框架并深入探讨它如何工作以实时检测目标。

什么是目标检测?

在我们深入研究如何实时检测目标之前,让我们首先介绍一下基础知识。如果你是计算机视觉领域初学者,这一点尤为重要。

目标检测是我们用于识别图像中目标位置的技术。如果图像中有单个目标,并且我们想要检测该目标,则称为图像定位。如果图像中有多个目标怎么办?嗯,这就是目标检测!让我用一个例子解释一下:

左侧的图像具有单个目标(狗),因此检测该目标将是图像定位问题。右边的图像有两个目标(一只猫和一只狗)。检测这两个目标则是目标检测问题。

现在,你可能想知道为什么需要目标检测?更重要的是,为什么我们需要执行实时目标检测?我们将在下一节回答这些问题。

目标检测的应用

目标检测现在正在业界广泛使用。任何从事计算机视觉工作的人都应该清楚地了解这些应用。

目标检测的使用范围从个人安全到自动车辆系统。让我们讨论一些当前和无处不在的应用。

自动驾驶

这是目标检测最有趣和最近的应用之一。

自动驾驶汽车是能够在很少或没有人为引导的情况下自行移动的车辆。现在,为了让汽车决定它的行动,即要么向前移动,要么停车,要么转弯,它必须知道它周围所有物体的位置。使用目标检测技术,汽车可以检测其他汽车,行人,交通信号等物体。

人脸检测与人脸识别

人脸检测和识别可能是计算机视觉中应用最广泛的应用。每次在Facebook,Instagram或Google相册上传图片时,它都会自动检测图像中的人物。

行为识别

你会喜欢这个,目的是识别一个或多个图像系列的活动或动作。目标检测是其背后的核心概念,它检测行为然后识别操作。这是一个很酷的例子:

目标计数

我们可以使用目标检测算法来计算图像中的目标数量,甚至是实时视频中的目标数量。计算目标的数量有很多方面,包括分析存储表现或估计人群中的人数。

而大多数应用程序需要实时分析。我们行业的动态性质倾向于即时结果,而这正是实时目标检测的结果。

为什么要进行实时目标检测?

我们以自动驾驶汽车为例。考虑到我们已经训练了一个目标检测模型,它需要几秒钟(比如每个图像2秒)来检测图像中的物体,我们最终将这个模型部署在自动驾驶汽车中。

你觉得这个模型会好吗?汽车能够检测到它前面的物体并采取相应的措施吗?

当然不是!这里的推理时间太多了。汽车将花费大量时间做出可能导致事故等严重情况的决策。因此,在这种情况下,我们需要一个能够为我们提供实时结果的模型。该模型应该能够检测目标并在几微秒内进行推断。

用于目标检测的一些常用算法包括RCNN,Fast RCNN,Faster RCNN和YOLO。

本文的目的不是深入研究这些技术,而是了解用于实时目标检测的SlimYOLOv3架构。当我们不需要实时检测时,这些技术非常有效。不幸的是,当面对实时分析时,他们往往不是很好。让我们来看看在尝试构建自己的实时目标检测模型时可能遇到的一些挑战。

实时目标检测的挑战

实时目标检测模型应该能够感知环境,解析场景并最终做出相应的反应。模型应该能够识别场景中存在的所有类型的目标。一旦识别出目标的类型,模型应该通过在每个目标周围定义边界框来定位这些目标的位置。

所以,这里有两个功能。首先,对图像中的目标进行分类(图像分类),然后使用边界框(目标检测)定位目标。

当我们处理实时问题时,我们可能面临多重挑战:
– 我们如何处理变化?变化可能与物体形状,亮度等有所不同。
– 部署目标检测模型。这通常需要大量的内存和计算能力,特别是在我们每天使用的机器上
– 最后,我们还必须在检测性能和实时要求之间保持平衡。通常,如果满足实时要求,我们会看到性能会有所下降,反之亦然。因此,平衡这两个方面也是一个挑战

那么我们如何克服这些挑战呢?好吧,这是文章的关键所在–SlimYOLOv3框架!SlimYOLOv3旨在处理这些限制并以令人难以置信的精度执行实时目标检测。

让我们首先了解SlimYOLOv3是什么,然后我们将介绍架构细节以更好地理解框架。

SlimYOLOv3介绍

你能猜出深度学习管道是如何工作的吗?以下是典型流程的基本摘要:
– 首先,我们设计模型结构
– 微调该模型的超参数
– 训练模型
– 最后评估模型

模型中有多个组件或连接。经过几次迭代后,其中一些连接变得多余,因此我们可以从模型中删除这些连接。删除这些连接称为剪枝。

剪枝不会显着影响模型的性能,并且计算要求将显着降低。因此,在SlimYOLOv3中,在卷积层上执行剪枝。我们将在下一部分中了解有关如何完成此剪枝的更多信息。

剪枝后,我们对模型进行微调以补偿模型性能的下降。

与原始YOLOv3相比,剪枝后的模型导致较少的训练参数和较低的计算要求,因此对于实时目标检测更方便。

现在让我们讨论一下SlimYOLOv3的结构,以便更好,更清楚地理解这个框架底层的工作原理。

了解SlimYOLOv3的结构

下图说明了SlimYOLOv3的工作原理:

SlimYOLOv3是YOLOv3的修改版本。YOLOv3的卷积层被剪枝以实现小和更快的版本。但是等等, 为什么我们首先使用YOLOv3?为什么不用RCNN,Faster RCNN等其他目标检测算法呢?

为什么是YOLOv3?

基本上有两种类型深度目标检测模型:
– Two-stage detectors
– 属于RCNN系列的探测器属于Two-stage detectors。该过程包含两个阶段。首先,我们提取候选区域,然后对每个候选区域进行分类并预测边界框。这些探测器通常可以提供良好的探测精度,但这些探测器对于候选区域的推断时间需要大量的计算和实时存储
– Single-stage detectors
– 属于YOLO系列的探测器属于Single-stage detectors。这是一个单阶段的过程。这些模型利用预定义的锚点来覆盖图像中的空间位置,比例和纵横比。因此,我们不需要额外的分支来提取候选区域。由于所有计算都在单个网络中,因此它们比Single-stage detectors更可能运行得更快。YOLOv3也是Single-stage detectors,目前是目标检测的最先进技术

稀疏训练(Sparsity training)

下一步是YOLOv3模型的稀疏训练:

在这里,我们使用以下步骤剪枝YOLOv3模型:
– 首先,我们评估YOLOv3模型的每个组件的重要性。我将简要讨论如何确定这些组件的重要性的细节
– 一旦评估了重要性,我们就会删除不太重要的组件

移除的组件可以是单独的神经连接或网络结构。为了定义每个组件的重要性,我们根据它们的贡献对网络的每个神经元进行排序。有多种方法可以做到:
– 我们可以采用L1 / L2正则化神经元权重的平均值
– 每个神经元的平均激活
– 神经元输出不为零的次数

在SlimYOLOv3中,基于被认为是缩放因子的L1正则化神经元权重的平均值来计算重要性。这些缩放因子的绝对值是通道的重要性。为了加速收敛并改进YOLOv3模型的泛化,在每个卷积层之后使用批量归一化层。

SlimYOLOv3

然后我们定义一个全局阈值,比如说ŷ,并丢弃任何缩放因子小于此阈值的通道。通过这种方式,我们修剪了YOLOv3架构并获得了SlimYOLOv3架构:

在评估缩放因子时,尚未考虑YOLOv3架构的最大池化层和上采样层。

Fine-tuning

我们现在有SlimYOLOv3模型,那么下一步是什么?我们对其进行微调以补偿性能下降,并最终评估微调模型以确定修剪后的模型是否适合部署。

稀疏训练实际上在减小比例因子方面非常有效,因此使得卷积层的特征通道稀疏。以较大的惩罚因子α= 0.01训练会导致比例因子衰减,并且模型开始过度拟合。

在SlimYOLOv3中,惩罚因子α= 0.0001用于执行通道修建。

结语

我们在本文中介绍了很多内容。我们看到了不同的目标检测算法,如RCNN,Fast RCNN,Faster RCNN,以及目前最先进的目标检测YOLO。

然后,我们介绍了SlimYOLOv3架构,它是YOLO的修改版本,可用于实时目标检测。

2019 目标检测(object detection)指南

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

译者|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。

总结

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

使用自动编码器实现穿衣图像分割

~~时装业是人工智能领域很有前景的领域。研究人员可以开发具有一定实用价值的应用。我已经在这里展示了我对这个领域的兴趣,在那里我开发了一个来自Zalando在线商店的推荐和标记服装的解决方案。~~

在这篇文章中,我们会开发一个提取连衣裙的应用。它输入原始的图像(从网络上下载或用智能手机拍照),并提取图像中的连衣裙。分割的难点在于原始图像中存在了大量的噪声,但是我们会在预处理期间通过一个技巧来解决这个问题。

~~最后,您还可以尝试将此解决方案与之前引用的解决方案合并。这允许您通过外出和拍摄时拍摄的照片,开发一个实时推荐和标记服装的系统。~~

数据集

最近有一项关于服装视觉分析和分割的Kaggle比赛。这是一个非常有趣的比赛,但它并不适合我们。我们的目标是从图像中提取连衣裙,因此这个数据集不太适合我们,因为它包含了比较多的冗余。我们需要的是包含连衣裙的图像,因此最好自己来构建数据集。

我收集了网络上的一些图片,其中包含了在不同场景穿着不同类型的连衣裙的人。然后需要创建蒙版,它在每个对象分割任务中都是必要的。

下面是我们的数据样本。我从互联网上收集了一些原始图像,经过进一步剪切,将人与衣服分开。

图像分割示例

因为我们要将背景、皮肤和连衣裙进行分离,首先要将它们区分出来。背景和皮肤是本问题中最相关的噪声源,我们要尽量减少它们的干扰。

通过手动分割来创建蒙版,如下图所示,简单的对蒙版进行二值化。

蒙版示例

最后一步,我们将所有的蒙版图像合并为三维的单个图像。这张照片表示了原始图像的相关特征。我们的目的主要是分离背景,皮肤和连衣裙,因此这个图像非常适合!

最终蒙版

我们对数据集中的每个图像重复这个过程,为每个原始图像提供三维的对应蒙版。

模型

我们可以很容易的建立模型,过程非常简单:

我们需要训练这样一个模型,该模型输入原始图像,可以输出它的三维蒙版,即分离皮肤、背景和衣服。训练完成之后,当一个新的图像输入时,我们就可以将它分成三个不同的部分:背景、皮肤和衣服。我们只关注感兴趣区域(连衣裙),这样蒙版结合原始图像,就可以裁剪出我们需要的连衣裙。

我们使用UNet建立该模型,它经常用于类似的分割任务,而且很容易在Keras中实现。

在开始训练之前,要对所有的原始图像进行均值标准化。

结果和预测

在预测期间,当遇到高噪声的图像(背景或皮肤模糊等)时,模型开始动荡。这种问题可以简单地通过增加训练图像的数量进行解决。但我们也开发了一个巧妙的方法来避免这种问题。

我们使用 OpenCV 提供的 GrubCut 算法。该算法利用高斯混合模型分离前景和背景。通过它可以帮助我们找到图像中的人物。

我们只实现了简单的功能。假设感兴趣的人站在图像的中间。

def cut(img):
img = cv.resize(img,(224,224))

mask = np.zeros(img.shape[:2],np.uint8)
bgdModel = np.zeros((1,65),np.float64)
fgdModel = np.zeros((1,65),np.float64)
height, width = img.shape[:2]
rect = (50,10,width-100,height-20)
cv.grabCut(img,mask,rect,bgdModel,fgdModel,5,
cv.GC_INIT_WITH_RECT)
mask2 = np.where((mask==2)|(mask==0),0,1).astype('uint8')
img2 = img*mask2[:,:,np.newaxis]
img2[mask2 == 0] = (255, 255, 255)

final = np.ones(img.shape,np.uint8)*0 + img2

return mask, final

执行GrubCut结果

下面是结合使用GrubCut和UNet之后的结果:

GrubCut与UNet相结合得到了优秀的结果。

总结

在这篇文章中,我们为连衣裙分割开发了一套解决方案。为了达到这个目的,我们使用了GrubCut和UNet。我们计划在真实照片中使用这个解决方案,并根据它构建一个视觉推荐系统。

文章

代码

基于深度学习的目标检测发展历程:deep_learning_object_detection

目标检测论文从 2014-2018

模型表现表格

Detector VOC07 (mAP@IoU=0.5) VOC12 (mAP@IoU=0.5) COCO (mAP) Published In
R-CNN 58.5 CVPR’14
OverFeat ICLR’14
MultiBox 29.0 CVPR’14
SPP-Net 59.2 ECCV’14
MR-CNN 78.2 (07+12) 73.9 (07+12) ICCV’15
AttentionNet ICCV’15
Fast R-CNN 70.0 (07+12) 68.4 (07++12) ICCV’15
Faster R-CNN 73.2 (07+12) 70.4 (07++12) NIPS’15
YOLO v1 66.4 (07+12) 57.9 (07++12) CVPR’16
G-CNN 66.8 66.4 (07+12) CVPR’16
AZNet 70.4 22.3 CVPR’16
ION 80.1 77.9 33.1 CVPR’16
HyperNet 76.3 (07+12) 71.4 (07++12) CVPR’16
OHEM 78.9 (07+12) 76.3 (07++12) 22.4 CVPR’16
MPN 33.2 BMVC’16
SSD 76.8 (07+12) 74.9 (07++12) ECCV’16
GBDNet 77.2 (07+12) 27.0 ECCV’16
CPF 76.4 (07+12) 72.6 (07++12) ECCV’16
MS-CNN ECCV’16
R-FCN 79.5 (07+12) 77.6 (07++12) 29.9 NIPS’16
PVANET NIPSW’16
DeepID-Net 69.0 PAMI’16
NoC 71.6 (07+12) 68.8 (07+12) 27.2 TPAMI’16
DSSD 81.5 (07+12) 80.0 (07++12) arXiv’17
TDM 37.3 CVPR’17
FPN 36.2 CVPR’17
YOLO v2 78.6 (07+12) 73.4 (07++12) CVPR’17
RON 77.6 (07+12) 75.4 (07++12) CVPR’17
DCN ICCV’17
DeNet 77.1 (07+12) 73.9 (07++12) 33.8 ICCV’17
CoupleNet 82.7 (07+12) 80.4 (07++12) 34.4 ICCV’17
RetinaNet 39.1 ICCV’17
Mask R-CNN ICCV’17
DSOD 77.7 (07+12) 76.3 (07++12) ICCV’17
SMN 70.0 ICCV’17
YOLO v3 33.0 Arxiv’18
SIN 76.0 (07+12) 73.1 (07++12) 23.2 CVPR’18
STDN 80.9 (07+12) CVPR’18
RefineDet 83.8 (07+12) 83.5 (07++12) 41.8 CVPR’18
MegDet CVPR’18
RFBNet 82.2 (07+12) ECCV’18

论文列表:https://github.com/hoya012/deep_learning_object_detection

awesome-object-detection 目标检测资源合集

awesome-object-detection

Awesome Object Detection based on handong1587 github(https://handong1587.github.io/deep_learning/2015/10/09/object-detection.html)

Papers&Codes

R-CNN

Rich feature hierarchies for accurate object detection and semantic segmentation

Fast R-CNN

Fast R-CNN

A-Fast-RCNN: Hard Positive Generation via Adversary for Object Detection

Faster R-CNN

Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

R-CNN minus R

Faster R-CNN in MXNet with distributed implementation and data parallelization

Contextual Priming and Feedback for Faster R-CNN

An Implementation of Faster RCNN with Study for Region Sampling

Interpretable R-CNN

Light-Head R-CNN

Light-Head R-CNN: In Defense of Two-Stage Object Detector

Cascade R-CNN

Cascade R-CNN: Delving into High Quality Object Detection

SPP-Net

Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition

DeepID-Net: Deformable Deep Convolutional Neural Networks for Object Detection

Object Detectors Emerge in Deep Scene CNNs

segDeepM: Exploiting Segmentation and Context in Deep Neural Networks for Object Detection

Object Detection Networks on Convolutional Feature Maps

Improving Object Detection with Deep Convolutional Networks via Bayesian Optimization and Structured Prediction

DeepBox: Learning Objectness with Convolutional Networks

YOLO

You Only Look Once: Unified, Real-Time Object Detection

img

darkflow – translate darknet to tensorflow. Load trained weights, retrain/fine-tune them using tensorflow, export constant graph def to C++

Start Training YOLO with Our Own Data

img

YOLO: Core ML versus MPSNNGraph

TensorFlow YOLO object detection on Android

Computer Vision in iOS – Object Detection

YOLOv2

YOLO9000: Better, Faster, Stronger

darknet_scripts

Yolo_mark: GUI for marking bounded boxes of objects in images for training Yolo v2

LightNet: Bringing pjreddie’s DarkNet out of the shadows

https://github.com//explosion/lightnet

YOLO v2 Bounding Box Tool

Loss Rank Mining: A General Hard Example Mining Method for Real-time Detectors

  • intro: LRM is the first hard example mining strategy which could fit YOLOv2 perfectly and make it better applied in series of real scenarios where both real-time rates and accurate detection are strongly demanded.

  • arxiv: https://arxiv.org/abs/1804.04606

YOLOv3

YOLOv3: An Incremental Improvement

  • arxiv:https://arxiv.org/abs/1804.02767
  • paper:https://pjreddie.com/media/files/papers/YOLOv3.pdf
  • code: https://pjreddie.com/darknet/yolo/
  • github(Official):https://github.com/pjreddie/darknet
  • github:https://github.com/experiencor/keras-yolo3
  • github:https://github.com/qqwweee/keras-yolo3
  • github:https://github.com/marvis/pytorch-yolo3
  • github:https://github.com/ayooshkathuria/pytorch-yolo-v3
  • github:https://github.com/ayooshkathuria/YOLO_v3_tutorial_from_scratch

SSD

SSD: Single Shot MultiBox Detector

img

What’s the diffience in performance between this new code you pushed and the previous code? #327

https://github.com/weiliu89/caffe/issues/327

DSSD

DSSD : Deconvolutional Single Shot Detector

Enhancement of SSD by concatenating feature maps for object detection

Context-aware Single-Shot Detector

Feature-Fused SSD: Fast Detection for Small Objects

https://arxiv.org/abs/1709.05054

FSSD

FSSD: Feature Fusion Single Shot Multibox Detector

https://arxiv.org/abs/1712.00960

Weaving Multi-scale Context for Single Shot Detector

ESSD

Extend the shallow part of Single Shot MultiBox Detector via Convolutional Neural Network

https://arxiv.org/abs/1801.05918

Tiny SSD: A Tiny Single-shot Detection Deep Convolutional Neural Network for Real-time Embedded Object Detection

https://arxiv.org/abs/1802.06488

Pelee

Pelee: A Real-Time Object Detection System on Mobile Devices

https://github.com/Robert-JunWang/Pelee

  • intro: (ICLR 2018 workshop track)

  • arxiv: https://arxiv.org/abs/1804.06882

  • github: https://github.com/Robert-JunWang/Pelee

R-FCN

R-FCN: Object Detection via Region-based Fully Convolutional Networks

R-FCN-3000 at 30fps: Decoupling Detection and Classification

https://arxiv.org/abs/1712.01802

Recycle deep features for better object detection

FPN

Feature Pyramid Networks for Object Detection

Action-Driven Object Detection with Top-Down Visual Attentions

Beyond Skip Connections: Top-Down Modulation for Object Detection

Wide-Residual-Inception Networks for Real-time Object Detection

Attentional Network for Visual Object Detection

Learning Chained Deep Features and Classifiers for Cascade in Object Detection

DeNet: Scalable Real-time Object Detection with Directed Sparse Sampling

Discriminative Bimodal Networks for Visual Localization and Detection with Natural Language Queries

Spatial Memory for Context Reasoning in Object Detection

Accurate Single Stage Detector Using Recurrent Rolling Convolution

Deep Occlusion Reasoning for Multi-Camera Multi-Target Detection

https://arxiv.org/abs/1704.05775

LCDet: Low-Complexity Fully-Convolutional Neural Networks for Object Detection in Embedded Systems

Point Linking Network for Object Detection

Perceptual Generative Adversarial Networks for Small Object Detection

https://arxiv.org/abs/1706.05274

Few-shot Object Detection

https://arxiv.org/abs/1706.08249

Yes-Net: An effective Detector Based on Global Information

https://arxiv.org/abs/1706.09180

SMC Faster R-CNN: Toward a scene-specialized multi-object detector

https://arxiv.org/abs/1706.10217

Towards lightweight convolutional neural networks for object detection

https://arxiv.org/abs/1707.01395

RON: Reverse Connection with Objectness Prior Networks for Object Detection

Mimicking Very Efficient Network for Object Detection

Residual Features and Unified Prediction Network for Single Stage Detection

https://arxiv.org/abs/1707.05031

Deformable Part-based Fully Convolutional Network for Object Detection

Adaptive Feeding: Achieving Fast and Accurate Detections by Adaptively Combining Object Detectors

Recurrent Scale Approximation for Object Detection in CNN

DSOD

DSOD: Learning Deeply Supervised Object Detectors from Scratch

img

Learning Object Detectors from Scratch with Gated Recurrent Feature Pyramids

  • arxiv:https://arxiv.org/abs/1712.00886
  • github:https://github.com/szq0214/GRP-DSOD

RetinaNet

Focal Loss for Dense Object Detection

CoupleNet: Coupling Global Structure with Local Parts for Object Detection

Incremental Learning of Object Detectors without Catastrophic Forgetting

Zoom Out-and-In Network with Map Attention Decision for Region Proposal and Object Detection

https://arxiv.org/abs/1709.04347

StairNet: Top-Down Semantic Aggregation for Accurate One Shot Detection

https://arxiv.org/abs/1709.05788

Dynamic Zoom-in Network for Fast Object Detection in Large Images

https://arxiv.org/abs/1711.05187

Zero-Annotation Object Detection with Web Knowledge Transfer

MegDet

MegDet: A Large Mini-Batch Object Detector

Single-Shot Refinement Neural Network for Object Detection

Receptive Field Block Net for Accurate and Fast Object Detection

An Analysis of Scale Invariance in Object Detection – SNIP

Feature Selective Networks for Object Detection

https://arxiv.org/abs/1711.08879

Learning a Rotation Invariant Detector with Rotatable Bounding Box

Scalable Object Detection for Stylized Objects

Learning Object Detectors from Scratch with Gated Recurrent Feature Pyramids

Deep Regionlets for Object Detection

Training and Testing Object Detectors with Virtual Images

Large-Scale Object Discovery and Detector Adaptation from Unlabeled Video

  • keywords: object mining, object tracking, unsupervised object discovery by appearance-based clustering, self-supervised detector adaptation
  • arxiv: https://arxiv.org/abs/1712.08832

Spot the Difference by Object Detection

Localization-Aware Active Learning for Object Detection

Object Detection with Mask-based Feature Encoding

https://arxiv.org/abs/1802.03934

LSTD: A Low-Shot Transfer Detector for Object Detection

Domain Adaptive Faster R-CNN for Object Detection in the Wild

Pseudo Mask Augmented Object Detection

https://arxiv.org/abs/1803.05858

Revisiting RCNN: On Awakening the Classification Power of Faster RCNN

https://arxiv.org/abs/1803.06799

Zero-Shot Detection

Learning Region Features for Object Detection

Single-Shot Bidirectional Pyramid Networks for High-Quality Object Detection

Object Detection for Comics using Manga109 Annotations

Task-Driven Super Resolution: Object Detection in Low-resolution Images

https://arxiv.org/abs/1803.11316

Transferring Common-Sense Knowledge for Object Detection

https://arxiv.org/abs/1804.01077

Multi-scale Location-aware Kernel Representation for Object Detection

Loss Rank Mining: A General Hard Example Mining Method for Real-time Detectors

Robust Physical Adversarial Attack on Faster R-CNN Object Detector

https://arxiv.org/abs/1804.05810

DetNet

DetNet: A Backbone network for Object Detection

  • intro: Tsinghua University & Face++

  • arxiv: https://arxiv.org/abs/1804.06215

Other

Relation Network for Object Detection

  • intro: CVPR 2018
  • arxiv: https://arxiv.org/abs/1711.11575

Quantization Mimic: Towards Very Tiny CNN for Object Detection

  • Tsinghua University1 & The Chinese University of Hong Kong2 &SenseTime3

  • arxiv: https://arxiv.org/abs/1805.02152

项目地址:https://github.com/amusi/awesome-object-detection

YOLO_Online 将深度学习最火的目标检测做成在线服务实战经验分享

部分 YOLO 结果:

YOLO_Online 将深度学习最火的目标检测做成在线服务

第一次接触 YOLO 这个目标检测项目的时候,我就在想,怎么样能够封装一下让普通人也能够体验深度学习最火的目标检测项目,不需要关注技术细节,不需要装很多软件。只需要网页就能体验呢。

在踩了很多坑之后,终于实现了。

效果:

1.上传文件

2.选择了一张很多狗的图片

3.YOLO 一下

技术实现

  1. web 用了 Django 来做界面,就是上传文件,保存文件这个功能。
  2. YOLO 的实现用的是 keras-yolo3,直接导入yolo 官方的权重即可。
  3. YOLO 和 web 的交互最后使用的是 socket。

坑1:

Django 中 Keras 初始化会有 bug,原计划是直接在 Django 里面用 keras,后来发现坑实在是太深了。

最后 Django 是负责拿文件,然后用 socket 把文件名传给 yolo。

坑2:

说好的在线服务,为什么没有上线呢?买了腾讯云 1 CPU 2 G 内存,部署的时候发现 keras 根本起不来,直接被 Killed 。

解决,并没有解决,因为买不起更好地服务器了,只好本地运行然后截图了。

坑3:

YOLO 的识别是需要一定的时间的,做成 web 的服务,上传完文件之后,并不能马上识别出来,有一定的延迟。

相关教程:

TensorFlow + Keras 实战 YOLO v3 目标检测图文并茂教程

https://zhuanlan.zhihu.com/p/36152438

YOLO QQ 群

群号:167122861

计算机视觉项目合作微信:voicer008

 

谷歌发布 Open Images V4数据集,190万张图片开启公开图像挑战赛

4 月 30 日,谷歌在其官方博客上发文称将开放 Images V4 数据库,并同时开启 ECCV 2018 公开图像挑战赛。雷锋网编译全文如下:
2016 年,我们发布了一个包含大约 900 万张图片、标注了数千个对象类别标签的数据集 Open Images。发布之后,我们一直在努力更新和改进数据集,以便为计算机视觉社区提供有用的资源来开发新模型。
今天,我们很高兴地宣布开放 Open Images V4,它包含在 190 万张图片上针对 600 个类别的 1540 万个边框盒,这也是现有最大的具有对象位置注释的数据集。这些边框盒大部分都是由专业注释人员手动绘制的,确保了它们的准确性和一致性。另外,这些图像是非常多样化的,并且通常包含有多个对象的复杂场景(平均每个图像 8 个)。

与此同时,我们还将宣布启动 Open Images 挑战赛,这将是在 2018 计算机视觉欧洲会议(ECCV 2018)上举办的一场新的对象检测挑战赛。Open Images 挑战赛将遵循 PASCAL VOC、ImageNet 和 COCO 等赛事的传统,但是其规模将是空前的。

Open Images 挑战赛在一下这几个方面将是独一无二的:

有 170 万张训练图片,其中有 500 个类别和 1220 万个边框注释;

与以前的检测挑战相比,将有更广泛的类别,包括诸如「fedora」、「snowman」等这样的新对象;

除了主流的物体检测外,本次挑战赛中在检测物体对时还将包括视觉关系检测,例如「woman playing guitar」。

训练数据集现在已经可以使用;一个包含有 10 万张图片的测试集将于 2018 年 7 月 1 日发布在 Kaggle 上。挑战赛提交结果的截止日期为 2018 年 9 月 1 日。

我们希望更大的训练集能够刺激对更复杂检测模型的研究,这些模型将超过当前 state-of-the-art 的性能;而从另一方面,我们希望 500 个类别能够更精确地评估不同探测器在哪些方面表现的更好。此外,拥有大量带有多个对象标注的图像,可以帮组你探索视觉关系检测,这还是一个热门的新兴话题,而且具有越来越多的子社区。

除了上述内容外,Open Images V4 还包含了 3010 万张经过人工验证的针对 19794 个类别图像级标签的图片。当然这些标签不属于挑战赛的一部分,其中的 550 万张图像级标签是由来自世界各地成千上万名用户通过 crowdsource.google.com 生成的。

原文链接:https://www.leiphone.com/news/201805/AlOdBu0uXZY0ZVT9.html

TensorFlow + Keras 实战 YOLO v3 目标检测图文并茂教程

运行步骤
1.从 YOLO 官网下载 YOLOv3 权重

wget https://pjreddie.com/media/files/yolov3.weights

下载过程如图:

 

2.转换 Darknet YOLO 模型为 Keras 模型

python convert.py yolov3.cfg yolov3.weights model_data/yolo.h5

转换过程如图:

3.运行YOLO 目标检测

python yolo.py

需要下载一个图片,然后输入图片的名称,如图所示:

我并没有使用经典的那张图,随便从网上找了一个,来源见图片水印:

识别效果:

项目地址:https://github.com/qqwweee/keras-yolo3

教程来自:http://objectdetection.cn/

Mask_RCNN:基于Keras and TensorFlow 的 Mask R-CNN 为 目标检测和情景分割

Mask R-CNN for Object Detection and Segmentation

这是一个基于 Python 3, Keras, TensorFlow 实现的 Mask R-CNN。这个模型为图像中的每个对象实例生成边界框和分割掩码。它基于 Feature Pyramid Network (FPN) and a ResNet101 backbone.

这个项目包括包括:

在FPN和ResNet101上构建的Mask R-CNN的源代码。

MS COCO的训练代码

MS COCO 预先训练的权重

Jupyter notebooks 来可视化在每一个步骤的检测管道

用于多GPU训练的ParallelModel类

MS COCO指标评估(AP)

训练您自己的数据集的例子

代码被记录和设计为易于扩展。 如果您在研究中使用它,请考虑引用此项目。 如果您从事3D视觉工作,您可能会发现我们最近发布的Matterport3D数据集也很有用。 这个数据集是由我们的客户拍摄的三维重建空间创建的,这些客户同意将这些数据公开供学术使用。 你可以在这里看到更多的例子。

This is an implementation of Mask R-CNN on Python 3, Keras, and TensorFlow. The model generates bounding boxes and segmentation masks for each instance of an object in the image. It’s based on Feature Pyramid Network (FPN) and a ResNet101 backbone.

The repository includes:

  • Source code of Mask R-CNN built on FPN and ResNet101.
  • Training code for MS COCO
  • Pre-trained weights for MS COCO
  • Jupyter notebooks to visualize the detection pipeline at every step
  • ParallelModel class for multi-GPU training
  • Evaluation on MS COCO metrics (AP)
  • Example of training on your own dataset

The code is documented and designed to be easy to extend. If you use it in your research, please consider referencing this repository. If you work on 3D vision, you might find our recently released Matterport3D dataset useful as well. This dataset was created from 3D-reconstructed spaces captured by our customers who agreed to make them publicly available for academic use. You can see more examples here.

项目地址:matterport/Mask_RCNN

https://github.com/matterport/Mask_RCNN

YOLO:3 步实时目标检测安装运行教程

封面图是作者运行图,我在 ubuntu 环境下只有文字预测结果。

Detection Using A Pre-Trained Model

使用训练好的模型来检测物体

运行一下命令来下载和编译模型

git clone https://github.com/pjreddie/darknet
cd darknet
make

运行一下模型来下载预训练权重

wget https://pjreddie.com/media/files/yolo.weights

运行以下命令来测试模型

./darknet detect cfg/yolo.cfg yolo.weights data/dog.jpg

最终结果截图

英文原文

pjreddie.com/darknet/yo

教程原文

tensorflownews.com/2017

更多机器学习教程

tensorflownews.com