Swin Transformer实现(复现)纯目标检测

1.环境配置(CUDA10.2,python3.6)

①创建新的用于Swin Transformer纯目标检测的虚拟环境

conda create --name swin python=3.6 -y
conda activate swin

可自行更改虚拟环境名字和python版本3.6-3.8都可

②安装torch,亲测使用的是torch1.5.0的版本,最好不要太高

torch1.5.0,torchvision 0.6.0

pip install torch==1.5.0 torchvision==0.6.0 

③安装mmcv-full

有两种安装方式,都安装成功过,可自行选择安装

(1)

pip install mmcv-full==1.4.0 -f https://download.openmmlab.com/mmcv/dist/cu102/torch1.5.0/index.html

(2)

pip install -U openmim
mim install mmcv-full==1.7.0

④安装pycocotools

sudo apt-get install cython
get clone https://github.com/cocodataset/cocoapi
make
pip install pycocotools

如果安装不上,参考下面详细的安装方式 

pycocotools库的安装(本人亲测,已解决)

⑤安装apex(本人多次安装,多次出错,现已完全解决)

(1)自己的torch>=1.8.0,则安装下列方式安装

git clone https://github.com/NVIDIA/apex.git
cd apex
python setup.py install --cuda_ext --cpp_ext

(2)自己的torch<1.8.0,则安装下列方式安装

git clone https://github.com/NVIDIA/apex.git
cd apex
git reset --hard 3fe10b5597ba14a748ebb271a6ab97c09c5701ac
python setup.py install --cuda_ext --cpp_ext

 ⑥安装MMDetection

git clone https://github.com/open-mmlab/mmdetection.git
cd mmdetection
pip install -v -e .

以上是比较难安装的必须库,其他库缺什么装什么即可!!!

2.基本修改的参数

①修改类别名称

one:路径/mmdet/datasets/coco.py的第23行CLASSES  
two:路径/mmdet/core/evaluation/class_names.py的第67行coco_classes  
修改为自己数据集的类别
three:将evaluation = dict(interval=1, metric='bbox')改为
evaluation = dict(interval=1, metric='bbox',save_best='auto')

②修改类别数

路径/configs/base/models/mask_rcnn_swin_fpn.py中的num_classes,也有两处大概在第54行和73行,修改为自己数据集的类别数量

③修改数据集路径

路径/configs/base/datasets/coco_detection.py,第2行的data_root数据集根目录路径,第8行的img_scale可以根据需要修改,下面train、test、val数据集的具体路径ann_file根据自己数据集修改

第31行的samples_per_gpu表示batch size大小,太大会内存溢出
第32行的workers_per_gpu表示每个GPU对应线程数,2、4、6、8按需修改

④修改训练参数

路径/configs/swin/mask_rcnn_swin_tiny_patch4_window7_mstrain_480-800_adamw_3x(1x)-coco.py中:
第69行的max_epochs按需修改
第3行’…/base/datasets/coco_instance.py’修改为’…/base/datasets/coco_detection.py’
第69行的max_epochs按需修改

⑤修改日志参数

路径/configs/base/default_runtime.py中:  
第1行interval=1表示每1个epoch保存一次权重信息  
第4行interval=50表示每50次打印一次日志信息  
第14行load_from表示加载训练好的权重路径,可以不设置,在训练时终端中给定

⑥注释掉掩码部分,因为我们实现的是纯目标检测

将mask_rcnn_swin_fpn.py文件中的67-79行内容,如下,注释掉,切记注意括号匹配

        mask_roi_extractor=dict(
            type='SingleRoIExtractor',
            roi_layer=dict(type='RoIAlign', output_size=14, sampling_ratio=0),
            out_channels=256,
            featmap_strides=[4, 8, 16, 32]),
        mask_head=dict(
            type='FCNMaskHead',
            num_convs=4,
            in_channels=256,
            conv_out_channels=256,
            num_classes=80,
            loss_mask=dict(
                type='CrossEntropyLoss', use_mask=True, loss_weight=1.0))

3.训练测试命令

①训练命令

单卡训练命令:sudo python tools/train.py configs/swin/选择对应的配置文件,例如

sudo python tools/train.py configs/swin/mask_rcnn_swin_tiny_patch4_window7_mstrain_480-800_adamw_1x_coco.py --options "classwise=True"

多卡训练命令:sudo tools/dist_train.sh configs/swin/选择对应的配置文件 GPU数量,例如

sudo tools/dist_train.sh configs/swin/mask_rcnn_swin_tiny_patch4_window7_mstrain_480-800_adamw_1x_coco.py 6 --options "classwise=True"

上述的6代表GPU的个数,根据自己服务器配置更改

②测试命令

测试图片命令:sudo python demo/image_demo.py 图片路径 configs/swin/选择对应的配置文件 选择对应权重的路径,例如:

sudo python demo/image_demo.py demo/demo.jpg configs/swin/mask_rcnn_swin_tiny_patch4_window7_mstrain_480-800_adamw_1x_coco.py mask_rcnn_swin_tiny_patch4_window7_1x.pth

测试视频命令:sudo python demo/video_demo.py 视频路径  configs/swin/选择对应的配置文件 选择对应权重的路径 --device cuda:0 --out 保存路径/保存名,例如:

sudo python demo/video_demo.py demo/CT.mp4 configs/swin/mask_rcnn_swin_tiny_patch4_window7_mstrain_480-800_adamw_1x_coco.py mask_rcnn_swin_tiny_patch4_window7_1x.pth --device cuda:0 --out predict/CT.mp4

有疑问欢迎评论区交流!!!

猜你喜欢

转载自blog.csdn.net/weixin_42715977/article/details/130167078