Swin-Transformer训练自己的数据集

这篇具有很好参考价值的文章主要介绍了Swin-Transformer训练自己的数据集。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

Swin-Transformer精度较高,但其对显卡要求同样较高,我的是RTX2070,8G显存,当设置crop size为512512时,batchsize设置为2,才不会报OOM。当crop size为10241024时,如果类别较少,还可以跑通,类别较多则会报错。


一、虚拟环境搭建

1.下载代码

首先下载Swin-Transformer的源码,在PyCharm中创建针对Swin-Transformer算法的虚拟环境。此处不再多说。

2.相关库安装

在PyCharm中创建好虚拟环境后,并打开Terminal,会自动进入虚拟环境,之后执行命令会将库安装在虚拟环境中。安装requirement.txt中所需的库,自动安装的话有时候版本会出现问题。如PyTorch需要1.6.0,且需要和自己电脑的CUDA版本对应,所以自行安装如下

pip install torch==1.6.0+cu101 torchvision==0.7.0+cu101 -f https://download.pytorch.org/whl/torch_stable.html

安装mmcv-full 1.1.5版本,也可参照mmcv安装文档安装

pip install mmcv-full==1.1.5 -f https://download.openmmlab.com/mmcv/dist/cu101/torch1.6.0/index.html

安装mmseg

pip install mmsegmentation

安装代码包中requirements.txt所包含的库,

pip install -r requirements\docs.txt

打开py文件后,PyCharm也会自动提示按照requirement安装,按照该提示安装亦可。

3.环境测试

安装完成后,为了测试环境是否符合要求,先用给定demo对图片进行预测,能跑通则说明环境大体可用。
首先在代码地址下载预训练模型,本文从百度云下载ADE20K数据集Swin-T对应的预训练模型,密码swin。亦可从代码地址下载其他模型。将下载的模型放在demo文件夹中。
打开demo目录下image_demo.py,修改代码如下:

def main():
    parser = ArgumentParser()
    parser.add_argument('--img', default='demo.png', help='Image file')
    parser.add_argument('--config', default='../configs/swin/upernet_swin_tiny_patch4_window7_512x512_160k_ade20k.py',help='Config file')
    parser.add_argument('--checkpoint', default='upernet_swin_tiny_patch4_window7_512x512.pth',help='Checkpoint file')
    parser.add_argument(
        '--device', default='cuda:0', help='Device used for inference')
    parser.add_argument(
        '--palette',
        default='ade20k',
        help='Color palette used for segmentation map')

然后运行demo.py,如果可以弹出预测结果如下,则说明环境搭建基本成功。
Swin-Transformer训练自己的数据集

二、制作自己的数据集

1.样本准备

Swin-Transformer支持VOC格式数据集,本人用Labelme标注的样本如下,转为VOC格式即可。
Swin-Transformer训练自己的数据集
在labelme中执行如下命令,其中LabelmeDataPath 表示labelme标注好的样本所在文件夹;VOCDataPath 表示输出的voc格式的文件夹,注意该文件夹不能手动创建,如果该文件夹已存在则提示已存在;labels.txt中保存的是所有样本类别名称,一个类别一行
labelme2voc.py --input_dir LabelmeDataPath --output_dir VOCDataPath --labels labels.txt

将生成的VOC格式数据复制到如下图所示文件夹下,不存在的目录可自行手动创建。Swin-Transformer训练自己的数据集
JPEGImages中存放所有图片,如下所示:
Swin-Transformer训练自己的数据集
SegmentationClass文件夹中是VOC格式的样本结果图
Swin-Transformer训练自己的数据集

创建如下目录,train.txt中是训练用的图片名称,一行一个图片;val.txt是验证所需图片的名称。Swin-Transformer训练自己的数据集

2.调试代码

在mmseg/datasets/voc.py中根据自己样本情况修改类别和颜色,类别和颜色数要一致。

代码如下(示例):

    CLASSES = ('background', 'cat', 'dag')

    PALETTE = [[120, 120, 120], [6, 230, 230], [128,192,0]]

在configs/swin/upernet_swin_tiny_patch4_window7_512x512_160k_ade20k.py中修改类别数,搜索num_classes,改为自己的类别数,这里修改为3。此外该算法的batch_size 也是在此文件中修改,最后一行

    data = dict(sample_per_gpu = 2)

此处的2即为batch_size,我的显存为8G,cropsize为512,可以设置为2,当cropsize为1024时,设置为1,但当我的类别增加很多时,batchsize为1显存也爆了。所以根据自身情况修改即可。
由于本文用VOC格式样本,所以将此处ade20k.py修改为voc格式对应的文件。此外,由于只是测试,不需要迭代太多次,将schdules_160k.py修改为schdules_20k.py,如下

    _base_ = [
     '../_base_/models/upernet_swin.py', '../_base_/datasets/pascal_voc12.py',
     '../_base_/default_runtime.py', '../_base_/schedules/schedule_2k.py'
 	]

由于schduls_20k.py还是需要迭代2万次,如还想减少最大迭代次数,可在改文件中进行修改最大迭代次数,如下所示,注意:下边的3000,表示没迭代3000次会输出一次模型文件,如最大迭代次数小于该数,输出目录下只会有日志文件,而没有权重模型。Swin-Transformer训练自己的数据集
在configs_base_\datasets\pascal_voc12.py中,crop_size可用于修改输入图片的大小,默认为512。
如果你是单GPU训练,在configs_base_\models\upernet_swin.py中将type='SyncBN’修改为type=‘BN’,否则可能回报错。另外此处的num_classes同样需要修改为自身样本的类别数,本文为3
修改tools\train.py

    def parse_args():
    parser = argparse.ArgumentParser(description='Train a segmentor')
    parser.add_argument('--config',default='../configs/swin/upernet_swin_tiny_patch4_window7_512x512_160k_ade20k.py', help='train config file path')
    parser.add_argument('--work-dir',default='output', help='the dir to save logs and models')
    parser.add_argument(
        '--load-from',default='../upernet_swin_tiny_patch4_window7_512x512.pth', help='the checkpoint file to load weights from')
    parser.add_argument(
        '--resume-from', help='the checkpoint file to resume from')
    parser.add_argument(
        '--no-validate',
        action='store_true',
        help='whether not to evaluate the checkpoint during training')
 	]

运行tools\train.py,训练完成后,会在tools文件夹下生成模型文件,可将生成的模型文件用demo.py测试训练结果


总结

以上是Swin-Transformer的训练记录。文章来源地址https://www.toymoban.com/news/detail-446184.html

到了这里,关于Swin-Transformer训练自己的数据集的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • timm使用swin-transformer

    报错的内容如下 解决办法 去swin官网下载对应的 swin_base_patch4_window7_224.pth (所有模型我都存自己百度网盘了)文件 然后根据提示 重命名为 swin_base_patch4_window7_224_22kto1k.pth 再将该文件移动到 /root/.cache/torch/hub/checkpoints/ 该目录下 这样timm就可以爽歪歪的用了 官网:https://github

    2024年02月16日
    浏览(40)
  • 17.基干模型Swin-Transformer解读

    欢迎访问个人网络日志🌹🌹知行空间🌹🌹 Swin-Transformer是 2021 年 03 月微软亚洲研究院提交的论文中提出的,比 ViT 晚了半年左右,相对于 ViT 而言, Swin-Transformer 的改进,使 transformer 能作为新的视觉任务 backbone ,用于分类分割和检测,姿态估计等任务。 论文:https://arxiv

    2024年02月06日
    浏览(40)
  • Swin-Transformer网络结构详解

    Swin Transformer是2021年微软研究院发表在ICCV上的一篇文章,并且已经获得 ICCV 2021 best paper 的荣誉称号。Swin Transformer网络是Transformer模型在视觉领域的又一次碰撞。该论文一经发表就已在多项视觉任务中霸榜。该论文是在2021年3月发表的,现在是2021年11月了,根据官方提供的信息

    2024年02月04日
    浏览(38)
  • Swin-transformer论文阅读笔记(Swin Transformer: Hierarchical Vision Transformer using Shifted Windows)

    论文标题:Swin Transformer: Hierarchical Vision Transformer using Shifted Windows 论文作者:Ze Liu, Yutong Lin, Yue Cao, Han Hu, Yixuan Wei, Zheng Zhang, Stephen Lin, Baining Guo 论文来源:ICCV 2021,Paper 代码来源:Code 目录 1. 背景介绍 2. 研究现状 CNN及其变体 基于自注意的骨干架构 自注意/Transformer来补充CN

    2024年02月07日
    浏览(46)
  • Swin-Transformer 实战代码与讲解(快速上手)

    最近在学习深度学习和机器学习的相关知识,在这里记录一下学习的模型和个人的一些感悟,文章包括了模型的讲解和项目源码。由于自身水平原因,总体会比较偏白话,适合小白,如果有出错的地方请大家指正。 博客讲解:https://blog.csdn.net/qq_37541097/article/details/121119988 B站

    2024年02月14日
    浏览(36)
  • 李沐论文精读系列二:Vision Transformer、MAE、Swin-Transformer

    传送门: 李沐论文精读系列一: ResNet、Transformer、GAN、BERT 李沐论文精读系列三:MoCo、对比学习综述(MoCov1/v2/v3、SimCLR v1/v2、DINO等) 李沐论文精读系列四:CLIP和改进工作串讲(LSeg、GroupViT、VLiD、 GLIPv1、 GLIPv2、CLIPasso) 论文名称: An Image Is Worth 16x16 Words: Transformers For Imag

    2024年01月17日
    浏览(43)
  • 在YOLOv5中添加Swin-Transformer模块

    前段时间整理了一个可以添加SwinTransformer Block的YOLOv5代码仓库。不需要任何其他的库包,可以运行YOLOv5程序的环境即可以正常运行代码。 分别进行了SwinTransformer Block、Patch Merging、Patch Embed阶段的代码整理,以使得这些模块可以适配于u版YOLOv5的模型构建代码。 和YOLOv5一样,通

    2024年02月04日
    浏览(58)
  • 深度学习网络模型————Swin-Transformer详细讲解与代码实现

    论文名称 :Swin Transformer: Hierarchical Vision Transformer using Shifted Windows 原论文地址 : https://arxiv.org/abs/2103.14030 官方开源代码地址 :https://github.com/microsoft/Swin-Transformer

    2024年02月14日
    浏览(35)
  • 图片分类网络ViT、MobileViT、Swin-Transformer、MobileNetV3、ConvNeXt、EfficientNetV2

    参考我的另一篇博文《李沐论文精读系列二:Vision Transformer、MAE、Swin-Transformer》 参考我的另一篇博文《李沐论文精读系列二:Vision Transformer、MAE、Swin-Transformer》 论文名称:MobileViT: Light-Weight, General-Purpose, and Mobile-Friendly Vision Transformer 参考小绿豆的博文《MobileViT模型简介》

    2024年02月04日
    浏览(56)
  • SwinIR Transformer训练教程(使用自己的数据集)

    SwinIR Transformer图像超分辨率重建训练教程 文章:https://arxiv.org/abs/2108.

    2024年02月13日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包