Swin Transformer Object Detection代码复现采坑记录

  1. 下载Swin Transformer Object Detection官方代码Swin-Transformer-Object-Detection

  2. 按照官方readme安装相关环境和软件包

  3. 根据官网mmdetection安装完mmcv和mmdet后,测试代码会遇到一个坑,显示mmcv版本过大(mmcv==1.4.2),看了官网后,发现版本并没有问题,此处需要修改mmdet/init.py文件:

mmcv_minimum_version = '1.3.17'
mmcv_maximum_version = '1.5.0'
mmcv_version = digit_version(mmcv.__version__)

保持mmcv最大版本和最低版本与 mmdetection官网版本一致即可

  1. 安装完相关包后,会报如下错误:
TypeError: MaskRCNN: SwinTransformer: __init__() got an unexpected keyword argument 'embed_dim'

需要按照mmdetection官网指示,运行:

pip install -v -e .
  1. 还需要安装apex安装包,安装它是相当的难受。可以先按照官方的那个操作来,如果安装不了,可以下载别的博主提供提供的apex文件,然后再按照官方的那个操作再来一遍。注意啊,apex安装不成功的原因基本就是cuda版本和torch版本不匹配,这个我已经有心理阴影了,在这里不多提。假设你这边下载了我这边的apex文件,然后按照以下操作:
cd apex
pip install -v --disable-pip-version-check --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" ./
  1. 运行一下代码:
python ./tools/train.py configs/swin/cascade_mask_rcnn_swin_tiny_patch4_window7_mstrain_480-800_giou_4conv1f_adamw_1x_coco.py --cfg-options model.pretrained=./checkpoints/swin_tiny_patch4_window7_224.pth

报如下错误:

  File "/root/anaconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/modules/module.py", line 722, in _call_impl
    result = self.forward(*input, **kwargs)
  File "/root/anaconda3/envs/pytorch/lib/python3.7/site-packages/mmcv/cnn/bricks/conv_module.py", line 203, in forward
    x = self.norm(x)
  File "/root/anaconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/modules/module.py", line 722, in _call_impl
    result = self.forward(*input, **kwargs)
  File "/root/anaconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/modules/batchnorm.py", line 493, in forward
    world_size = torch.distributed.get_world_size(process_group)
  File "/root/anaconda3/envs/pytorch/lib/python3.7/site-packages/torch/distributed/distributed_c10d.py", line 620, in get_world_size
    return _get_group_size(group)
  File "/root/anaconda3/envs/pytorch/lib/python3.7/site-packages/torch/distributed/distributed_c10d.py", line 219, in _get_group_size
    _check_default_pg()
  File "/root/anaconda3/envs/pytorch/lib/python3.7/site-packages/torch/distributed/distributed_c10d.py", line 210, in _check_default_pg
    "Default process group is not initialized"
AssertionError: Default process group is not initialized
  1. 在configs/swin/cascade_mask_rcnn_swin_tiny_patch4_window7_mstrain_480-800_giou_4conv1f_adamw_1x_coco.py 的文件中,norm_cfg = dict(type=‘SyncBN’, requires_grad=True), 'SyncBN’是采用distributed的训练方法,在单GPU non-distributed训练中使用会出现上述错误,
    将所有的type改为type=‘BN’ 即可.
  • 7
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
### 回答1: Swin Transformer 目标检测是一种基于 Swin Transformer 模型的目标检测算法。它采用了一种新的 Transformer 架构,能够在保持高精度的同时,大幅提高计算效率。该算法在 COCO 数据集上取得了 SOTA 的结果。 ### 回答2: Swin Transformer是一种基于Transformer架构的新型神经网络模型,在目标检测任务中表现出色。它的设计思路主要是通过分解高分辨率特征图的位置编码,将计算复杂度从O(N^2)降低到O(N),极大地提高了模型的计算效率。 Swin Transformer目标检测任务上的应用主要通过两个关键方面来进行:Swin Transformer Backbone和Swin Transformer FPN。 Swin Transformer Backbone是指将Swin Transformer应用于骨干网络的部分。传统的目标检测模型通常使用ResNet或者EfficientNet等CNN架构作为骨干网络,而Swin Transformer通过将Transformer的自注意力机制应用于骨干网络中,使得模型可以更好地学习到不同尺度和位置的特征信息。 Swin Transformer FPN则是指利用Swin Transformer模型中的特征金字塔网络(Feature Pyramid Network)来进行目标检测。特征金字塔网络通过将不同层次的特征图进行融合,使得模型可以同时获得高级语义信息和低级细节信息,从而提升目标检测的准确性和鲁棒性。 相比于传统的目标检测模型,Swin Transformer在计算效率和准确性上都有显著的提升。它不仅在COCO数据集上取得了当前最好的单模型性能,而且在推理速度上也优于其他同等性能的模型。因此,Swin Transformer目标检测领域具有广泛的应用前景。 ### 回答3: Swin Transformer是一种基于Transformers的对象检测模型。它是在Transformer架构上进行了改进和优化,以适用于目标检测任务。 与传统的卷积神经网络不同,Swin Transformer使用的是一种局部注意力机制,它能够在图像中进行局部区域的特征提取和交互。这种局部注意力机制能够有效地减少计算复杂度,提升模型的性能。 Swin Transformer利用了一个分层的网络结构,其中每个层级都有多个Swin Transformer块。每个Swin Transformer块由两个子层组成,分别是局部窗口注意力机制子层和跨窗口注意力机制子层。局部窗口注意力机制子层用于提取特定区域的局部特征,而跨窗口注意力机制子层用于不同区域之间的特征交互。 在训练过程中,Swin Transformer还使用了分布式权重梯度传播算法,以加快训练速度。此外,Swin Transformer还采用了数据增强技术,如随机缩放和水平翻转,以提高模型的泛化能力。 实验证明,Swin Transformer在COCO数据集上取得了很好的性能,在目标检测任务上超过了传统的卷积神经网络模型。它在准确性和效率方面表现优异,对于大规模的对象检测任务具有很高的可扩展性。 总之,Swin Transformer是一种基于Transformers的对象检测模型,通过优化的局部注意力机制和分布式训练算法,能够在目标检测任务中取得出色的性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值