Swin-Transformer-Object-Detection环境搭建训练流程及问题

一、背景

Swin-Transformer(Swin代表移位窗口shifted window)可以作为计算机视觉的通用backbone。它的github网址是Swin-Transformer,然后它有好几种应用:

Getting Started
For Image Classification, please see get_started.md for detailed instructions.
For Object Detection and Instance Segmentation, please see *Swin Transformer for Object Detection*.
For Semantic Segmentation, please see Swin Transformer for Semantic Segmentation.
For Self-Supervised Learning, please see Transformer-SSL.
For Video Recognition, please see Video Swin Transformer.

因为这里我们主要是图像实例分割,所以用第二个Swin-Transformer-Object-Detection模型,进入网址Swin-Transformer-Object-Detection

二、流程

1.搭建环境

此次安装版本

Python 3.7
pytorch       1.10.2       py3.7_cuda11.3_cudnn8.2.0_0    pytorch

这个也是基于mmdetection的,根据Installation里面的 get_started.md开始搭建,这里直接跳到了mmdetection的搭建,那就根据这个来。

a.创建conda虚拟环境并激活
conda create -n openmmlab python=3.7 -y
conda activate openmmlab
b.按照官方说明安装 PyTorch和torchvision

如果直接按照它给的来,应该是直接装上了最新版本,也是可以的
可以根据official instructions挑选所需要的命令

conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch
c.下载模型库

找合适的安装文件的地方,git clone一下

git clone https://github.com/SwinTransformer/Swin-Transformer-Object-Detection.git
cd Swin-Transformer-Object-Detection

如果下不了,就还是先移到gitee上,再下载

d.安装mmdetection
pip install openmim
mim install mmdet

还可以手动慢慢安装,好像比较麻烦,不用管它

f.其他操作

其他就没详细写了,根据自己摸索了下

pip install -r requirements.txt #安装Swin-Transformer-Object-Detection所需
python setup.py develop #跑Swin-Transformer-Object-Detection的setup

还做了mmdetection最下面那个demo测试,证明环境没问题

三、问题

首先,研究发现这个模型中config里面的各种py文件是各种互相联系的,这个要看准了

1

它一开始是报错data[‘category_id’] = self.cat_ids[label] IndexError: list index out of range

  • 从issues找到是说训练集图片名称不能以数字开头,然后特意,整了一组名称非数字开头的小数据集,发现还是没用。还有说classes里面如果只有一个类别要后面加个“,”,也没用。
  • 自己摸索,改了mmdet的一个文件夹中的classes,把自己数据的类别加上,然后类别数量还是80没有动,后来就没问题了

2

这个模型是目标检测跟图像实例分割都跑的模型,所有config里面有些是针对目标检测的,如一开始跑的下面这个,这个有问题来着。

python tools/test.py  /workspace/Swin-Transformer-Object-Detection/faster_rcnn_r50_fpn_1x_coco.py /workspace/Swin-Transformer-Object-Detection/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth --eval bbox

下面这个命令是可以的,跑通了,但是这就是目标检测的,后来inference一下,是只有检测

python tools/train.py /workspace/Swin-Transformer-Object-Detection/faster_rcnn_r50_fpn_1x_coco.py

尝试了很多命令以及config,最后跑通这个:

python tools/train.py /workspace/Swin-Transformer-Object-Detection/configs/cascade_rcnn/cascade_mask_rcnn_r50_caffe_fpn_1x_coco.py

但是出现了新的问题,见问题3

3

loss一直是nan,这个很烦人。各种查发现就是lr的问题,也就是学习率,最官方答案还是mmdetection里面找到的docFrequently Asked Questions即减小lr,或者增大warmup_iters等(网上还有增大batch-size,这个还没有改也没找到)

4

还有就是demo/image_demo.py本来没法保存图片,给它根据solo的inference_demo.py整体改了一下,包括内部的一些,加了个函数。

你可能感兴趣的:(深度学习,transformer,深度学习,pytorch)