AI 大模型正在重塑遥感影像处理与分析模式。传统遥感影像处理依赖人工设计特征+监督分类需要大量标注样本和领域专家;AI 大模型时代,基于自监督预训练+少样本微调+零样本推理的新模式,让"用自然语言找地物"“一键变化检测”"影像内容自动描述"等过去不可想象的场景成为现实。

本文系统梳理AI大模型在遥感领域的 5 大落地场景,地物智能提取、变化检测自动化、零样本分类、影像描述生成、智能问答与可视化 Agent。并给出每个场景的技术原理、主流模型(SAM、CLIP、TerraTorch、Prithvi)、开源工具(torchgeo/eo-learn)与 Python 实战代码示例,全部基于开源生态,适合遥感算法工程师与 GIS 开发者入门 AI 大模型应用。并提供可复现的 Python 代码示例与开源数据集推荐。


场景一:地物智能提取(从像素到对象)

技术原理

传统地物提取基于像素级分类(随机森林、SVM)或卷积分割网络(U-Net、DeepLab),需要大量标注样本。大模型时代,基于视觉 Transformer + 提示学习(Prompt Learning)的新方法,通过文本提示或点/框交互即可提取任意地物

主流模型

模型来源特点
SAM(Segment Anything Model)Meta AI通用分割大模型,SAM 遥感适配版本(如 SAM-RS、RS-SAM)在遥感影像上表现优异
CLIPOpenAI图文对齐模型,支持文本驱动的地物检索(“找出所有红色屋顶建筑”)
Segment Geospatial(segment-geospatial)OpenGeoGIS基于 SAM 的遥感地物分割 Python 库,支持点/框/文本提示
TerraTorchIBM遥感基础模型框架,集成 Prithvi 系列大模型

开源工具

  • segment-geospatial:Python 库,一行代码调用 SAM 提取遥感地物
  • TerraTorch:IBM 开源的遥感基础模型微调框架
  • Prithvi:NASA-IBM 合作的开源遥感大模型(基于 Sentinel-2 + Landsat 预训练)

Python 实战示例

# 使用 segment-geospatial 提取遥感影像中的建筑
import leafmap
from segment_geospatial import samgeo

# 加载遥感影像
image = 'path/to/satellite_image.tif'

# 初始化 SAM 模型
sam = samgeo.tms_to_sam(image)

# 自动分割(无需提示)
mask = sam.generate(image, output='building_mask.tif')

# 提取建筑矢量
sam.tiff_to_gpkg('building_mask.tif', 'buildings.gpkg')

# 可视化
m = leafmap.Map()
m.add_raster(image, layer_name='Satellite')
m.add_raster('building_mask.tif', layer_name='Buildings', colormap='tab20')

典型精度

  • 建筑提取(高分影像):IoU > 0.85(SAM 微调后)
  • 耕地图斑(Sentinel-2):F1 > 0.90(Prithvi 微调)
  • 林地变化检测:精度 > 0.92(U-Net + 注意力机制)

场景二:变化检测自动化(双时相影像对比)

技术原理

变化检测(Change Detection)是对比两个时相遥感影像,自动识别地表变化区域。传统方法基于影像差分、变化向量分析(CVA),需要人工阈值;AI 大模型通过孪生网络(Siamese Network)+ Transformer,端到端学习变化模式

主流方法

方法适用场景精度
Siamese U-Net高分辨率双时相建筑变化IoU 0.80-0.88
Transformer-based Change Detection(BIT-CD)多光谱中分辨率IoU 0.85-0.92
ChangeFormer大范围地表变化IoU 0.88-0.94
基于 LLM 的变化描述不仅检测变化,还生成自然语言描述新兴方向

开源数据集

  • LEVIR-CD:高分卫星建筑变化检测数据集,入门首选,647 对 0.5m 影像
  • WHU-CD:武汉地区建筑变化数据集
  • SYSU-CD:城市变化检测,涵盖不同季节、不同传感器
  • CLCD(Cropland Change Detection Dataset):耕地变化检测,国内开源

Python 实战示例

# 使用 torchgeo 加载变化检测数据集
from torchgeo.datasets import LEVIRCDPlus
from torchgeo.samplers import RandomGeoSampler
from torch.utils.data import DataLoader

# 加载 LEVIR-CD+ 数据集
dataset = LEVIRCDPlus(root='data/LEVIR-CD-Plus')
sampler = RandomGeoSampler(dataset, size=256, length=100)
dataloader = DataLoader(dataset, sampler=sampler, batch_size=8)

# 训练 Siamese U-Net(简化版)
import torch
import torch.nn as nn

class SiameseUNet(nn.Module):
    def __init__(self):
        super().__init__()
        self.encoder = nn.Sequential(
            nn.Conv2d(3, 64, 3, padding=1), nn.ReLU(),
            nn.Conv2d(64, 128, 3, padding=1), nn.ReLU(),
        )
    def forward(self, x1, x2):
        f1, f2 = self.encoder(x1), self.encoder(x2)
        diff = torch.abs(f1 - f2)  # 特征差异
        return diff  # 后接解码器输出变化图

model = SiameseUNet()
optimizer = torch.optim.Adam(model.parameters(), lr=1e-4)

for epoch in range(50):
    for batch in dataloader:
        image1, image2, label = batch['image1'], batch['image2'], batch['mask']
        pred = model(image1, image2)
        loss = nn.BCEWithLogitsLoss()(pred, label)
        optimizer.zero_grad()
        loss.backward()
        optimizer.step()

场景三:零样本分类(无需标注的地物识别)

技术原理

零样本分类(Zero-Shot Classification)通过预训练视觉-语言模型(如 CLIP),用文本提示直接识别遥感影像中的地物类别,无需任何标注样本

主流模型

模型应用方式
RemoteCLIP遥感专用 CLIP,在遥感影像+文本对上微调,零样本精度大幅提升
GeoRSCLIP国产开源遥感 CLIP,支持中文提示
SkyScript多模态遥感大模型,支持 50+ 地物类别零样本识别

Python 实战示例

# 使用 RemoteCLIP 做零样本遥感影像分类
from transformers import CLIPModel, CLIPProcessor
from PIL import Image

model = CLIPModel.from_pretrained('remoteclip/RemoteCLIP-ViT-L-14')
processor = CLIPProcessor.from_pretrained('remoteclip/RemoteCLIP-ViT-L-14')

image = Image.open('satellite_image.png')
candidates = ['residential building', 'farmland', 'forest', 'water body', 'road', 'industrial area']

inputs = processor(text=candidates, images=image, return_tensors='pt', padding=True)
outputs = model(**inputs)
logits = outputs.logits_per_image
probs = logits.softmax(dim=-1)

for label, prob in zip(candidates, probs[0]):
    print(f'{label}: {prob.item():.2%}')

典型精度

  • RemoteCLIP 在 RESISC45 数据集上零样本精度:75-85%(45 类地物)
  • GeoRSCLIP 中文提示精度:72-82%
  • vs 传统监督学习:需要 1000+ 标注样本才能达到相似精度

场景四:影像描述生成(VQA 与字幕生成)

技术原理

影像描述生成(Image Captioning)+ 视觉问答(VQA)让 AI 用自然语言描述遥感影像内容。结合视觉大模型(如 LLaVA、Qwen-VL)+ 遥感专用微调,可实现"这张影像拍的是哪里、有什么、发生了什么变化"的自动描述。

主流方向

方向应用场景
遥感影像字幕生成(RSIC)自动生成影像描述(“这是一张城市建成区影像,可见密集建筑、道路网络…”)
遥感 VQA自然语言提问(“影像中有多少栋建筑?”“这片耕地的面积?”)
变化检测描述生成不仅检测变化,还生成自然语言变化报告
灾害评估自动报告灾后影像自动生成灾情描述+影响范围+建议措施

开源模型

  • GeoLLM-Engine:遥感大模型评测框架
  • SkyEye-GPT:遥感视觉语言模型,支持中文问答
  • EarthGPT:多模态遥感大模型,支持多种传感器数据

Python 实战示例

# 用 Qwen-VL 做遥感影像问答(需要 GPU)
from transformers import AutoModelForCausalLM, AutoTokenizer

model = AutoModelForCausalLM.from_pretrained('Qwen/Qwen-VL-Chat', trust_remote_code=True)
tokenizer = AutoTokenizer.from_pretrained('Qwen/Qwen-VL-Chat', trust_remote_code=True)

image_path = 'urban_image.png'
question = '请描述这张影像中的地物类型和分布情况'

response, _ = model.chat(tokenizer, query=question, image=image_path, history=None)
print(response)
# 输出示例:这张影像显示的是一个城市建成区,可以看到密集的住宅建筑(约占 60%),
# 主干道呈网格状分布,东南侧有一片绿地,西北角有一处施工工地...

场景五:智能问答与可视化 Agent

技术原理

基于 LLM Agent + 工具调用(Tool Calling),将自然语言查询转换为遥感分析流程。用户问"统计某区域近半年新增建设用地面积",Agent 自动完成:检索影像→变化检测→面积计算→结果可视化→报告生成。

主流架构

用户自然语言提问
    ↓
LLM Agent(理解意图 + 规划任务)
    ↓
调用工具(Tool Calling)
    ├─ 影像检索(GDAL/Rasterio)
    ├─ 变化检测(深度学习模型)
    ├─ 面积统计(GeoPandas)
    └─ 可视化(Matplotlib/Folium)
    ↓
返回自然语言报告 + 可视化结果

开源框架

  • LangChain + GeoTools:通用 LLM Agent 框架 + 地理工具
  • GeoLLM-Engine:遥感专用 Agent 框架
  • AutoGIS:自动化地理空间分析
  • eo-learn + LLM:将 eo-learn 工作流暴露为 LLM 可调用工具

Python 实战示例

# 用 LangChain + GeoTools 构建遥感 Agent
from langchain.agents import initialize_agent, AgentType
from langchain.tools import Tool
from langchain_openai import ChatOpenAI
import rasterio
import geopandas as gpd

# 定义工具
def search_image(bbox):
    """按 bbox 检索遥感影像"""
    # 实际实现可对接 stac-api
    return 'image_path.tif'

def calc_change(image1, image2):
    """计算两期影像变化"""
    # 简化版:实际可对接 Siamese U-Net 模型
    return {'changed_area_ha': 125.5, 'change_type': '新增建筑'}

def visualize_result(image, change_mask):
    """生成可视化图"""
    return 'visualization.png'

tools = [
    Tool(name='search_image', func=search_image, description='按经纬度检索遥感影像'),
    Tool(name='calc_change', func=calc_change, description='计算两期影像的变化'),
    Tool(name='visualize_result', func=visualize_result, description='可视化结果'),
]

llm = ChatOpenAI(temperature=0)
agent = initialize_agent(tools, llm, agent=AgentType.OPENAI_FUNCTIONS)

# 用户提问
query = '统计北京海淀 2024 vs 2025 年新增建设用地面积'
result = agent.run(query)
print(result)

实战工具链推荐

用途推荐工具语言
影像读写GDAL、RasterioC++/Python
数据可视化leafmap、folium、MatplotlibPython
深度学习PyTorch、torchgeoPython
工作流编排eo-learnPython
大模型微调TerraTorch、Hugging Face TransformersPython
Agent 框架LangChain、GeoLLM-EnginePython
数据下载sentinelsat、pystac-clientPython
矢量处理GeoPandas、ShapelyPython

开源数据集汇总

数据集类型规模适用场景
LEVIR-CD / LEVIR-CD+高分建筑变化647/985 对变化检测入门
RESISC4545 类地物分类31,500 张零样本分类评测
EuroSAT10 类土地利用27,000 张监督学习基线
BigEarthNet多标签 Sentinel-2590,000+大规模预训练
fMoW功能性地标363 万影像功能区分类
Sentinel-2 Cloud-Optimized GeoTIFFs公开数据全球覆盖时序分析

总结:AI 大模型重塑遥感的 3 个趋势

  1. 从"专业软件"到"自然语言交互"——业务人员无需懂 GIS,用自然语言就能完成遥感分析
  2. 从"标注依赖"到"零样本/少样本"——大模型预训练让遥感 AI 摆脱标注样本瓶颈
  3. 从"单点分析"到"端到端 Agent"——LLM Agent 串联影像检索→变化检测→报告生成全流程

遥感算法工程师与 GIS 开发者的学习路径建议:

  • 入门:GDAL + Rasterio + QGIS 基础
  • 进阶:torchgeo + eo-learn 深度学习
  • 前沿:SAM/CLIP 遥感适配 + LangChain Agent

更多推荐