一、Ananconda虚拟环境
1、python环境
(1)创建虚拟环境
conda create -n MaskRCNN python=3.6
conda activate MaskRCNN
(2)安装依赖包
conda install ipython pip
pip install ninja yacs cython matplotlib tqdm opencv-python requests
-i https://pypi.tuna.tsinghua.edu.cn/simple
2、Pytorch1.2.0
(1)下载如下两个文件,网址:https://download.pytorch.org/whl/cu100/torch_stable.html
torch-1.2.0-cp36-cp36m-win_amd64.whl
torchvision-0.4.0-cp36-cp36m-win_amd64.whl
(2)pip安装下载的两个文件,用绝对路径
pip install path/torch-1.2.0-cp36-cp36m-win_amd64.whl
pip install path/torchvision-0.4.0-cp36-cp36m-win_amd64.whl
3、pycocotools
git clone https://github.com/cocodataset/cocoapi.git
cd cocoapi/PythonAPI
python setup.py install
备注:有问题参考https://www.cnblogs.com/yihe/p/8467984.html
4、安装apex
git clone https://github.com/NVIDIA/apex
cd apex
pip install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" ./
python setup.py install
5、安装maskrcnn benchmark
git clone https://github.com/facebookresearch/maskrcnn-benchmark.git
cd maskrcnn-benchmark
python setup.py build develop
二、运行官方Demo
(1)在Jupyter Notebook中打开/home/bai/maskrcnn-benchmark/demo/Mask_R-CNN_demo.ipynb
(2)错误信息: ModuleNotFoundError: No module named 'maskrcnn_benchmark'--->
三、制作自己的数据集
(1)安装自己的数据集
pip install scikit-image -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install labelme -i https://pypi.tuna.tsinghua.edu.cn/simple
labelme
(2)标注数据转换
python labelme2cocoAll.py roadscene_train --output instances_train2017.json
python labelme2cocoAll.py roadscene_val --output instances_val2017.json
四、训练
(1)在maskrcnn-benchmark根目录下面的datasets文件夹下,创建目录结构如下:
---coco
|---annotations
|---instances_train2017.json
|---instances_val2017.json
|---train2017
|---训练图片
|---val2017
|---验证图片
(2)配置文件选择和修改
根目录下的configs文件夹里面有很多yaml网络配置文件,这里选择的是
e2e_mask_rcnn_R_50_FPN_1x.yaml,更改如下:
拷贝文件并改名为:my_e2e_mask_rcnn_R_50_FPN_1x.yaml, 内容修改如下:
(3)预训练权重文件准备
python weights/trim_detectron_model.py --pretrained_path weights/e2e_mask_rcnn_R_50_FPN_1x.pth --save_path weights/my_pretrained_R_50.pth
(4)重新编译项目
python setup.py build develop
(5)网络训练
python tools/train_net.py --config-file configs/my_e2e_mask_rcnn_R_50_FPN_1x.yaml MODEL.ROI_BOX_HEAD.NUM_CLASSES 6 SOLVER.IMS_PER_BATCH 4 SOLVER.BASE_LR 0.001 SOLVER.MAX_ITER 36000 SOLVER.STEPS " (24000, 32000)" TEST.IMS_PER_BATCH 1 MODEL.RPN.FPN_POST_NMS_TOP_N_TRAIN 2000
其中MODEL.ROI_BOX_HEAD.NUM_CLASSES的值根据自己的数据集物体的个数设定为:物体的个数+1