原文:Is Google Tensorflow Object Detection API the easiest way to implement image recognition?
作者:Priya Dwivedi
译者:聂震坤
审校:屠敏
用大数据干大事!
目前有很多种图像识别的方案,而 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/
由中国人工智能学会、阿里巴巴集团 & 蚂蚁金服主办,CSDN、中国科学院自动化研究所承办的第三届中国人工智能大会(CCAI 2017)将于 7 月 22-23 日在杭州召开。作为中国国内高规格、规模空前的人工智能大会,本次大会由中国科学院院士、中国人工智能学会副理事长谭铁牛,阿里巴巴技术委员会主席王坚,香港科技大学计算机系主任、AAAI Fellow 杨强,蚂蚁金服副总裁、首席数据科学家漆远,南京大学教授、AAAI Fellow 周志华共同甄选出在人工智能领域本年度海内外最值得关注的学术与研发进展,汇聚了超过 40 位顶级人工智能专家,带来 9 场权威主题报告,以及“语言智能与应用论坛”、“智能金融论坛”、“人工智能科学与艺术论坛”、“人工智能青年论坛”4 大专题论坛,届时将有超过 2000 位人工智能专业人士参与。
目前,大会火热报名中,扫描下方图片中的二维码或直接点击链接火速抢票。