TensorFlow 上基于 Faster RCNN 的目标检测

在之前的文章里我们常用的图像相关深度学习模型一般都是用于分类(Classification),即输入是一张图片,输出是“这张图片里有什么”,今天的主题是目标检测(Object Detection),除了能识别“这张图片里有什么”,还要告诉“它们的具体位置”。


对目标检测感兴趣的读者可以通过 Pascal VOC【1】、ILSVRC【2】、COCO【3】 等国际比赛了解具体规则和数据等细节。Faster RCNN 【4】是对之前的 RCNN、SPPNet、Fast RCNN 等目标检测框架的进一步优化,创造性地将 Region Proposal 过程也融合进入 CNN 模型,称之为 RPN(Region Proposal Network),大幅降低了 test-time 计算量,可以实现近似实时目标检测(使用 VGG-16 模型,每秒处理 5 张图,在 Pascal VOC 2007 test 数据集上 mAP 达到 73.2%)。 微软凭借该目标检测框架和 ResNet模型一举拿下了 ILSVRC + COCO 2015 比赛 Detection 项目冠军。


先上图为敬。这些都是今天例程中自带的样例图片。

这张图一共检测出 5 个目标(如图中红色的矩形框所示),每个矩形框上还标注了目标类别(如“car”,“dog”,“horse”,“person”)和检测 score(“0.998”,“0.993”等)。

“二货狗,瞅镜头”


“总有刁民想偷拍朕”


“来不及解释了,快上车”


“我脸大吗”




接下来是 TensorFlow 上利用 Faster RCNN【4】实现目标检测的具体步骤。

为了运行本文例程,需要预先在你机器上安装好 TensorFlow,安装步骤请参考本公众号之前的文章《TensorFlow 1.0.0rc1 入坑记》《利用 TensorFlow 集装箱快速搭建交互式开发环境》。除此之外还要安装如下 Python 包:cython, python-opencv, easydict,缺少这些包的读者请在机器上运行:


$ sudo pip install cython, python-opencv, easydict


基础环境准备完毕,接着从 github 上克隆 TensorFlow 版本 Faster RCNN 代码:


$ git clone --recursive https://github.com/smallcorgi/Faster-RCNN_TF.git


如果对原版本 Faster RCNN(基于 Caffe)感兴趣,请浏览 https://github.com/ShaoqingRen/faster_rcnn。



编译 Cython 模块:

$ cd Faster-RCNN_TF/lib/

$ export PATH=/usr/local/cuda/bin:$PATH

$ make


运行例程之前还得下载模型。例程中使用模型为 VGG-16,已经在 Pascal VOC 2007 数据集上训练过。下载链接请阅读前面克隆代码中的 README.md 获得。


注:代码在 TensorFlow 0.12 或更高版本中运行时会有问题,主要是 TensorFlow 官网 API 变化太剧烈造成,参考这篇 issue:

https://github.com/smallcorgi/Faster-RCNN_TF/issues/41

如果你的 TensorFlow 版本等于或低于 0.11,请忽略。否则,将 Faster-RCNN_TF/lib/roi_pooling_layer/roi_pooling_op_grad.py 中的 “@tf.RegisterShape("RoiPool")” 改为 “@ops.RegisterShape("RoiPool")”


运行 demo:

$ cd ..

$ python ./tools/demo.py --model ./VGGnet_fast_rcnn_iter_70000.ckpt


这时会载入下载的模型,对 data/demo 目录中的图片进行检测,并弹出窗口显示本文前面的几张检测结果图片。命令窗口显示运行日志:


最后一张图是我朋友圈一个朋友发的可怜流浪猫求助信息:

为了让例程检测你自己的图片,只需将待检测图片放到 data/demo 目录下,修改 tools/demo.py 中这一行:

增加待检测图片的文件名,运行例程即可。检测结果:


最后祝大家元宵节快乐~


Reference

【1】The PASCAL Visual Object Classes, http://host.robots.ox.ac.uk:8080/pascal/VOC/

【2】ImageNet Large Scale Visual Recognition Challenge, http://www.image-net.org/

【3】Common Objects in Context, Microsoft, http://mscoco.org/

【4】 Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks, https://arxiv.org/abs/1506.01497


  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值