注:本文是对Keras版本的MaskRCNN的demo使用进行解释,使用的是tensorflow-gpu 1.4.0 和keras2.1.3,cuda用的是cuda8和cudnn6.0
代码来源:https://github.com/matterport/Mask_RCNN/releases
首先,将代码和权重下载到工作目录
下载Mask R-CNN 2.0下面的文件,mask_rcnn_coco.h5和Source code.tar.gz这两个文件
第二步,打开jupyter-notebook(没安装,使用conda install jupyter -y 即可),打开sample下的demo.ipynb文件,file->Download as ->Python(.py),转换成.py文件
第三步,因为我用的是python2.7,会出现boxes = np.divide(boxes - shift, boxes) ,并且检测不到物体,需要修改代码
1.mrcnn/model.py
+2450 window = np.float32(window) # 添加一行
window = utils.norm_boxes(window, image_shape[:2])
2.mrcnn/utils.py
-21 # import urllib.request
+ from six.moves import urllib
-444 # scale = max_dim / image_max # 注释掉,并修改成下一行
+ scale = float(max_dim) / float(image_max)
- # if scale != 1:
+ if scale != 1.0:
3.mrcnn/visualize.py
-66 # hsv = [(i / N, 1, brightness) for i in range(N)]
+ hsv = [(float(i) / N, 1, brightness) for i in range(N)]
4.sample/coco/coco.py
-47 # import urllib.request
+ from six.moves import urllib
第四步,注释掉与ipython相关的代码
26 # get_ipython().magic(u'matplotlib inline')
也可以注释掉其他冗余的代码
第五步,直接在sample/下运行,便能得到结果,并展示出来(因为推断消耗的显存比较少,我使用的是GTX1050Ti也能运行)
python demo.py