运行环境:ubuntu18.04, CUDA10,conda
硬件:2080Ti
参考:
PolarMask pytorch代码实现记录(碎碎念事无巨细版)_Amberrr的博客-CSDN博客_polarmask训练自己的数据集
PolarMask是基于mmdetection的。
1.下载文件
新建PolarMask文件夹,在其中下载PolarMask源码文件夹,并下载cocoapi文件夹,并列放置
GitHub - xieenze/PolarMask: Code for 'PolarMask: Single Shot Instance Segmentation with Polar Representation'Code for 'PolarMask: Single Shot Instance Segmentation with Polar Representation' - GitHub - xieenze/PolarMask: Code for 'PolarMask: Single Shot Instance Segmentation with Polar Representation'https://github.com/xieenze/PolarMask
GitHub - cocodataset/cocoapi: COCO API - Dataset @ http://cocodataset.org/COCO API - Dataset @ http://cocodataset.org/ . Contribute to cocodataset/cocoapi development by creating an account on GitHub.https://github.com/cocodataset/cocoapi
2.安装依赖
进入PolarMask文件夹,修改PolarMask/mmdet/datasets/loader/sampler.py文件中:
from mmcv.runner.utils import get_dist_info
为:
from mmcv.runner import get_dist_info
然后开始进行配置,参考安装的指令install.md:
执行如下命令:
conda create -n your_venv_name python=3.7 -y #自己设置虚拟环境名字,和python版本,为了匹配matlib,建议选择3.7 conda activate your_venv_name #激活你建立的虚拟环境 conda install pytorch=1.3.1 cudatoolkit=10.0 torchvision=0.4.2 -c pytorch #安装此版本的pytorch和cuda开发组件
如果下载没问题(使用教育网)跳过此步,但是如果执行conda install pytorch=1.3.1 cudatoolkit=10.0 torchvision=0.4.2 -c pytorch,下载缓慢,则可以尝试使用pip命令安装pip install torch===1.3.1 torchvision===0.4.2 -f https://download.pytorch.org/whl/torch_stable.html
安装成功后,进入cocoapi文件夹中安装coco依赖,再进入PolarMask文件夹中安装PolarMask依赖,代码如下:
cd /cocoapi/PythonAPI #进入cocoapi文件夹 python setup.py build_ext install #安装cocoapi依赖 cd /PolarMask python setup.py develop #安装PolarMask依赖
过程中如果有报错no module named 'xxxxx' ,可使用conda install xxxx或者pip install xxxxx,命令安装即可。
安装好之后,开始训练dataset
3.制作自己的数据集并训练
其中coco数据集我使用的是2017格式:
data文件夹放在PolarMask代码包里面,布局如下:
data
| |---coco
| | |---annotations
| | |---train2017
| | |---val2017
设置好数据集格式和位置后,在configs/polarmask/4gpu/polar_768_1x_r50.py中修改为自己的数据集路径(data_root=data/coco/),修改类别数量num_classes=自己数据集中的类别数量,学习率设置为0.025(单块GPU要设置小),可自定义修改工作路径“work_dir=xxxxx”,保存训练过程中的权重文件和训练信息;device_ids = range(4)变为devices_ids = range(1)。
接下来开始训练,训练命令:
python tools/train.py configs/polarmask/4gpu/polar_768_1x_r50.py
执行该命令后可能出现cuda版本的相关信息,此种情况可能是自己的cuda版本与显卡不支持,或者是mmcv/mmdetection的版本不支持,如果这样,请在安装PolarMask依赖之前首先下载mmdetection和mmcv相应版本的代码包,按照:
Prerequisites — MMDetection 2.19.1 documentationhttps://mmdetection.readthedocs.io/en/latest/get_started.html#installation
安装正确的mmdetection和mmcv版本,之后再安装Polarmask依赖,即可解决该问题,
实际测试中 cuda10,pytorch1.3.1,python3.7, 2080Ti,ubuntu18.04,mmdetection1.0.0, mmcv0.5.3支持运行。
训练完成后相应权重保存在自己设置的工作路径中。
4.test和inference
测试命令,将训练结果输出保存为pkl文件:
#test的格式
python tools/test.py configs/polarmask/4gpu/polar_768_1x_r50.py [YOUR_CHECKPOINT_DIR] --out [OUT_DIR] # eg:python tools/test.py configs/polarmask/4gpu/polar_768_1x_r101.py /home/wh/weights/polarmask_r101_1x.pth --out work_dirs/polar101.pkl
#自己的
python tools/test.py configs/polarmask/4gpu/polar_768_1x_r50.py work_dirs/trash/epoch_12.pth --out /mnt/lxr/Polarmask/PolarMaskmaster/work_dirs/out/results.pkl
Inference过程
/demo/visual.ipynb改成python脚本visual.py即可
在demo/visual.py里修改cofig路径、模型存储路径和测试图片路径
修改/mmdet/api/infrence.py文件中的函数show_result_pyplot(),在最后加上plt.savefig(“result.jpg”),可以添加参数设置指定目录,可以重新写一个脚本进行批处理。