使用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的修改版本,可用于实时目标检测。

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

~~时装业是人工智能领域很有前景的领域。研究人员可以开发具有一定实用价值的应用。我已经在这里展示了我对这个领域的兴趣,在那里我开发了一个来自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