Swin Transformer目标检测—训练自己数据集

一、环境配置

Code:https://github.com/SwinTransformer/Swin-Transformer-Object-Detection

软件准备:

  • Ubantu 18.04
  • Pycharm 2020.1
  • Anaconda

(1)安装VS2019

VS官网: https://docs.microsoft.com/zh-cn/visualstudio/releases/2019/release-notes
安装时只勾选桌面端的C++部分就可以,并添加环境变量,安装后需要重启电脑才有效

(2)创建Conda虚拟环境

创建:conda create -n swin_det python=3.8
激活:conda activate swin_det
pytorch安装:pip3 install torch==1.8.2+cu111 torchvision==0.9.2+cu111 torchaudio===0.8.2 -f https://download.pytorch.org/whl/lts/1.8/torch_lts.html
其他包安装:pip install cython matplotlib opencv-python timm -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com

(3)安装mmcv

项目地址:https://github.com/open-mmlab/mmcv/blob/master/README_zh-CN.md

  • 使用Anaconda的Powershell Prompt进入mmcv目录下,执行 pip install -r requirements.txt来安装mmcv所需的python包
  • 运行python setup.py build_ext(这步包括下面的一步就会用到之前VS中的cl工具,若VS安装有问题,这一步没法成功)
  • 运行python setup.py develop重建代码

(4)安装mmdetection

项目地址:https://github.com/open-mmlab/mmdetection/tree/v2.11.0

  • 使用Anaconda的Powershell Prompt进入mmdetection的代码目录,执行 pip install -r requirements.txt安装mmdetection所需的python包
  • 运行python setup.py develop重建代码

(5)安装apex

项目地址:https://github.com/open-mmlab/mmdetection/tree/v2.11.0

  • 使用Anaconda的Powershell Prompt进入mmdetection的代码目录,执行 pip install -r requirements.txt安装mmdetection所需的python包
  • 运行python setup.py develop重建代码

二、工程修改

1. 设置类别
修改 configs/base/models/mask_rcnn_swin_fpn.py 中 num_classes 为自己数据集的类别(有两处需要修改)
2. 数据集路径
配置数据集路径:configs/base/datasets/coco_instance.py 文件的最上面指定了数据集的路径,因此在项目下新建 data/coco目录,下面四个子目录 annotations和test2017,train2017,val2017。
3. 修改分类数组
mmdet/datasets/coco.py目录下,CLASSES中填写自己的分类:

CLASSES = ('class1',)

三、踩坑记录

  1. 修改分类数组时,若只有一个类,一定要定义为元组,即类名后面加都好,不然会报错,别问我怎么知道的!
    报错如下:
# AssertionError: The `num_classes` (80) in Shared2FCBBoxHead of MMDataParallel does not matches the
  1. 修改完代码以后,若还是包相同的错误,建议执行python setup.py develop再尝试运行
  2. list index out of range
    训练了若干个epoch之后,报错如下图所示(错误没及时记录下来,借用别人的图~):
    在这里插入图片描述
    原因在于数据集json文件中segmentation字段是空的,在github的官方代码库中的requests栏目中发现了解决方式,修改mmdet/models/roi_heads_test_mixins.py文件的第118行为supplement_mask = rois.abs()[..., 1:].sum(dim=-1) == 0即可成功运行。
    在这里插入图片描述
    参考链接:
    https://beyonderwei.com/
    https://blog.csdn.net/hasque2019/article/details/121899614

测试部分后面跑完有时间再来追加~
干饭去了!

  • 2
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Swin Transformer是一种用于图像分类和目标检测的新型神经网络,它使用了一种基于局部注意力机制的新型Transformer结构,并在多个数据集上取得了良好的表现。如果你想使用Swin Transformer训练自己的数据集目标检测模型,可以按照以下步骤进行: 1. 准备数据集:首先需要准备自己的数据集,包括训练集、验证集和测试集。数据集应该包括图像和标注文件,标注文件格式可以是COCO、PASCAL VOC等常见格式。 2. 安装Swin Transformer代码库:可以从GitHub上下载Swin Transformer的代码库,并按照说明安装依赖项。 3. 修改配置文件:Swin Transformer使用配置文件来指定模型的参数和训练参数,需要根据自己的数据集训练需求修改配置文件。可以参考代码库中的示例配置文件进行修改。 4. 开始训练:使用修改后的配置文件启动训练过程。可以使用命令行工具或者脚本启动训练训练过程中需要指定训练集、验证集、优化器、学习率等参数。 5. 模型评估和测试:训练完成后,可以使用验证集对模型进行评估,计算模型在各个指标上的表现。还可以使用测试集对模型进行测试,检测模型在实际场景中的表现。 需要注意的是,训练目标检测模型是一个复杂的过程,需要具备一定的机器学习和深度学习基础,并且需要具备较高的计算资源和时间。如果你是初学者,建议先学习一些基础的机器学习和深度学习知识,再尝试使用Swin Transformer进行训练

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值