GeoSeg 框架解析

总的来看:

config 配置文件
geoseg 定义了核心组件:models datasets losses
tools 辅助工具箱

config :


里面包含多个遥感数据集,内部包含不同的模型

看一个例子
复制代码
导入
from torch.utils.data import DataLoader
from geoseg.losses import *
from geoseg.datasets.vaihingen_dataset import *
from geoseg.models.UNetFormer import UNetFormer
from tools.utils import Lookahead, process_model_params

训练超参数
from torch.utils.data import DataLoader
from geoseg.losses import *
from geoseg.datasets.vaihingen_dataset import *
from geoseg.models.UNetFormer import UNetFormer
from tools.utils import Lookahead, process_model_params

网络定义
net = UNetFormer(num_classes=num_classes)

损失函数
loss = UnetFormerLoss(ignore_index=ignore_index)
use_aux_loss = True

数据加载器
train_dataset = VaihingenDataset(data_root='data/vaihingen/train', ...)
val_dataset = VaihingenDataset(...)
...
train_loader = DataLoader(dataset=train_dataset, ...)
val_loader = DataLoader(dataset=val_dataset, ...)

优化器
layerwise_params = {"backbone.*": dict(lr=backbone_lr, ...)}
net_params = process_model_params(net, ...)
base_optimizer = torch.optim.AdamW(net_params, lr=lr, ...)
optimizer = Lookahead(base_optimizer)
lr_scheduler = torch.optim.lr_scheduler.CosineAnnealingWarmRestarts(...)

geoseg

models--->所有神经网络骨架库

datasets-->数据集库

losses --->损失函数库

datasets

除了每个数据集的datasets 之外,有个transform是数据增强策略

transform: 各种各样的数据增强策略
看一个dataset例子:
复制代码
全局常量
类别
CLASSES = ('ImSurf', 'Building', 'LowVeg', 'Tree', 'Car', 'Clutter')
可视化颜色
PALETTE = [[255, 255, 255], [0, 0, 255], [0, 255, 255], [0, 255, 0], [255, 204, 0], [255, 0, 0]]

ORIGIN_IMG_SIZE = (1024, 1024)
INPUT_IMG_SIZE = (1024, 1024)
TEST_IMG_SIZE = (1024, 1024)

数据增强流水线
def get_training_transform(): ...
def train_aug(img, mask): ...
def get_val_transform(): ...
def val_aug(img, mask): ...
这些都是对数据进行数据增强

核心数据集类
class VaihingenDataset(Dataset):
    def __init__(...): ...构造函数,保存传入参数,调用get_img_ids读取images_1024目录下的所有文件名,并且保存在self.img_ids 当中
    def __getitem__(...): ...
    def __len__(...): ...
    def get_img_ids(...): ...用来确保img_dir 和mask_dir能对应的上
    def load_img_and_mask(...): ...加载数据
    def load_mosaic_img_and_mask(...): ...高级数据增强
    
可视化工具
def show_img_mask_seg(...): ...
def show_seg(...): ...
def show_mask(...): ...

losses

各种各样loss 函数

models:定义了不同的models 神经网络

看一个例子

这个例子没有encoder 模块是因为,他的encoder 模块就只是backbone 特征提取,如果特征提取后加入混合注意力之类的东西,就应该写一个encoder类

此外,models 一般都是把组件,基础架构模块定义好,核心模块定义好,在encoder 和 decoder 内部,按照论文结构排列组合
encoder 和 decoder 会在最后的模型封装中,在forward 中应用

复制代码
基础架构模块
class ConvBNReLU(nn.Sequential): ...
class ConvBN(nn.Sequential): ...
class Conv(nn.Sequential): ...
class SeparableConvBNReLU(nn.Sequential): ...
class Mlp(nn.Module): ...

核心注意力模块
class GlobalLocalAttention(nn.Module): ...

Transformer 模块
class GlobalLocalAttention(nn.Module): ...

解码辅助模块
class WF(nn.Module): ...
class FeatureRefinementHead(nn.Module): ...
class AuxHead(nn.Module): ...

解码器
class Decoder(nn.Module): ...

最终模型
class UNetFormer(nn.Module): ...
构造函数和前向传播

tools

数据预处理脚本

模型配置脚本

模型评估脚本

相关推荐
墨染天姬3 小时前
【AI】端侧AIBOX可以部署哪些智能体
人工智能
AI成长日志3 小时前
【Agentic RL】1.1 什么是Agentic RL:从传统RL到智能体学习
人工智能·学习·算法
2501_948114243 小时前
2026年大模型API聚合平台技术评测:企业级接入层的治理演进与星链4SAPI架构观察
大数据·人工智能·gpt·架构·claude
小小工匠3 小时前
LLM - awesome-design-md 从 DESIGN.md 到“可对话的设计系统”:用纯文本驱动 AI 生成一致 UI 的新范式
人工智能·ui
黎阳之光3 小时前
黎阳之光:视频孪生领跑者,铸就中国数字科技全球竞争力
大数据·人工智能·算法·安全·数字孪生
小超同学你好4 小时前
面向 LLM 的程序设计 6:Tool Calling 的完整生命周期——从定义、决策、执行到观测回注
人工智能·语言模型
智星云算力4 小时前
本地GPU与租用GPU混合部署:混合算力架构搭建指南
人工智能·架构·gpu算力·智星云·gpu租用
jinanwuhuaguo4 小时前
截止到4月8日,OpenClaw 2026年4月更新深度解读剖析:从“能力回归”到“信任内建”的范式跃迁
android·开发语言·人工智能·深度学习·kotlin
xiaozhazha_4 小时前
效率提升80%:2026年AI CRM与ERP深度集成的架构设计与实现
人工智能
枫叶林FYL4 小时前
【自然语言处理 NLP】7.2.2 安全性评估与Constitutional AI
人工智能·自然语言处理