当前位置: 首页 > news >正文

遥感影像分类任务的复现

目录

一、概述

二、环境配置

三、运行

1.dataset

2.configs


代码下载地址:GitHub - cxyth/rs-segment.pytorch: 用于遥感影像分类任务的语义分割模板工程

部分解码器下载地址:

qubvel/segmentation_models.pytorch: Segmentation models with pretrained backbones. PyTorch. (github.com)

一、概述

该代码中有如下几个文件夹:

  • configs中是一个配置文件,用来运行模型
  • dataset中是一个myDataset.py的文件,主要用来处理输入的数据,可以将自己的数据集放到此处
  • models中包含了该项目可用的encoders如resnet、densenet等,如果需要对decoders代码进行改进,可以将需要改进的解码器文件放到该目录下,解码器文件获取地址decoders
  • scripts中包含了一系列数据处理文件
  • utils中包含了损失函数,混淆矩阵等内容的定义

二、环境配置

  • torch>1.6
  • torchsummay
  • segmentation_models_pytorch
    pip install git+https://github.com/qubvel/segmentation_models.pytorch (或者直接下载工程然后python setup.py install)
  • gdal (gdal无法通过pip下载,详细请见:)
  • albumentations
  • opencv
  • matplotlib
  • scipy
  • scikit-learn
  • scikit-image
  • tqdm
  • pandas

三、运行

    python main.py -c test.yml -m train -g 0,1

其中main.py是我们需要运行的main文件 ,yml.py是调用的配置文件,train/test表示要训练还是测试,-g 0,1 表示要用的GPU,不写该项默认为0。训练和测试的结果会放在新建的runs文件中。

可以看到这个模型使用起来是非常简单的,其中比较重要的就是数据怎么放和如何写配置文件来运行你想调用的模型。

1.dataset

我们可以按照一下目录在dataset文件夹中设置自己数据,Test的文件夹以同样的方式放入dataset文件夹中 。

'images'目录存放图像,'labels'目录存放标签,并保证图像和对应的标签同名。

2.configs

如下是一个configs的示例,具体内容详见代码


mode: "train"    # "train", "infer"
run_name: ""
run_dir: "./runs/"
comment: "for debug"    # 其他备注信息


dataset_params: {
  name: "DeepGlobe-road",     #项目的名字
  train_dirs: ["E:\\New_gj\\dataset\\T_multi\\split\\train"],   #训练集文件夹
  val_dirs: ["E:\\New_gj\\dataset\\T_multi\\split\\val"],    #验证集文件夹
  image_ext: ".tif",    #文件格式
  cls_info: {    #分类类别的类别名及value值,0为背景
    nodata: 0,
    suger: 1,
    corn: 2,
    paddy: 3,
    banana: 4,
    orange: 5,
  },
  cls_color: [        #设置mask的颜色
    [0,0,0],
    [255, 0, 0],
    [255, 255, 0],
    [255, 0, 255],
    [0, 255, 0],
    [0, 0, 255],

  ],
  resample: false    #是否进行重采样
}


network_params: {
  type: "smp",    # "custom", ...    #smp为使用库内模型,custom为本地模型
  arch: "Unet",    #decoder_name
  encoder: "efficientnet-b1",       #encoder_name
  in_height: 512,                   #输入尺寸
  in_width: 512,
  in_channel: 3,                    #输入通道
  out_channel: 6,   #加背景的分类数    #输出通道,即类别数
  pretrained: "imagenet"
}


train_params: {
  epochs: 100, # 3, 9, 21, 45, 93...
  batch_size: 8,
  lr: 0.001,
  smoothing: 0.1,
  cutmix: false,
  gamma: 0.98, # 学习率衰减系数
  momentum: 0.9,  # 动量
  weight_decay: 0.0005, # 权重衰减
  save_inter: 2,  # 保存间隔(epoch)
  min_inter: 10,    # 保存起始点(epoch)
  iter_inter: 100,   # 显示迭代间隔(batch)
  plot: true
}


inference_params: {
  ckpt_name: "checkpoint-best.pth",    # full path = os.path.join(run_dir, run_name, "ckpt", ckpt_name)
  in_dir: "E:\\New_gj\\dataset\\T_multi\\predict\\images",  #测试的images的文件地址,注意是images的地址
  out_dir: "val_best_single",   # full path = os.path.join(run_dir, out_dir, "results")
  tile_size: 512,
  overlap: 256,
  batch_size: 1,
  tta: false,
  draw: true,
  evaluate: false
}

相关文章:

  • springboot+vue实现登录案例(附VUE整个项目代码)
  • 如何使用LOTO示波器 绘制 频率响应特性曲线?
  • 智能科学与技术——介绍概要
  • Controller设计--Kafka从入门到精通(十五)
  • 数据结构之查找和排序
  • CREO:CREO软件之工程图界面的【创建】、【布局】、【表】、【注释】的简介(图文教程)之详细攻略
  • .NET 回调、接口回调、 委托
  • 儒家思想发展历程
  • C程序设计基础-数据类型
  • 【组成原理-指令】指令系统
  • 2022/08/31 day14:企业级解决方案
  • HJ26 字符串排序 ●●
  • Java程序员毕业N年系列----毕业二年
  • 抖音小程序模板全行业整理合集,抖音小程序制作平台分享
  • 嘉立创EDA专业版--彩色丝印?启用
  • CAP理论的例子讲解
  • chrome扩展demo1-小时钟
  • JavaScript服务器推送技术之 WebSocket
  • Java应用性能调优
  • Perseus-BERT——业内性能极致优化的BERT训练方案
  • Travix是如何部署应用程序到Kubernetes上的
  • uva 10370 Above Average
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • 从setTimeout-setInterval看JS线程
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 开源中国专访:Chameleon原理首发,其它跨多端统一框架都是假的?
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 如何进阶一名有竞争力的程序员?
  • 思维导图—你不知道的JavaScript中卷
  • 正则与JS中的正则
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • raise 与 raise ... from 的区别
  • 昨天1024程序员节,我故意写了个死循环~
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • #免费 苹果M系芯片Macbook电脑MacOS使用Bash脚本写入(读写)NTFS硬盘教程
  • (4)事件处理——(7)简单事件(Simple events)
  • (Forward) Music Player: From UI Proposal to Code
  • (附源码)计算机毕业设计ssm基于B_S的汽车售后服务管理系统
  • (一)80c52学习之旅-起始篇
  • (一)基于IDEA的JAVA基础1
  • (已解决)报错:Could not load the Qt platform plugin “xcb“
  • (转)JAVA中的堆栈
  • (转)Linux整合apache和tomcat构建Web服务器
  • (转)甲方乙方——赵民谈找工作
  • (转)母版页和相对路径
  • 、写入Shellcode到注册表上线
  • .NET / MSBuild 扩展编译时什么时候用 BeforeTargets / AfterTargets 什么时候用 DependsOnTargets?
  • .net refrector
  • .NET/C# 使用反射注册事件
  • .net打印*三角形
  • .NET企业级应用架构设计系列之应用服务器
  • .NET业务框架的构建
  • /bin/rm: 参数列表过长"的解决办法
  • /run/containerd/containerd.sock connect: connection refused