Swin Transformer Object Detection 目标检测-2——训练自己的数据集


视频教程完整版我在B站录的教学视频
 

一、修改工程

  1. 设置类别:修改 configs/base/models/mask_rcnn_swin_fpn.py 中 num_classes 为自己数据集的类别(有两处需要修改)

  2. 配置权重信息:修改 configs/base/default_runtime.py 中的 interval,loadfrom

  • interval:dict(interval=1) # 表示多少个 epoch 验证一次,然后保存一次权重信息
  • loadfrom:表示加载哪一个训练好的权重,可以直接写绝对路径如: load_from = r"E:\workspace\Python\Pytorch\Swin-Transformer-Object-Detection\mask_rcnn_swin_tiny_patch4_window7.pth"
  1. 修改训练尺寸大小:如果显存够的话可以不改(基本都运行不起来),文件位置为:configs/swin/mask_rcnn_swin_tiny_patch4_window7_mstrain_480-800_adamw_3x_coco.py
  • 修改所有的 img_scale 为 :img_scale = [(224, 224)] 或者 img_scale = [(256, 256)] 或者 480,512等。
  • 同时 configs/base/datasets/coco_instance.py 中的 img_scale 也要改成 img_scale = [(224, 224)] 或者其他值
  1. 配置数据集路径:configs/base/datasets/coco_instance.py 文件的最上面指定了数据集的路径,因此在项目下新建 data/coco目录,下面四个子目录 annotations和test2017,train2017,val2017。

  2. 修改该文件下的 train val test 的路径为自己新建的路径:

train=dict(
        type=dataset_type,
        ann_file=data_root + 'annotations/instances_train2017.json',
        img_prefix=data_root + 'train2017/',
        pipeline=train_pipeline),
    val=dict(
        type=dataset_type,
        ann_file=data_root + 'annotations/instances_val2017.json',
        img_prefix=data_root + 'val2017/',
        pipeline=test_pipeline),
    test=dict(
        type=dataset_type,
        ann_file=data_root + 'annotations/instances_test2017.json',
        img_prefix=data_root + 'test2017/',
        pipeline=test_pipeline))
  1. 修改 batch size 和 线程数:根据自己的显存和CPU来设置
samples_per_gpu=2,  # batch size
workers_per_gpu=2,  # 每个GPU对应线程数 可以大一些
  1. 修改分类数组:mmdet/datasets/coco.py

    • CLASSES中填写自己的分类:CLASSES = ('person', 'bicycle', 'car')

二、开始训练

执行:python tools/train.py configs\swin\mask_rcnn_swin_tiny_patch4_window7_mstrain_480-800_adamw_3x_coco.py

下一篇:Swin Transformer Object Detection 目标检测-3——测试训练效果,训练cascade_mask_rcnn_swin

 

关于作者:

  • 个人网站:https://beyonderwei.com
  • 邮箱:beyonderwei@gmail.com

微信公众平台

### 回答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的对象检测模型,通过优化的局部注意力机制和分布式训练算法,能够在目标检测任务中取得出色的性能。
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值