《Deep Snake for Real-Time Instance Segmentation》
这篇文章旨在记录一下我是如何搭建环境DeepSnake的,以及如何使用COCO数据集和自己的数据集训练实例分割模型,并进行测试的过程,具体原理在我的另一篇博客中。
作者:Sida Peng, Wen Jiang, Huaijin Pi, Xiuli Li, Hujun Bao, Xiaowei Zhou
CVPR 2020 oral
Subjects: Computer Vision and Pattern Recognition (cs.CV)
https://github.com/zju3dv/snake/
Preliminary
对于任何一个深度学习模型来说都需要以下四部分信息:dataset,network,trainer和evaluator,这也是我们设计一个模型工程的组成部分。
- dataset: 提供用于训练和测试的数据(data和target的数据格式)。
- network: 模型的网络结构。
- trainer: 定义损失函数和优化器用于训练。
- evaluator: 定义衡量方法用于模型估计。
环境搭建
环境搭建参考1
作者提供了一个环境搭建的文档:https://github.com/zju3dv/snake/blob/master/INSTALL.md但是我照着做一直没有编译成功,外部依赖的三个模块dcn_v2、extreme_utils和roi_align_layer,和作者沟通,作者说他使用gcc5.4.0进行编译的,大家可以用gcc5.4.0参照作者给出的环境搭建文档进行环境搭建。
环境搭建参考2
由于按照作者提供的环境搭建过程中出现了问题,所以我自己搭建了一套环境,是可以成功运行的,具体的依赖list如下,和版本相关的我都注明了版本号,其余的运行如果缺少哪些库自行pip install或conda install安装即可:
- CUDA - 10.1
- cudnn - 7.6.0
- python - 3.6
- gcc & g++ - 7.3.0
- pytorch - 1.2.0
- torchvision - 0.4.0
- opencv
- imgaug
- imageio
- pycocotools
- tqdm
- yaml
- tensorboardx
遇到的问题
环境问题:
Q: libbz2.so.1.0: cannot open shared object file: No such file or directory
A: 这个库在/usr/lib64下,如果你指定的版本和/usr/lib64下的软连接名称不一样,只需要在你能依赖的路径下再软连接一个你需要的名字即可。
Q: error trying to exec ‘cc1plus’: execvp
A:两种可能:1、你没有安装g++;2、你的gcc的版本和g++版本不相符合,检查一下。
COCO数据
COCO 训练
-
下载COCO 2017数据集,地址如下
– train –
1.1 http://images.cocodataset.org/zips/train2017.zip
1.2 http://images.cocodataset.org/annotations/annotations_trainval2017.zip
– va –
1.3 http://images.cocodataset.org/zips/val2017.zip
1.4 http://images.cocodataset.org/annotations/stuff_annotations_trainval2017.zip
– test –
1.5 http://images.cocodataset.org/zips/test2017.zip
1.6 http://images.cocodataset.org/annotations/image_info_test2017.zip -
修改数据路径:
2.1 vi lib/datasets/dataset_catalog.py,把里面对应coco部分的数据和标注文件改为你自己的路径即可。'CocoTrain': { 'id': 'coco', 'data_root': 'data/coco/train2017', 'ann_file': 'data/coco/annotations/instances_train2017.json', 'split': 'train' }, 'CocoVal': { 'id': 'coco', 'data_root': 'data/coco/val2017', 'ann_file': 'data/coco/annotations/instances_val2017.json', 'split': 'test' }, 'CocoMini': { 'id': 'coco', 'data_root': 'data/coco/val2017', 'ann_file': 'data/coco/annotations/instances_val2017.json', 'split': 'mini' }, 'CocoTest': { 'id':