手把手教你使用Segformer训练自己的数据

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


使用Transformer进行语义分割的简单高效设计。

将 Transformer 与轻量级多层感知 (MLP) 解码器相结合,表现SOTA!性能优于SETR、Auto-Deeplab和OCRNet等网络

segformer,Swin transformer,SegFormer,深度学习,人工智能

相比于ViT,Swin Transfomer计算复杂度大幅度降低,具有输入图像大小线性计算复杂度。Swin Transformer随着深度加深,逐渐合并图像块来构建层次化Transformer,可以作为通用的视觉骨干网络,应用于图像分类、目标检测和语义分割等任务。

Swin Transformer
segformer,Swin transformer,SegFormer,深度学习,人工智能

行了,不扯了,直接上干货!!!!!!!!!!!!!!

系统配置

  • 操作系统:Ubuntu 18.04
  • 内存:8G × 2
  • CPU:Intel® Core™ i5-8300H CPU @ 2.30GHz × 8
  • 显卡:NVIDIA GeForce GTX 3090 单卡

代码链接

github地址:https://github.com/NVlabs/SegFormer

针对MMCV 选择系统

ubuntu 配置环境很方便,所以不做详细介绍,只讲解win10安装方式:ubuntu安装方式会单独说

MMCV 选择系统时,由于mmcv-full 对windows目前没做高版本配置,相对不友好。需要自己下载源码编译。

Windows环境要求:

  • VS2019
  • pytorch 1.8.1
  • torchvision 0.9.1

安装虚拟环境

conda create -n swinseg python=3.8
conda activate swinseg conda
install pytorch=1.8 torchvision cudatoolkit=10.2 -c pytorch
pip install cython matplotlib opencv-python==4.5.1.48

安装vs2019,不需要安装全部包,只需要安装编译库即可,完成后查看如下路径是否存在,加粗部分会根据版本不同不同。

C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC*14.29.30037*\bin\Hostx86\x64

注意是vs2019 中间版本号可能不同 但是一定要Hostx86/x64的cl.exe。把cl.exe路径添加到系统环境变量并移至最上层 cuda10.2高于10.1.10.0

cmd set Path=C
cmd cl查看

打开anaconda power shell,切记是 anaconda power shell,要不然编译会出错,配置过程中注意不要开启VPN。

首先下载mmcv-1.2-7代码,代码包可在链接下载:

git (较慢):git clone https://github.com/open-mmlab/mmcv.git
本地博文库:https://download.csdn.net/download/weixin_38353277/82292837

安装mmcv
cd mmcv-1.2.7
pip install -r .\requirements.txt
查看英伟达显卡算力
segformer,Swin transformer,SegFormer,深度学习,人工智能

$env:TORCH_CUDA_ARCH_LIST="8.6"  根据自己显卡算例设置。nvidia 官网可查
$env:MMCV_WITH_OPS = 1
$env:MAX_JOBS = 4  一般电脑核数

python setup.py build_ext
会显示下面的界面,有一个过程,这个才算在编译,若是一闪而过的话,那么大概率是出问题了
segformer,Swin transformer,SegFormer,深度学习,人工智能
编译完成后的界面长下面这样
segformer,Swin transformer,SegFormer,深度学习,人工智能

python setup.py develop  #时间会长点

segformer,Swin transformer,SegFormer,深度学习,人工智能
完成后长下面这样(1.3.6之前编译界面)

segformer,Swin transformer,SegFormer,深度学习,人工智能
注意事项
注意:不要在同一个环境下安装两个版本,否则可能会遇到类似ModuleNotFoundError. 您需要先卸载一个,然后再安装另一个。Installing the full version is highly recommended if CUDA is available.
windows端安装的时候,不能使用pip直接安装,需要使用源码安装
注意:MMCV 需要 Python3.6++。
编译的时候不能使用CMD进行编译,必须使用powershell进行编译才行
cuda就用10.2 PyTorch就用1.8,这个是一定可以配置成功的,其他的版本没试过,不做保证,可能会有各种各样的坑,如果愿意的话,可以自行尝试

报错
ERROR: Failed building wheel for mmcv-full
segformer,Swin transformer,SegFormer,深度学习,人工智能

ERROR: Command errored out with exit status 1
安装过程中报错,原因是没有C++环境!
windows端安装的时候,不能使用pip直接安装,需要使用源码安装

ubuntu 18.04

一行搞定

pip install mmcv_full-1.2.7+torch1.7.0+cu110-cp38-cp38-manylinux1_x86_64.whl

版本自己可以换

安装swin segmentation

这是在swin segmentation目录下

pip install -r requirements.txt
pip install -e . --user (mmcv 安装有问题会报错)

也有 pip install segmentation

下载权重 demo/image_demo.py 修改–img --config --checkpoint路径 并运行
权重下载链接可以找我本地博文库,或者私信我,我发给你

制作VOC 数据集

代码默认用的是ADE20K数据集进行训练,其实都一样,我voc习惯了,所用就教教怎么用voc哈

ADE20K数据集 格式如下,按照要求放就完了

├── data
│   ├── ade
│   │   ├── ADEChallengeData2016
│   │   │   ├── annotations
│   │   │   │   ├── training
│   │   │   │   ├── validation
│   │   │   ├── images
│   │   │   │   ├── training
│   │   │   │   ├── validation

VOC 数据集格式是

├── VOCdevkit
│   ├── VOC2012
│   │   ├── ImageSets
│   │   │   ├── Segmentation
│   │   │   │   ├── train.txt
│   │   │   │   ├── val.txt
│   │   │   │   ├── trainval.txt

│   │   │   ├── JPEGImages
│   │   │   │   ├── *.jpg    #所有图片

│   │   │   ├── SegmentationClass
│   │   │   │   ├── *.jpg    #所有标签图

其中: train.txt val.txt trainval.txt 只要图片名,不需要后缀和路径 如下
segformer,Swin transformer,SegFormer,深度学习,人工智能
train val 比例自己分,这里不做讲解

JPEGImages, SegmentationClass放的是所有图片和label,切记如果2分类SegmentationClass 标签是0,1。多分类以此类推 0,1,2,……

然后将数据集放置在路径tools/data/下,可以任意,我就放这里了

代码部分修改

  1. configs/base/datasets/pascal_voc12.py修改
    data_root 你放数据的位置

segformer,Swin transformer,SegFormer,深度学习,人工智能
2 mmseg/datasets/voc.py修改
CLASSES PALETTE
segformer,Swin transformer,SegFormer,深度学习,人工智能
多分类一样,自己改

  1. mmseg/models/decode_heads/segformer_head.py修改
    第59行 SyncBN->BN
    segformer,Swin transformer,SegFormer,深度学习,人工智能

  2. tool/train修改–config --work-dir

segformer,Swin transformer,SegFormer,深度学习,人工智能
5. gpu ID

        '--gpu-ids',
        type=int,
        default=[0],
        nargs='+',

segformer,Swin transformer,SegFormer,深度学习,人工智能
6.local_config/base/models文件夹下对应的segformer.py
修改norm_cfg SyncBN->BN
修改num_classes

segformer,Swin transformer,SegFormer,深度学习,人工智能
7. local_config/segformer/B5文件夹下对应的在train设置的–config模型
修改norm_cfg SyncBN->BN
修改所有num_classes
修改model[‘pretrained’]
修改data[‘samples_per_gpu’]

segformer,Swin transformer,SegFormer,深度学习,人工智能

预训练权重文件优先选择训练图片尺寸的大小

开始训练

进入到tools路径下 python train.py 即可完成模型训练

segformer,Swin transformer,SegFormer,深度学习,人工智能

完成后测试效果
原图
segformer,Swin transformer,SegFormer,深度学习,人工智能

测试结果
segformer,Swin transformer,SegFormer,深度学习,人工智能
测试效果确实相当不错

测试代码需要的话私信我就行。文章来源地址https://www.toymoban.com/news/detail-807199.html

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

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

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

相关文章

  • YOLOv5入门实践(5)——从零开始,手把手教你训练自己的目标检测模型(包含pyqt5界面)

      通过前几篇文章,相信大家已经学会训练自己的数据集了。本篇是YOLOv5入门实践系列的最后一篇,也是一篇总结,我们再来一起按着 配置环境--标注数据集--划分数据集--训练模型--测试模型--推理模型 的步骤,从零开始,一起实现自己的目标检测模型吧! 前期回顾: YOLO

    2023年04月26日
    浏览(63)
  • hMailServer 使用教程 —— 手把手教你搭建自己的邮箱服务器

    前言 假设你已经拥有了一台具有 公网ip 的服务器,以及 域名 hMailServer 介绍 hMailServer 适用于 Windows 操作系统,它除了提供邮箱系统需要的所有基础功能之外,还内置了一些常用功能,比如:反垃圾邮件、反病毒邮件,而其他未内置的功能,则可以根据用户需要,自行去社区

    2024年02月04日
    浏览(68)
  • 手把手教你使用stable diffusion生成自己的艺术二维码

    随着AIGC的发展,CV领域也涌出了一大批优秀的工具,如md(midjourney)和sd(stable diffusion) 上手简单(只需要学一些prompt的写法和命令的使用) 需要一个discord账号 效果稳定比较容易出图 可定制性差 成本高,需要显卡(可以是云服务器) 上手难度大,需要自己配置环境,熟悉各种参数的

    2024年02月12日
    浏览(101)
  • 手把手教你租用服务器以及使用Pycharm远程连接服务器训练模型

    由于模型优化过后训练时间太长,所以想使用显卡或者租服务器进行训练,but显卡太贵(只有A卡),那就租服务器好了,开始了解怎么租,去哪租一系列问题,果然只要开始思考,就是一个接一个的困难,直接被击碎。终于找到了AutoDL,美美的开始租服务器,结果又绊在了选

    2024年02月10日
    浏览(62)
  • 手把手教你搭建自己本地的ChatGLM

    如果能够本地自己搭建一个ChatGPT的话,训练一个属于自己知识库体系的人工智能AI对话系统,那么能够高效的处理应对所属领域的专业知识,甚至加入职业思维的意识,训练出能够结合行业领域知识高效产出的AI。这必定是十分高效的生产力工具,且本地部署能够保护个人数

    2024年02月03日
    浏览(73)
  • 手把手教你用MindSpore训练一个AI模型!

    首先我们要先了解深度学习的概念和AI计算框架的角色( https://zhuanlan.zhihu.com/p/463019160 ),本篇文章将演示怎么利用MindSpore来训练一个AI模型。和上一章的场景一致,我们要训练的模型是用来对手写数字图片进行分类的LeNet5模型 请参考( http://yann.lecun.com/exdb/lenet/ )。 图1 M

    2024年02月04日
    浏览(60)
  • 手把手教你打造自己的 AI 虚拟主播

    AI 直播在近年来得到了快速的发展和普及,它已经成为了直播平台的重要组成部分。目前,许多知名的直播平台都已经开始采用 AI 技术,例如华为云直播、腾讯云直播、百度直播等。这些平台已经实现了对视频和音频数据的实时处理和优化,以提高直播质量和用户体验。 在

    2024年02月06日
    浏览(47)
  • 手把手教你训练一个VAE生成模型一生成手写数字

    VAE(Variational Autoencoder)变分自编码器是一种使用变分推理的自编码器,其主要用于生成模型。 VAE 的编码器是模型的一部分,用于将输入数据压缩成潜在表示,即编码。 VAE 编码器包括两个子网络:一个是推断网络,另一个是生成网络。推断网络输入原始输入数据,并输出两

    2024年02月06日
    浏览(58)
  • 手把手教你如何拥有自己的git仓库(国内版码云)

    码云(Gitee)简介:   码云(Gitee)是 开源中国社区推出的代码托管协作开发平台,支持Git,提供免费的私有仓库托管 。Gitee目前已经成为国内最大的代码托管平台。帮助开发者存储和管理其项目源代码,且能够追踪、记录并控制用户对其代码的修改,提供稳定、高效、安

    2024年02月15日
    浏览(76)
  • 手把手教你部署AutoGPT,30分钟拥有自己的AI助手!

    如果不想往下看了,那就直接 点我。 AutoGPT是由GPT-4驱动的开源应用程序,可以自主实现用户设定的任务目标;从AutoGPT开始,AI将可以自主地提出计划,然后执行计划;还具有互联网访问、长期和短期内存管理、用于文本生成的GPT-4实例以及使用GPT-3.5进行文件存储和生成摘要

    2024年02月05日
    浏览(62)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包