近期使用mask scoring RCNN了训练自己的数据集,做一个记录,其中主要参考原作者github上的install.md文件以及几篇博客:
https://blog.csdn.net/linolzhang/article/details/97833354
https://blog.csdn.net/XX_123_1_RJ/article/details/102733175
https://www.cnblogs.com/littleLittleTiger/p/12264529.html
这几篇博客都写得挺全的,在此基础上,添加自己训练过程中的遇到的问题以及需要注意的细节。
论文《Mask Scoring R-CNN》链接
一、安装环境
1.基本环境
conda create --name maskrcnn_benchmark
source activate maskrcnn_benchmark
conda install ipython
pip install ninja yacs cython matplotlib
conda install pytorch-nightly torchvision=0.2.1 cudatoolkit=9.0 -c pytorch
2.安装cocoapi
export INSTALL_DIR=$PWD
# install pycocotools
git clone https://github.com/cocodataset/cocoapi.git
cd cocoapi/PythonAPI
python setup.py build_ext install
另外我看的几个博客都安装了apex:混合精度,用于提升GPU上的训练速度。
我操作时查看的原作者github代码的安装文件,他们未安装apex,因此我也未安装。
3.编译模型代码
# install PyTorch Detection
cd $INSTALL_DIR
git clone https://github.com/zjhuang22/maskscoring_rcnn
cd maskscoring_rcnn
python setup.py build develop
二、准备数据
1.使用labelme对数据做标签、生成json文件。
2.将json数据转换为coco格式。
3.数据以及预训练模型的目录结构
├── maskscoring_rcnn
│ ├── datasets
│ │ └── annotations
│ │ │ ├── coco_mydata_train.json
│ │ │ ├── coco_mydata_test.json
│ │ └── coco_mydata_train
│ │ └── coco_mydata_test
│ │
│ ├── ImageNetPretrained
│ │ └── R-101.pkl
│ │ └── R-50.pkl
三、训练
1.修改参数
(1)修改maskscoring_rcnn/configs/e2e_ms_rcnn_R_50_FPN_1x.yaml:
MODEL:
META_ARCHITECTURE: "GeneralizedRCNN"
WEIGHT: "catalog://ImageNetPretrained/MSRA/R-50"
PRETRAINED_MODELS: 'pretrained_models'
DATASETS:
TRAIN: ("coco_train_xxx",) # 设置训练验证集,名字可以随意起,和其他配置文件对应即可。
TEST: ("coco_val_xxx",)