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

2023-10-30


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

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

在这里插入图片描述

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

Swin Transformer
在这里插入图片描述

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

系统配置

  • 操作系统: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
查看英伟达显卡算力
在这里插入图片描述

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

python setup.py build_ext
会显示下面的界面,有一个过程,这个才算在编译,若是一闪而过的话,那么大概率是出问题了
在这里插入图片描述
编译完成后的界面长下面这样
在这里插入图片描述

python setup.py develop  #时间会长点

在这里插入图片描述
完成后长下面这样(1.3.6之前编译界面)

在这里插入图片描述
注意事项
注意:不要在同一个环境下安装两个版本,否则可能会遇到类似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
在这里插入图片描述

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 只要图片名,不需要后缀和路径 如下
在这里插入图片描述
train val 比例自己分,这里不做讲解

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

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

代码部分修改

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

在这里插入图片描述
2 mmseg/datasets/voc.py修改
CLASSES PALETTE
在这里插入图片描述
多分类一样,自己改

  1. mmseg/models/decode_heads/segformer_head.py修改
    第59行 SyncBN->BN
    在这里插入图片描述

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

在这里插入图片描述
5. gpu ID

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

在这里插入图片描述
6.local_config/base/models文件夹下对应的segformer.py
修改norm_cfg SyncBN->BN
修改num_classes

在这里插入图片描述
7. local_config/segformer/B5文件夹下对应的在train设置的–config模型
修改norm_cfg SyncBN->BN
修改所有num_classes
修改model[‘pretrained’]
修改data[‘samples_per_gpu’]

在这里插入图片描述

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

开始训练

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

在这里插入图片描述

完成后测试效果
原图
在这里插入图片描述

测试结果
在这里插入图片描述
测试效果确实相当不错

测试代码需要的话私信我就行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

手把手教你使用Segformer训练自己的数据 的相关文章

  • 【卡尔曼滤波】粗略模型和过滤技术在模型不确定情况下的应用研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码及文献
  • 用通俗易懂的方式讲解:图解 Transformer 架构

    文章目录 用通俗易懂方式讲解系列 1 导语 2 正文开始 现在我们开始 编码 从宏观视角看自注意力机制 从微观视角看自注意力机制 通过矩阵运算实现自注意力机制
  • 【路径规划】基于A*算法路径规划研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现
  • 【路径规划】基于A*算法路径规划研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现
  • 问CHAT很繁琐的问题会不会有答案呢?

    问CHAT 什么已有的基于极值理论的极端温度重现期主要针对极端高温事件 对极端低温事件研究较少 CHAT 回复 为这主要可能是由于以下几个原因 1 气候变化与全球变暖 当前 全球变暖和气候变化的问题备受关注 这导致科研者更加关注极端高温事件
  • 利用CHAT写实验结论

    问CHAT 通过观察放置在玻璃表面上的单个水滴 人们可以观察到水滴充当成像系统 探究这样一个透镜的放大倍数和分辨率 CHAT回复 实验报告标题 利用玻璃表面的单一水滴观察成像系统的放大倍数和分辨率 一 实验目的 通过对比和测量 研究和探索玻
  • 基于java的ssh医院在线挂号系统设计与实现

    基于java的ssh医院在线挂号系统设计与实现 I 引言 A 研究背景和动机 基于Java的SSH医院在线挂号系统设计与实现的研究背景和动机 随着信息技术的迅速发展和应用 医院在线挂号系统已成为医院管理的重要组成部分 传统的挂号方式存在许多
  • 利用CHAT上传文件的操作

    问CHAT autox js ui 上传框 CHAT回复 上传文件的操作如果是在应用界面中的话 由于Android对于文件权限的限制 你可能不能直接模拟点击选择文件 一般来说有两种常见的解决方案 一种是使用intent来模拟发送一个文件路径
  • 打造完美人像,PixCake像素蛋糕助您一键修图

    您是否曾经为自己的人像照片需要进行繁琐的修图而感到困扰 是否曾经想要打造出完美的自拍照 却不知道该如何下手 现在 我们为您推荐一款强大的人像处理技术修图软件 PixCake像素蛋糕 PixCake像素蛋糕是一款基于AI人像处理技术的修图软件
  • 多模态、长文本、智能体,智谱AI推出GLM-4模型全家桶,发布即上线!

    点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入 2024年01月16日 智谱AI首届技术开放日 Zhipu DevDay 在北京中关村国家自主创新示范区展示中心成功举办 现场 智谱AI团队全面展示了其投身于大模型事业三年多来所
  • 【毕业设计选题】复杂背景下的无人机(UVA)夜间目标检测系统 python 人工智能 深度学习

    前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕业后面临的就业升学做准备 一边要为毕业设计耗费大量精力 近几年各个学校要求的毕设项目越来越难 有不少课题是研究生级别难度的 对本科同学来说是充满挑战 为帮助大家顺利通过和节省时间
  • 作物叶片病害识别系统

    介绍 由于植物疾病的检测在农业领域中起着重要作用 因为植物疾病是相当自然的现象 如果在这个领域不采取适当的护理措施 就会对植物产生严重影响 进而影响相关产品的质量 数量或产量 植物疾病会引起疾病的周期性爆发 导致大规模死亡 这些问题需要在初
  • 2024 人工智能与大数据专业毕业设计(论文)选题指导

    目录 前言 毕设选题 选题迷茫 选题的重要性 更多选题指导 最后 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕业后面临的就业升学做准备 一边要为毕业设计耗费大量精力 近几年各个学校要求的毕设项目越来越难 有不少课题是研究生
  • 强烈推荐收藏!LlamaIndex 官方发布高清大图,纵览高级 RAG技术

    近日 Llamaindex 官方博客重磅发布了一篇博文 A Cheat Sheet and Some Recipes For Building Advanced RAG 通过一张图给开发者总结了当下主流的高级RAG技术 帮助应对复杂的生产场
  • 如何用GPT进行论文润色与改写?

    详情点击链接 如何用GPT GPT4进行论文润色与改写 一OpenAI 1 最新大模型GPT 4 Turbo 2 最新发布的高级数据分析 AI画图 图像识别 文档API 3 GPT Store 4 从0到1创建自己的GPT应用 5 模型Ge
  • 不要再苦苦寻觅了!AI 大模型面试指南(含答案)的最全总结来了!

    AI 大模型技术经过2023年的狂飙 2024年必将迎来应用的落地 对 IT 同学来讲 这里蕴含着大量的技术机会 越来越多的企业开始招聘 AI 大模型岗位 本文梳理了 AI 大模型开发技术的面试之道 从 AI 大模型基础面 AI 大模型进阶
  • AI在广告中的应用——预测性定位和调整

    营销人员的工作就是在恰当的时间将适合的产品呈现在消费者面前 从而增加他们购买的可能性 随着时间的推移 营销人员能够深入挖掘越来越精准的客户细分市场 他们不仅具备了实现上述目标的能力 而且这种能力还在呈指数级提升 在AI技术帮助下 现在的营销
  • 主流进销存系统有哪些?企业该如何选择进销存系统?

    主流进销存系统有哪些 企业该如何选择进销存系统 永久免费 的软件 这个可能还真不太可能有 而且就算有 也只能说是相对免费 因为要么就是数据存量有限 要么就是功能有限 数据 信息都不保障 并且功能不完全 免费 免费软件 免费进销存 诸如此类
  • CorelDRAW2024官方中文版重磅发布更新

    35年专注于矢量设计始于1988年并不断推陈出新 致力为全球设计工作者提供更高效的设计工具 CorelDRAW 滋养并见证了一代设计师的成长 在最短的时间内交付作品 CorelDRAW的智能高效会让你一见钟情 CorelDRAW 全称 Co
  • 考虑光伏出力利用率的电动汽车充电站能量调度策略研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码 数据

随机推荐

  • Git - 生成 SSH 公钥

    生成 SSH 公钥 如前所述 许多 Git 服务器都使用 SSH 公钥进行认证 为了向 Git 服务器提供 SSH 公钥 如果某系统用户尚未拥有密钥 必须事先为其生成一份 这个过程在所有操作系统上都是相似的 首先 你需要确认自己是否已经拥有
  • centos安装ruby

    可以使用 sudo yum install ruby 直接安装 但安装的是旧版本 不建议使用 1 去ruby官网直接下载安装包 http www ruby lang org en downloads 燃鹅 下载不了 那就借助 某雷吧 把安装
  • 查看linux是否已经安装了apache

    查看linux是否已经安装了apache 解决方法 查看linux是否已经安装了apache服务 可以通过执行 http www yayihouse com yayishuwu chapter 1800
  • 网易云params和encSecKey的获取

    网易云params和encSecKey的获取 params和encSecKey有什么用 软件准备 1 python及其对应的编辑器 推荐pycharm 2 发条js调试工具 我使用的是1 9版本 js代码分析 定位生成位置 分析传入参数 代
  • 关于软件设计使用中一些的原则简述

    概述 向大家介绍过一些软件开发的原则 比如优质代码的十诫和Unix传奇 下篇 中所以说的UNIX的设计原则 相信大家从中能够从中学了解到一些设计原理方面的知识 正如我在 再谈 我是怎么招聘程序 中所说的 一个好的程序员通常由其操作技能 知识
  • 雅思口语 九月新题 答案

    目录 你大概多长时间练习一次编程 你为什么选择这个专业 What are your career goals in the field of software engineering What sparked your interest i
  • uniapp-h5中的文件流下载和指定的url下载总结(解决下载后的pdf打开空白情况)

    uniapp h5中的文件流下载和指定的url下载总结 解决下载后的pdf打开空白情况 一 uniapp h5文件流下载 场景 之所以会有文件流需求 前端给到一些水印内容 然后后台会给文件加上我们给到的水印并以文件流形式返回 这里以pdf格
  • 汇编语言之字符串的比较和查找

    汇编语言之字符串的比较和查找 基础知识 串比较指令涉及两个串 目的串地址为ES DI 源串地址为DS SI 操作如下 1 字节 CMPSB 操作 ES DI DS SI DI 1 SI 1 2 字 CMPSW 操作 ES DI DS SI
  • python django(一)学习笔记之二 (python读取EXCL在html展示)

    利用EXCL的数据 进行一个饼状的分析图 直接了当的看出在市场的份额的占比多少 承接第一天的内容和开发环境 以及目录 在settings py 中 加入 INSTALLED APPS ch01 apps Ch01Config django
  • Docker安装操作常用服务器软件

    1 查看centos版本 rpm q centos release 2 更新yum yum update y 3 删除以前版本的docker yum remove docker docker client docker client lat
  • k8s 证书生成 cfssl

    命令下载工具 傻瓜式执行 wget https pkg cfssl org R1 2 cfssl linux amd64 wget https pkg cfssl org R1 2 cfssljson linux amd64 wget ht
  • Verdi实现信号的平移

    在Verilog System verilog中 xxx可以实现延迟指定时间的功能 而在使用verdi查看信号波形并进行分析时 同样也可以实现类似的功能 注 这种信号平移是有其应用场景的 例如 在某些仿真模型中 为了模拟实际的信号延迟 信号
  • 极光笔记

    随着全球化进程的深入 跨境数据传输与存储问题已经变得愈发重要 推送服务的数据中心节点选择不仅关乎数据访问速度和用户体验 同时也直接牵扯到数据合规性和安全保障 EngageLab Push深知这一点 为了满足更多国际客户和全球用户触达需求 我
  • java resultset获取列数_Java语言如何获取ResultSet的行数和列数

    ResultSet接口表示在数据库的数据表中查询的结果集 ResultSet 对象具有指向其当前数据行的指针 最初 指针被置于第一行之前 Java没有提供直接返回ResultSet行数的函数 或方法 如果想知道ResultSet的行数 有以
  • 图像去噪的快速入门学习

    1 理论基础 数学基础 高等数学 线性代数 概率统计 矩阵论 数值分析等 信号处理 统计信号处理 统计学习理论等 2 文献资料阅读 常用的数据库 IEEE IEE Electronic Library Elsevier SpringerLi
  • Python(4) Numpy,控制台完全输出ndarray

    import numpy as np np set printoptions threshold np nan print ndarray 当ndarray里面的存放的数据维度过大时 在控制台会出现不能将ndarray完全输出的情况 中间部
  • NDIS网络数据监控程序NDISMonitor(3)-----NdisMonitro应用程序(C#)

    转载请标明是引用于 http blog csdn net chenyujing1234 欢迎大家拍砖 1 主窗口Load函数ctrlForm Load 1 先调用GetExtensions来获得运行目录下bin目录中的所有文件 通过载入为A
  • 【maven】The forked VM terminated without saying properly

    1 概述 转载 https blog csdn net zhglance article details 53695653 一直在使用Maven开发项目 最近遇到了一个让人头疼的问题 在网上搜索竟然没有找到中文描述的解决方式 自己找了英文网
  • linux内核中GPIO的使用(一)--IO内存

    一 相关概念 使用IO内存将物理地址映射为虚拟地址 再通过对虚拟地址的操作来控制硬件 所谓的IO内存是指一种编址方式 不同cpu平台使用的编址方式不同 一种是 IO内存 方式 也叫统一编址方式 是指内存和外设的地址是在同一个地址空间上的 如
  • 手把手教你使用Segformer训练自己的数据

    使用Segformer训练自己的数据 系统配置 代码链接 针对MMCV 选择系统 Windows环境要求 ubuntu 18 04 安装swin segmentation 制作VOC 数据集 代码部分修改 开始训练 使用Transforme