PaddleRS:geojson-建筑提取


本文介绍使用PaddleRS基于GeoJSON数据进行建筑提取的全流程。先安装GDAL、PaddleRS及pygeovis等依赖,解压含tif和geojson文件的数据集,经预处理将geojson转图像、切片并生成数据列表,再构建数据集、定义UNet模型训练,最后评估并推理,还可将结果转为geojson在地图上展示。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

paddlers:geojson-建筑提取 -

PaddleRS:geojson-建筑提取

GeoJSON是一种对各种地理数据结构进行编码的格式,基于J*ascript对象表示法(J*aScript Object Notation, 简称JSON)的地理空间信息数据交换格式。

在一些在线地图应用中,进行建筑的标注等主要通过上传相关的geojson数据。我们可以通过geojson.io进行查看。而一些标签的数据,同样是来自如OSM等导出的geojson数据。下面我们将使用PaddleRS,针对geojson的标签进行训练和预测的全流程进行操作。

0. 准备

  1. 由于其中涉及到一些坐标转换和格式转换(*.tif等),因此需要先安装GDAL。

  2. 安装pygeovis,这是根据folium进行保存的库,用于简单将栅格图像和geojson显示在可交互的OSM地图上。

  3. 克隆并安装PaddleRS及其依赖项。

In [ ]
# 安装GDAL! pip install -q --upgrade pip
%cd data/data136010
! mv GDAL-3.4.1-cp37-cp37m-manylinux.whl GDAL-3.4.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl
! pip install GDAL-3.4.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl
%cd ~
    In [ ]
# 克隆项目# %cd ~# ! git clone https://github.com/PaddlePaddle/PaddleRS.git# 安装requirements# ! pip install -qr PaddleRS/requirements.txt# ! pip install -qe PaddleRS! pip install -e git+https://github.com/PaddlePaddle/PaddleRS.git#egg=paddlers
    In [ ]
# 用于显示交互式的地图和结果! pip install -q pygeovis
    In [5]
# 导入# import sys# sys.path.append("src/paddlers")
   

1. 数据预处理

原始的数据在work/test_data.zip中,数据如下:

test_data
       ├─ train.tif
       ├─ train.geojson
       ├─ val.tif
       └─ val.geojson
       

因为数据是一张大图,因此在训练评估前需要裁剪为较小的大小。预处理部分有以下几点:

  1. 解压数据集。

  2. 将geojson转为图像(由于脚本的转换是保留相同的名字,train.geojson对应的train.tif已经存在,因此需要先进行一次重命名)。

  3. 将数据进行切片,可以通过--block_size进行块大小设置,默认512。

    知我AI·PC客户端 知我AI·PC客户端

    离线运行 AI 大模型,构建你的私有个人知识库,对话式提取文件知识,保证个人文件数据安全

    知我AI·PC客户端 61 查看详情 知我AI·PC客户端
  4. 生成数据列表。

In [ ]
# 解压! unzip -oq work/test_data.zip -d work/test_data
    In [ ]
# json转为mask! python PaddleRS/tools/geojson2mask.py --srcimg_path work/test_data/train.tif \
    --geojson_path work/test_data/train.geojson \
    --s*e_path work/test_data/train_label.tif
! python PaddleRS/tools/geojson2mask.py --srcimg_path work/test_data/val.tif \
    --geojson_path work/test_data/val.geojson \
    --s*e_path work/test_data/val_label.tif
    In [ ]
# 数据切片! python PaddleRS/tools/split.py --image_path work/test_data/train.tif --mask_path work/test_data/train_label.tif --s*e_dir dataset/train
! python PaddleRS/tools/split.py --image_path work/test_data/val.tif --mask_path work/test_data/val_label.tif --s*e_dir dataset/val
   

*数据展示

pygeovis中仅有Geovis对象,拥有的方法也只有addRaster、addVector和show,分别对应添加一个栅格图层、添加一个矢量图层以及显示。通过下面的代码可以在notebook中显示交互式地图。效果如下:

PaddleRS:geojson-建筑提取 -        

注意:保存时请清除这个交互式地图,不然notebook太大了退出后所有内容不可见

In [ ]
# 新的paddlers集成了显示功能,提供国内图源,因此该地需缩放才能看到在线地图from paddlers.utils.visualize import map_display

map_display(    "work/test_data/train_label.tif",    "work/test_data/train.tif",
    [1, 2, 3]
)
    In [ ]
# 划分数据集import osimport os.path as ospimport randomfrom tqdm import tqdm

random.seed = 888def create_list(dataset_floder: str) -> None:
    mode = ["train", "val"]    for m in mode:
        img_names = os.listdir(osp.join(dataset_floder, m, "images"))
        random.shuffle(img_names)        if ".ipynb_checkpoints" in img_names:  # 移除ipynb_checkpoints
            img_names.remove(".ipynb_checkpoints")        with open(osp.join(dataset_floder, (m + "_list.txt")), "w") as f:            for idx, img_name in tqdm(enumerate(img_names)):
                img_path = osp.join(m, "images", img_name)
                lab_path = osp.join(m, "masks", img_name.replace("jpg", "png"))
                f.write(img_path + " " + lab_path + "\n")

create_list("dataset")
   

*数据检查

为了检查前面的geojson转为图像以及分块是否正确,我们可以通过读取train_list.txt中的图像进行显示,检查正确性。

In [ ]
# 查看数据import os.path as ospimport numpy as npimport matplotlib.pyplot as pltfrom PIL import Image

%matplotlib inline

dataset_floder = "dataset"with open(osp.join(dataset_floder, "train_list.txt"), "r") as f:
    train_paths = f.readlines()for train_path in train_paths:
    img_path, lab_path = train_path.strip().split(" ")
    img_path = osp.join(dataset_floder, img_path)
    lab_path = osp.join(dataset_floder, lab_path)
    img = np.asarray(Image.open(img_path))
    lab = np.asarray(Image.open(lab_path))    print("标签值:", np.unique(lab))  # 查看标签中有的值
    plt.figure(figsize=(10, 5))
    plt.subplot(121);plt.imshow(img);plt.title("Image")
    plt.subplot(122);plt.imshow(lab * 255);plt.title("Label")
    plt.show()    break
   

2. 训练

PaddleRS的设计主要参考自PaddleSeg,因此我们像使用PaddleSeg一样的使用PaddleRS。

2.1 构建数据集

首先是构造数据集,为数据集添加对应的transforms。在PaddleRS中所有的transforms都可以对多通道的数据进行处理,这是为了方便遥感方面的一些设计。

In [ ]
# 构建数据集from paddlers.datasets import SegDatasetimport paddlers.transforms as T

train_transforms = T.Compose([
    T.RandomHorizontalFlip(),  # 随机水平翻转
    T.RandomVerticalFlip(),  # 随机竖直翻转
    T.RandomDistort(),  # 随机色彩的扭曲
    T.Resize(target_size=512),  # 固定大小
    T.Normalize(mean=[0.5] * 3, std=[0.5] * 3),  # 归一化])

eval_transforms = T.Compose([
    T.Resize(target_size=512),
    T.Normalize(mean=[0.5] * 3, std=[0.5] * 3),
])# 分别构建训练和验证所用的数据集train_dataset = SegDataset(
    data_dir="dataset",  # 数据地址
    file_list="dataset/train_list.txt",  # 数据列表路径
    transforms=train_transforms,
    num_workers=0,
    shuffle=True  # 是否打乱数据集)

eval_dataset = SegDataset(
    data_dir="dataset",
    file_list="dataset/val_list.txt",
    transforms=eval_transforms,
    num_workers=0)
   

2.2 定义任务

这里我们选择了最常用的网络之一UNET。可以通过model.net获取paddle.nn.Layer类型组网。

In [ ]
from paddlers.tasks.segmenter import UNet

model = UNet(in_channels=3, num_classes=2)
   

2.3 开始训练

目前训练时的lr和opt可以通过预先设定,然后通过optimizer参数传入。设定如下:

lr_scheduler = paddle.optimizer.lr.xxxDecay(LR, xxx)
optimizer = paddle.optimizer.xxx(
    learning_rate=lr_scheduler,
    parameters=model.net.parameters()
)

model.train(
    ...
    optimizer=optimizer,
    ...
)
    In [ ]
model.train(
    num_epochs=200,
    train_dataset=train_dataset,
    train_batch_size=16,
    eval_dataset=eval_dataset,
    s*e_interval_epochs=20,
    log_interval_steps=5,
    pretrain_weights="COCO",
    s*e_dir="output",
    learning_rate=0.01,
    early_stop=True,
    use_vdl=True)
   

3. 评估

In [2]
from paddlers.tasks import load_modelimport paddlers.transforms as T

model = load_model("output/best_model")  # 加载模型及参数eval_transforms = T.Compose([
    T.Resize(target_size=512),
    T.Normalize(mean=[0.5] * 3, std=[0.5] * 3),
])
       
2025-04-07 23:04:12 [WARNING]	Including an `Arrange` object in the transformation operator list is deprecated and will not take effect.
2025-04-07 23:04:12 [INFO]	Model[UNet] loaded.
        In [ ]
model.evaluate(eval_dataset)
   

4. 预测推理

PaddleRS可以分为小图块的直接推理,以及大图滑框推理(推理结果直接保存为*.tif),并可以通过脚本转换为geojson格式。

In [11]
import numpy as npimport matplotlib.pyplot as pltfrom PIL import Imagefrom paddlers.utils.postprocs import building_regularization, prepro_mask

%matplotlib inline

img_path = "dataset/val/images/val_2_6.tif"lab_path = "dataset/val/masks/val_2_6.tif"pred = model.predict(img_path, eval_transforms)["label_map"]
pred_reg = building_regularization(prepro_mask(pred))
plt.figure(figsize=(10, 10))
plt.subplot(221);plt.imshow(np.asarray(Image.open(img_path).convert("RGB")));plt.title("Image")
plt.subplot(222);plt.imshow(np.asarray(Image.open(lab_path).convert("L")));plt.title("Label")
plt.subplot(223);plt.imshow(pred);plt.title("Pred")
plt.subplot(224);plt.imshow(pred_reg);plt.title("Pred_Regularization")
plt.show()
       
<Figure size 1000x1000 with 4 Axes>
                In [ ]
# 大图输出model.slider_predict(
    img_file="work/test_data/val.tif",
    s*e_dir="infer",  # 保存路径
    block_size=512,  # 图像块大小
    overlap=36,  # 重叠区域大小
    transforms=[T.Normalize([0.5] * 3, [0.5] * 3)]  # 数据预处理)
    In [ ]
# 转为geojson! python PaddleRS/tools/mask2shape.py --mask_path infer/val.tif \
    --s*e_path infer/val.geojson \
    --srcimg_path work/test_data/val.tif
    In [ ]
# 查看训练效果# (请在notebook中运行查看)# (同时禁用滚动输出功能)# (右上角可切换图层显示)from pygeovis import Geovis

geovis = Geovis()
geovis.addRaster("work/test_data/val.tif")
geovis.addVector("work/test_data/val.geojson")
geovis.addVector("infer/val.geojson")
geovis.show()
   

以上就是PaddleRS:geojson-建筑提取的详细内容,更多请关注其它相关文章!


# python  # 开封优化型网站建设  # seo需要怎么做  # seo浏览器辅助插件  # 五月营销推广活动  # 淮南品牌型网站建设地址  # 深圳seo新站优化  # 营销型网站建设的要求  # 宣城全屏营销推广  # 如何推广网站痛帐云速捷fy宀  # 开源  # 命令行  # 我们可以  # 图层  # 这是  # 客户端  # 中文网  # 数据结构  # 离线  # 可以通过  # coco  # fig  # operator  # igs  # red  # ai  # git  # linux  # 酒吧营销推广方案文本 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: 中国移动主导创立元宇宙产业联盟,包括科大讯飞、芒果TV等在内,共24家成员  “具身智能”引爆机器人产业,看绝影Lite3/X20四足机器人有何特别之处?  谷歌借AI打破十年排序算法封印,每天被执行数万亿次,网友却说是最不切实际的研究?  AI技术改变*,新骗局来袭,*成功率接近100%  华为将于 7 月发布面向 AI 大模型的新款存储产品  昇腾AI & 讯飞星火:深度联手,共话国产大模型“大未来”  机器人 展才能  华为云天筹AI求解器荣获世界人工智能大会最高奖  揭晓2025年玻尔兹曼奖:Hopfield网络创始人荣获奖项  无需照相馆,AI证件照生成软件即将推出  华为小艺AI助手将实现强大的大模型能力  Intel酷睿Ultra发布会官宣!迈向全新的AI时代  售价14.99万起!小米汽车部分信息疑遭AI曝光,内部人士回应:网传图片明显经过处理,不可轻信  上海发布“元宇宙关键技术攻关行动方案”,加快 AIGC 等突破  英媒:硅谷有些人太鼓吹AI,宣扬“学习无用”  美图设计室2.0使用教程  工业机器人及非标自动化设备集成服务提供商  走进首家“元宇宙”未来工厂,卡奥斯探知工业之旅出发!  剧透!蜜小豆@2025世界人工智能大会多个亮点曝光  梦想实现!硬核科幻大片VR智能头盔即将问世  爱设计 AI 一键生成 PPT 工具上线:输入标题即可生成 PPT  借助ChatGPT快速上手ElasticSearch dsl  重磅! 捷通华声灵云AICC荣获第二届光合组织AI解决方案大赛二等奖  国内首款大尺寸仿鸵双足机器人“大圣”亮相,穿戴红色战袍  美图开拍使用教程  陈根教授:离人形机器人时代还有10年吗?  OpenAI CEO 山姆・阿尔特曼呼吁 AI 领域中美应当合作  曝光HarmonyOS 4的重要新能力:全面升级AI大模型,小艺实现全面进化  GPT-4成功战胜AI-Guardian审核系统:谷歌研究团队的人工智能抵抗人工智能  CREATOR制造、使用工具,实现LLM「自我进化」  微软商店 AI 摘要功能开启预览,帮助用户迅速了解应用评价  阿里云连续两年进入Gartner云AI开发者“挑战者象限”  Meta Quest订阅服务每月7.99美元畅玩两款VR游戏应用  AI 作画工具 Midjourney 推出“pan”功能,可平移扩展图片外场景  全场景智能车:智能无处不在|芯驰亮相世界人工智能大会  Meta开源文本生成音乐大模型,我们用《七里香》歌词试了下  绿联发布笑脸屏幕显示充电状态的30W/65W Q湃机器人充电器  参考封面|人工智能“淘金热”  百度创始人、董事长兼首席执行官李彦宏:AI原生应用比大模型数量更重要  如何利用AI工具写好本科论文:科技助你一臂之力  探索人工智能在居家养老方面的应用  日新月异,脑机接口技术都有哪些新应用?  微幼科技晨检机器人与人工晨检相比,有何优势  AI数字人业务频频获点赞,谦寻积极引领示范作用  田渊栋团队新研究:微调  2025VR&AR显示技术峰会视频解析: 歌尔光学展示最新一代VR/AR光学模组  对话式论文阅读工具PaperMate上线,综述细节AI告诉你  调查显示:实际上没有那么多人在用 ChatGPT  AI大模型火了!科技巨头纷纷加入,多地政策加码加速落地  复旦发布「新闻推荐生态系统模拟器」SimuLine:单机支持万名读者、千名创作者、100+轮次推荐 

 2025-07-23

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.