RTX3090其最新的cuda版本为11.1,而且cuda10以下的版本无法运行RTX3090,我们配置Mask_RCNN的时候很可能因为版本不匹配而报出很多错误。
这里笔者亲测,在RTX3090,CUDA版本11.1的情况下,使用py3.6的环境+tf1.5的环境+keras2.1.6的环境可以完美运行Mask_RCNN
首先使用conda创建一个Mask_RCNN环境,并把Mask_RCNN包git到我们的环境之下。
conda create -n rcnn python=3.6
conda activate rcnn
git clone https://github.com/matterport/Mask_RCNN.git
之后我们cd到Mask_RCNN文件夹下
pip3 install -r requirements.txt
python3 setup.py install
这里其实pip安装和pip3安装应该都可以,当时我的cuda出了点问题,同一个环境竟然同时存在pip和pip3。所幸我就都用pip3来安装了
之后进入这个网站:
在这里下载mask_rcnn_coco.h5权重
我们下载mask_rcnn_coco.h5权重,然后服务器输入rz上传至Mask_RCNN根目录下
之后我们安装pycocotools(很多朋友第一次使用maskrcnn,应该要好好研究一下pycocotools,因为我们大多数都输入的COCO格式的文件)
git clone https://github.com/cocodataset/cocoapi.git
再cd到我们git下载的cocoapi文件夹下
cd PythonAPI
make
python3 setup.py build_ext --inplace
python3 setup.py build_ext install
我们在服务器打开ipython,看一下运行pycocotools会不会报错
ipython
from pycocotools.coco import COCO
from pycocotools import mask
exit()
如果import pycocotools包的时候,没有报错,那就说明我们把pycocotools安装好了。
之后把版本改成tensorflow1.5和keras2.1.6(因为刚才我们安装的时候,requirements.txt默认安装的都是最新版本的包,所以这里我们使用pip重新安装)
pip install tensorflow==1.5
pip install keras==2.1.6
至此,我们的环境就配好了。
使用jupyter notebook来运行代码吧
jupyter notebook
输入这一串,应该服务器就运行起来jupyter notebook了。但是我发现我复制端口到我的chrome上打不开,所以我在服务器上使用jupyter notebook的时候,都是使用的这行代码。
jupyter notebook --ip=我的服务器的ip
如果有同学发现conda提示没有安装jupyter notebook ,可能是说明你一开始没有先激活base环境再激活rcnn环境。
之后我们运行示例中的demo.ipynb代码。
可以在这里直接run all。也可以一个模块一个模块run过去(笔者是一个模块一个模块run的)。最后在代码底部,就可以得到Mask_RCNN demo运行的结果。
观察最后一个模块的代码,其实际上是从images的文件夹里随机抽取一张图片,并使用之前已经训练好的权重进行训练的,这也就是我们训练maskrcn的思想。准备数据集->训练权重->使用训练好的权重做检测->在图片上绘制根据权重预测出的mask
对于使用labelme进行自己的权重训练的网址,网上已经有很多了。这里不再赘述。
笔者是使用已经制作好的coco格式的数据集(图片+json)来训练的,这需要自己用pycocotools写一个读入的头文件。
当你有了annotationn,又有了大量的和此annotation对应的image,如何让模型读入coco数据集并进行训练呢?
在这里,笔者参考了
Train a Mask R-CNN model on your own data和How to train Mask R-CNN on the custom dataset 还有github作者sample文件夹里的那几个例子来综合进行训练。
若笔者有时间,将会在这里详细介绍。