tensorflow Object Detection API 使用预训练模型 mask r-cnn 实现对象检测

技术讨论 Admin ⋅ 于 4周前 ⋅ 273 阅读

来源:OpenCV学堂@微信公众号

作者: gloomyfish

Mask R-CNN是何恺明大神在2017年整出来的新网络模型,在原有的R-CNN基础上实现了区域ROI的像素级别分割。关于Mask R-CNN模型本身的介绍与解释网络上面已经是铺天盖地了,论文也是到处可以看到。这里主要想介绍一下在tensorflow中如何使用预训练的Mask R-CNN模型实现对象检测与像素级别的分割。tensorflow框架有个扩展模块叫做models里面包含了很多预训练的网络模型,提供给tensorflow开发者直接使用或者迁移学习使用,首先需要下载Mask R-CNN网络模型,这个在tensorflow的models的github上面有详细的解释与model zoo的页面介绍, tensorflow models的github主页地址如下: https://github.com/tensorflow/models

我这里下载的是:

mask_rcnn_inception_v2_coco_2018_01_28.tar.gz

下载好模型之后可以解压缩为tar文件,然后通过下面的代码读入模型

file

模型使用coco数据集,可以检测与分割90个对象类别,所以下面需要把对应labelmap文件读进去,这个文件在models\research\objectdetection\data目录下,实现代码如下:

file

有了这个之后就需要从模型中取出如下几个tensor

num_detections 表示检测对象数目
detection_boxes 表示输出框BB
detection_scores 表示得分
detection_classes 表示对象类别索引
detection_masks 表示mask分割

然后在会话中运行这几个tensor即可,代码实现如下:

file

下面就是通过opencv来读取一张彩色测试图像,然后调用模型进行检测与对象分割,代码实现如下:

file

原图如下:

file

检测运行结果如下:

file

带mask分割效果如下:

file

官方测试图像运行结果:

file


推荐阅读

使用TensorFlow目标检测和OpenCV分析足球视频

上交卢策吾团队开源AlphaPose,姿态估计比Mask-RCNN提高8%

CV干货 微信公众号: 极市平台
ID: extrememart

成为第一个点赞的人吧 :bowtie:
回复数量: 0
暂无回复~
您需要登陆以后才能留下评论!