目标检测 - Tensorflow Object Detection API

一. 找到最好的工具

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

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

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

       代码下载:【Github】


二. 跑通代码

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

       

三. 论文阅读

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

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


       针对每个框架,结合不同的 特征提取网络来进行整合实验,里面主要比较的网络有: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的准确度,减少数量是最好的方式(最有效的提高效率)。


http://www.niftyadmin.cn/n/904620.html

相关文章

DM8168硬件平台的简介

DM8168硬件平台简介 作者:上海凯视力成信息科技有限公司 概述 本模块以Ti TMS320DM8168 Davinci数字媒体处理器为核心,该处理器此器件将ARM Cortex A8 RISC CPU、Ti C674x VLIW浮点DSP内核、高清视频及音频协处理器、3D图形加速引擎以及高度集成的外设集…

Java-笔记17-复习

程序、进程、线程的理解01. 程序(programm) 概念:是为完成特定任务、用某种语言编写的一组指令的集合。即指一段静态的代码。02. 进程(process) 概念:程序的一次执行过程,或是正在运行的一个程序。 说明:进程作为资源分配的单位&a…

Faster R-CNN改进篇(一): ION ● HyperNet ● MS CNN

一. 源起于Faster深度学习于目标检测的里程碑成果,来自于这篇论文:Ren, Shaoqing, et al. “Faster R-CNN: Towards real-time object detection with region proposal networks.” Advances in Neural Information Processing Systems. 2015.也可以参考…

TMDS协议

1 概述 1.1 连接结构 图1 TMDS连接结构 数据流中包含了像素和控制数据,发送器在任何给定的输入时钟周期,到底是编码像素数据还是控制数据取决于数据使能信号DE,DE有效时,指示像素数据要被发送,注意,当…

Subprocess.Popen() 使用问题解决方案

from subprocess import Popen,PIPE 1.光标处于闪烁等待状态,不能实时输出测试cmd界面. [原因]:使用communicate()函数,需要等脚本执行完才返回。 def communicate(self, inputNone): """Interact with process: Send data to…

DM8168评估板上供电电源的设计

在DM8168评估板山上通过J1插座输入单一的12VDC,这是板上所有电源的源,由这12VDC产生如下电源: l EVM_12V:12V,输入,来自外部电源插座 l EVM_5V0:5.0V,输出,来自U16&a…

深度学习的研究方向和发展趋势

一. 人工智能应用领域1. 计算机视觉生物特征识别:人脸识别、步态识别、行人ReID、瞳孔识别;图像处理:分类标注、以图搜图、场景分割、车辆车牌、OCR、AR;视频分析:安防监控、智慧城市;2. 自然语言处理语音识…

Java多线程简介

Java多线程概览 java的多线程是个比较高级的主题。正在学习python的多线程,同步复习以下java多线程的基础知识吧。 介绍一些概念,细节另外再慢慢探究吧。 Java多线程机制 Java语言内置对多线程的支持,在大数据、分布式、高并发类的主题上应用…