查看原文
其他

谷歌TensorFlow物理检测API,目前最好的物体识别方案?

2017-07-18 Priya Dwivedi CSDN大数据

用大数据干大事!


目前有很多种图像识别的方案,而 Google 近日最近发布了其最新的 Tensorflow 物理检测接口(Object Detection API),使计算机视觉无处不在。Google 的产品通常都是黑科技,所以笔者决定尝试一下这个新的 API,并用 YouTube 上的一个视频来进行检测。如下:



完整的代码可以在我的 Github 上找到:https://github.com/priya-dwivedi/Deep-Learning/blob/master/Object_Detection_Tensorflow_API.ipynb。


所以,它的的体验到底如何?让我们先从理解 API 开始。


了解 API


此 API 经过 COCO 数据库训练。COCO 数据库拥有三十万张包括九十大类的图像集合,一部分类别如下:



API 提供了五种不同的模式来在识别速度与准确率中进行协调,详情见下表:



使用 API


我决定使用最轻量化的模块(ssd_mobilenet)。主要步骤如下:


  • 下载冻结模型(.pb——protobuf)并将其导入内存;

  • 使用內建代码来导入标签,分类,可视化效果工具等等;

  • 打开一个新的会话并在一个图像上运行模型。


这是一个相对来说较为简单的步骤。API 介绍里也提供了关于如何进行相关步骤的指导。


此模型在样本图像上的表现不错(详见下图):



运行视频


接下来,用视频来测试此 API。此操作通过 Python moviepy 库来实现。主要步骤如下:


  • 使用 VedioFileClip 方法从视频中提取图像;

  • fl_image 方法可以快速从视频中抽取并替代图片。使用此方法来将视频的每一帧提取出来;

  • 将处理后的每帧图片合并为一个新的图像。


此段代码需要一定的时间(3-4秒的剪辑需要1分钟左右)。但是由于使用的是一个加载到内存的冻结模型,所以这些都可以在没有显卡的计算机上完成。


结果很惊人!只需要一小段代码,就可以准确识别并标记视屏中的人物。


在有些情况下它的功能还有待提升。比如在下图中,它并不能识别出视屏中的鸭子。



下一步


关于此 API 以后的想法:


  • 使用更精确但抽象的模型来看看结果会如何;

  • 优化识别速度,使其可以在移动设备上使用;

  • Google 还提供使用这些模型进行转移学习的能力,即加载冻结模型,并添加具有不同图像类别的另一个输出图层。


参考


  • Google Tensorflow Object Detection Github:

    https://github.com/tensorflow/models/tree/master/object_detection

  • COCO dataset:

    http://mscoco.org/home/


原文:Is Google Tensorflow Object Detection API the easiest way to implement image recognition? 

作者:Priya Dwivedi 

译者:聂震坤 

审校:屠敏

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存