前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用Tensorflow Object Detection API实现对象检测

使用Tensorflow Object Detection API实现对象检测

作者头像
OpenCV学堂
发布2018-07-26 10:38:46
9130
发布2018-07-26 10:38:46
举报
文章被收录于专栏:贾志刚-OpenCV学堂

一:预训练模型介绍

Tensorflow Object Detection API自从发布以来,其提供预训练模型也是不断更新发布,功能越来越强大,对常见的物体几乎都可以做到实时准确的检测,对应用场景相对简单的视频分析与对象检测提供了极大的方便与更多的技术方案选择。tensorflow object detection提供的预训练模型都是基于以下三个数据集训练生成,它们是:

  • COCO数据集
  • Kitti数据集
  • Open Images数据集

每个预训练模型都是以tar文件形式存在,其中包括以下几个部分:

  • 图协议graph.pbtxt
  • 检查点(checkpoint)文件(odel.ckpt.data-00000-of-00001, model.ckpt.index, model.ckpt.meta)
  • 冻结图协议包含作为常量的权重数据
  • 一个config的配置文件

基于COCO数据集训练的模型名称、运行速度、mAP指标及输出列表如下:

二:使用模型实现对象检测

这里我们使用ssd_mobilenet模型,基于COCO数据集训练生成的,支持90个分类物体对象检测,首先需要读取模型文件,代码如下

代码语言:javascript
复制
tar_file = tarfile.open(MODEL_FILE)
for file in tar_file.getmembers():
  file_name = os.path.basename(file.name)
  if 'frozen_inference_graph.pb' in file_name:
    tar_file.extract(file, os.getcwd())

然后加载模型完成计算图构建

代码语言:javascript
复制
detection_graph = tf.Graph()
with detection_graph.as_default():
  od_graph_def = tf.GraphDef()
  with tf.gfile.GFile(PATH_TO_CKPT, 'rb') as fid:
    serialized_graph = fid.read()
    od_graph_def.ParseFromString(serialized_graph)
    tf.import_graph_def(od_graph_def, name='')

最后通过session来执行计算图并输入适当的参数即可

代码语言:javascript
复制
# image_np == [1, None, None, 3]
image_np_expanded = np.expand_dims(image_np, axis=0)
image_tensor = detection_graph.get_tensor_by_name('image_tensor:0')
boxes = detection_graph.get_tensor_by_name('detection_boxes:0')
scores = detection_graph.get_tensor_by_name('detection_scores:0')
classes = detection_graph.get_tensor_by_name('detection_classes:0')
num_detections = detection_graph.get_tensor_by_name('num_detections:0')
# Actual detection.
(boxes, scores, classes, num_detections) = sess.run(
  [boxes, scores, classes, num_detections],
  feed_dict={image_tensor: image_np_expanded})

最终检测效果 - 检测人与书

检测我的苹果电脑与喝水玻璃杯

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-05-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 OpenCV学堂 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一:预训练模型介绍
  • 二:使用模型实现对象检测
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档