Swin-transformer纯目标检测训练自己的数据集


前言

快写成swin系列博客了,前两篇:
基于win10复现swin-transformer图像分类源码
Windows10系统下swin-transformer目标检测环境搭建

单开一篇记录目标检测的修改过程,Swin-Transformer-Object-Detection严格意义上来说应该属于目标分割,只是加上了目标框的输出和类别,效果拉满。


具体步骤及过程

注:这里以mask_rcnn_swin_fpn作为backbone为例,数据格式为coco数据格式,其他模型的修改等同。

一、基本修改

1.修改类别名称(两处)

one:路径/mmdet/datasets/coco.py的第23行CLASSES
two:路径/mmdet/core/evaluation/class_names.py的第67行coco_classes
修改为自己数据集的类别

2.修改类别数

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

3.修改数据集路径

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

4.修改训练参数

路径/configs/swin/mask_rcnn_swin_tiny_patch4_window7_mstrain_480-800_adamw_3x(1x)_coco.py中:

第3行’…/base/datasets/coco_instance.py’修改为’…/base/datasets/coco_detection.py’
第69行的max_epochs按需修改
第31行的samples_per_gpu表示batch size大小,太大会内存溢出
第32行的workers_per_gpu表示每个GPU对应线程数,2、4、6、8按需修改

5.修改日志参数

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

修改到这里其实已经可以训练了,终端中输入:

python tools/train.py configs/swin/mask_rcnn_swin_tiny_patch4_window7_mstrain_480-800_adamw_3x_coco.py

实际命令根据自己使用的修改,可以看到已经可以训练了,但是这样还是训练的带mask的,还不是真正意义上的目标检测模型。


二、禁用mask

1.路径./configs/base/models/mask_rcnn_swin_fpn.py中第75行use_mask=True 修改为use_mask=False

还需要删除mask_roi_extractor和mask_head两个变量,大概在第63行和68行,这里删除之后注意末尾的逗号和小括号的格式匹配问题

2.路径/configs/swin/mask_rcnn_swin_tiny_patch4_window7_mstrain_480-800_adamw_3x_coco.py中:
第26行dict(type=‘LoadAnnotations’, with_bbox=True, with_mask=True)修改为dict(type=‘LoadAnnotations’, with_bbox=True, with_mask=False)
第60行删掉’gt_masks’

训练时使用下面命令训练:

bash tools/dist_train.sh 'configs/swin/mask_rcnn_swin_tiny_patch4_window7_mstrain_480-800_adamw_3x_coco.py' 1 --cfg-options model.pretrained='checkpoints/swin_tiny_patch4_window7_224.pth'

其中1为GPU数量,按需修改,预训练模型model.pretrained可选

三、遇到的问题及解决办法

1.AssertionError: Incompatible version of pycocotools is installed. Run pip uninstall pycocotools first. Then run pip install mmpycocotools to install open-mmlab forked pycocotools.

解决办法已经给出了,命令行中:

pip uninstall pycocotools
pip install mmpycocotools

2.KeyError: "CascadeRCNN: 'backbone.layers.0.blocks.0.attn.relative_position_bias_table'"

预训练模型加载错误,应该使用imagenet预训练的模型,而不是在coco上微调的模型,这个错误我也很无奈啊,跟我预想的使用coco模型预训练不一样,官方github也有人提出相同问题,解决办法就是不加载预训练模型从头训练,或者在https://github.com/microsoft/Swin-Transformer上下载分类的模型。

3.import pycocotools._mask as _mask
File "pycocotools/_mask.pyx", line 1, in init pycocotools._mask
ValueError: numpy.ndarray size changed, may indicate binary incompatibility. Expected 88 from C header, got 80 from PyObject

numpy版本问题,使用pip install --upgrade numpy升级numpy版本

总结

先到这里,后续再更。

  • 14
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 54
    评论
Swin-Transformer目标检测的代码可以在GitHub上找到。这是一个官方实现的项目,地址是GitHub - SwinTransformer/Swin-Transformer-Object-Detection。\[1\]Swin-Transformer是一种新型的Transformer模型,它采用了分层的方式来处理图像信息,从而减少了模型的计算量,同时提高了模型的精度。\[2\]在目标检测方面,可以使用Swin-Transformer来设计小目标检测头,以提高YOLOv5在小目标检测方面的能力。\[2\]具体的代码实现包括环境搭建、预训练模型的准备、数据集的准备、代码的修改、训练命令等步骤。\[3\]你可以根据这些步骤来进行Swin-Transformer目标检测的代码实现。 #### 引用[.reference_title] - *1* [Swin Transformer 代码学习笔记(目标检测)](https://blog.csdn.net/athrunsunny/article/details/124936790)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Swin-Transformer目标检测头在YOLOv5上的优化](https://blog.csdn.net/wellcoder/article/details/130908136)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Swin-Transformer目标检测](https://blog.csdn.net/weixin_45977690/article/details/127127228)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值