如何分析TensorFlow 8中的Mask-RCNN
如何分析TensorFlow 8中的Mask-RCNN,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
今天带大家学习如何利用Mask R-CNN实现实例分割。
Q & A
Q1. Mask R-CNN 是什么?
答:Mask R-CNN是实例分割的一种算法。
Q2. 实例分割是什么?
答:实例分割就是要在每一个像素上都表示出来目标所属的具体类别。
实例分割的难度在于要先对一张图片所有的目标进行正确的检测同时还要对每个示例进行分割。检测的目的是把每一个单个目标分类然后用bounding box标定出来,而实例分割的目的是区分每一个像素为不同的分类而不用区别不同的目标。
正文
一. 环境准备
本文介绍如何通过 Mask-RCNN 来实现行人检测,假设你已经对 SSD、YOLO、Faster RCNN 等框架有所了解。
1. 准备 TensorFlow 环境
Tensorflow (>= 1.0.0)
Numpy
2. Gtihub 代码
代码下载:https://github.com/CharlesShang/FastMaskRCNN
3. 下载CoCo数据
下载地址:http://http://cocodataset.org/#download
Web下载比较慢,可以从我的网盘下载:https://pan.baidu.com/s/1jHJdlVg#list/path=%2F
4. 下载 ReNet50
wget http://download.tensorflow.org/models/resnet_v1_50_2016_08_28.tar.gz
解压得到 resnet_v1_50.ckpt
二. 代码编译运行
代码编译可以参考 Github 说明,这里也给出如下流程:
1. make coco工具
cd ./libs/datasets/pycocotools make
2. 将下载的 COCO 数据放到 ./data 目录下,将数据转换成 tf 所需格式;
按照说明文件:
a)在 data下建一个 coco 文件夹,将指定的5个文件 copy到该目录;
b)将zip文件解压缩;
c)在根目录下建立 output/mask_rcnn 文件夹,用于存放 log;
d)执行格式转换脚本(大概会花一小时);
python download_and_convert_data.py
可能会提示Python某些库错误,没关系,安装一下就好了,可以将pip源换成国内的,pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pil
sudo pip install pil # or python -m pip install Pillow
sudo pip install scikit-image
sudo apt-get install python3-tk
3. 提前训练好的 Resnet模型
在data下新建 pretrained_models 目录,将 resnet_v1_50.ckpt 放到目录下。
4. Make编译
cd ./libs make
5. 训练数据
python ../train/train.py
当你观察到Loss的时候,说明训练过程已经成功开始了,不要着急,等着Loss慢慢减少吧,原作者训练 8-GPU 花了32个小时。
三. 训练效果
根据训练生成的 Log文件,存放在 output里面:
设置 TensorBoard 的logdir,来看一下训练效果:
可以看到整个的 loss 的变化情况,还是很有成就感的,需要说明一下,在训练过程中可能 loss 会有震荡的情况,没有关系,等到逐渐下降就好了。
看一下生成的 Graphs:
四. Demo 运行
Github 上未给出 Demo 运行方法,需要我们自己找脚本来实现。
这里作者就不给出具体 code 了,请大家自行发挥。
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对亿速云的支持。