源码地址:https://github.com/CharlesShang/FastMaskRCNN
实验环境:Linux + cuda8.0 + cudnnv5.1 + python2.7
步骤按照文档来,不再赘述。中间遇到了一些问题,这里做一下记录。解决过程中参考了repo issue及以下资料:
https://blog.csdn.net/linolzhang/article/details/70306708
https://blog.csdn.net/u013735511/article/details/78710008
1、对coco数据集进行转换时,采用coco2017的数据集,而作者提供的data convert的代码是coco2014的,直接使用会出现一些问题,需要进行修改。先修改数据集名称,然后将原代码中的这一行:
split = img_name.split('_')[1]
替换为:
img_url = imgs[i][1]['coco_url']
split = img_url.split('/')[3]
问题解决。处理过程较慢,花了几个小时。
2、训练中报错:InternalError (see above for traceback): WhereOp: Could not launch cub::DeviceReduce::Sum to count number of true indices. temp_storage_bytes: 1, status: invalid device function
查找资料后发现是tf版本较高的原因,根据其他人的情况采用tf1.1+cudnn5.1可以训练。但是这里不想直接进行降级,因此采用建立python虚拟环境的方法。网上教程给出的是conda下建立虚拟环境,由于没有安装anaconda,因此采用native python中的virtualenv工具来建立虚拟环境。
按以上参考链接二所示在新建立的虚拟环境中依次安装tensorflow-1.1,opencv-python和scikit-image(PIL可以跳过)然后重新运行。这时遇到新的错误:Loaded runtime CuDNN library,即缺少对应的CuDNN库。从https://developer.nvidia.com/上边下载对应自己cuda版本的cudnn库(需要先注册),然后安装,方法见https://blog.csdn.net/lucifer_zzq/article/details/76675239。
此时再次运行,顺利启动训练。
这个库目前只支持batchsize=1,训练时单卡的情况下3h可以跑10k左右,收敛的话至少要几天了。
由于这个repo现在已经停止维护了,后续转向了另一个tensorflow和Keras的MaskRCNN版本,见博客https://blog.csdn.net/BockSong/article/details/82774744