目标检测 - Tensorflow Object Detection API

一. 找到最好的工具git

       “工欲善其事,必先利其器”,若是你想找一个深度学习框架来解决深度学习问题,TensorFlow 就是你的不二之选,究其缘由,也没必要过多解释,看过其优雅的代码架构和工程化实现以后,相信这个问题不会有人再提,这绝非 Caffe an so on 所能比拟的。github

       回到题头 - 目标检测,相信你必定看过这篇 Paper: Speed/accuracy trade-offs for modern convolutional object detectors, Huang J, CVPR2017算法

       所谓 Trade-Off 是指精度和效率之间的 Trade-Off,TensorFlow 给出了该方法的具体实现:网络

       代码下载:Github架构


二. 跑通代码框架

       先来看页面介绍,来看 Show 出的检测效果对比(IncResnet V2 对小目标的检测效果很是不错):工具

       

三. 论文阅读学习

       程序跑起来以后,仍是有必要来读一遍论文,了解技术原理,对于代码的运用和参数调整都有很大做用。url

       这是一篇综述性质的论文,主要比较了 Faster R-CNN,RFCN,SSD 三种检测框架,原理示意以下:spa


       针对每一个框架,结合不一样的 特征提取网络来进行整合实验,里面主要比较的网络有:VGG,Inception v3,Resnet-101,Inception Resnet 等。

              Model 

              Top-1 accuracy            

      Num. Params.       

  VGG-16

 71.0

  14,714,688

  MobileNet

 71.1

  3,191,072

  Inception V2

 73.9

  10,173,112

  ResNet-101

 76.4

  42,605,504

  Inception V3

 78.0

  21,802,784

  Inception Resnet V2     

 80.4

  54,336,736

       具体每一个网络就不展开了,这个都比较熟悉,经过比较,咱们最关心的两点,一是准确度,二是效率,直接贴出来原文的图来讲明:

        

        

       能够看到,精度最高的Faster R-CNN效率是最低的,网络复杂度最高的 Inception Resnet 带来的精度提高比较明显,一样的,用 GPU Time 衡量的计算量与 Float运算、内存容量各方面的衡量指标是相似的,这里就再也不所有列出来了。

       能够经过两种方式有效提升算法效率: 一是下降图像分辨率,二是减小 Proposal 数量(仅支持Faster R-CNN 和 RFCN )。

       须要强调一点的是 Region Proposal 的数量,对于效率的影响会比较明显,由于Proposal数量 决定了计算量(几乎是成比例的),所以提升 Proposal的准确度,减小数量是最好的方式(最有效的提升效率)。