PolyWorld:Polygonal Building Extraction with Graph Neural

概述

​ 在地理和制图领域中,经常需要的是准确的矢量多边形而不是光栅化输出,本文针对建筑物的矢量多边形提取,直接从图像中提取建筑顶点并将它们正确连接以创建精确的多边形。

​ PolyWorld模型利用图神经网络预测每对顶点之间的连接强度,并通过求解一个可微的最优运输问题来估计分配。此外,通过最小化分割和多边形角差损失来优化顶点位置。

​ 代码地址:github.com/zorzi-s/Pol...

介绍

​ 作者认为,现在大多数建筑物提取和多边形化方法依赖于分割网络产生的概率图的矢量化。这些方法不是端到端学习的,这意味着分割模型产生的缺陷和工件将通过整个管道(pipline)进行,从而产生不规则多边形。

​ 因此,作者提出一个新的神经网络模型 PolyWorld,从卫星图像中检测建筑角,并使用学习匹配过程(learned matching procedure)将它们连接起来以形成多边形。

​ PolyWorld利用CNN网络提取建筑角落的位置和视觉标识符(visual descriptors),并通过评估顶点之间的连接是否有效来生成多边形。这个过程在检测到的顶点描述符之间找到最佳连接分配,这意味着每个角都必须与多边形的后续顶点匹配。多边形顶点之间的连接可以表示为线性和赋值问题的解。同时,利用GNN网络向所以顶点嵌入全局信息来增加标识符的独特性。此外,该模型还对检测到的角点位置进行了细化,使分割和多边形角差损失(combined segmentation and polygonal angle difference loss.)最小化。

PolyWorld架构

​ PolyWorld的主要思想就是将图像中的建筑多边形表示为根据排列矩阵相连接的一组顶点。模型的输入为图像,输出为模型检测到的建筑物顶点的位置和有效的排列矩阵。

​ 在PolyWorld中,多边形顶点之间的连接用置换矩阵表示,排列矩阵 P c l o c k P_{clock} Pclock或 P c o u n t P_{count} Pcount的第i行表示与 v i v_i vi相连的下一个顺时针或逆时针顶点的索引。 P c l o c k P_{clock} Pclock是 P c o u n t P_{count} Pcount的转置。

​ 多边形的每个顶点都与排列矩阵的特定行相关联,该排列矩阵表示下一个顺时针顶点。该排列矩阵有以下多边形约束:

  1. 每个顶点最多对应一个顺时针连接和一个逆时针连接
  2. 顺时针方向多边形的排列矩阵是逆时针方向排列矩阵的转置
  3. 排列矩阵上对角线的值可以舍去,因为这不符合现实规定

​ PolyWorld由三个模块组成:一个顶点检测网络(Vertex detection Network)提取一组可能的候选建筑角,一个注意力图神经网络(attention Graph Neural Network)通过顶点聚合信息并优化它们的位置,以及一个最佳连接网络(Optimal Connection Network)生成顶点之间的连接。

Vertex detection Network

​ 这部分网络输入图像 I ∈ R 3 × H × W I\in R^{3 \times H \times W} I∈R3×H×W,前向传播通过全卷积网络主干(fully convolutional backbone),生成一个D维特征图 F ∈ R D × H × W F \in R^{D \times H \times W} F∈RD×H×W, F F F通过1*1卷积生成顶点生成掩码 Y ∈ R H × W Y\in R^{H \times W} Y∈RH×W,使用kernel=3的非最大抑制算法NMS来对掩码 Y Y Y进行过滤以保留相关峰值。随后将N个峰值的位置 p p p从特征图 F F F中提取N个视觉标识符 d ∈ R D d\in R^D d∈RD,顶点坐标由图像中的坐标组成 p i = ( x , y ) i p_i=(x,y)_i pi=(x,y)i。

Attention Graph Neural

​ 除了建筑角落的位置和视觉外观,考虑其他的语境信息是必不可少的。捕获其位置、外观与图像中其他顶点之间的关系有助于将其具有相同屋顶样式的角、具有匹配的兼容形状和姿势的角或简单的相邻角连接起来。

​ 出于以上考虑,这部分网络通过学习顶点位置 p p p和视觉标识符 d d d的长短期关系来捕捉一组匹配描述符 m i ∈ R D m_i ∈ R^D mi∈RD,此外,网络还估计一个位置偏移 t i ∈ R 2 t_i ∈ R^2 ti∈R2来改进位置顶点。

Vertex Encoder

​ 在通过图神经网络前向传播之前,位置 p p p和视觉标识符 d d d由多层感知器(MLP)合并。
d i ′ = M L P e n c ( d i ∣ ∣ p i ) d^′i = MLP{enc} (di\|\|pi) di′=MLPenc(di∣∣pi)

M L P e n c MLP_{enc} MLPenc接受 p i p_i pi和 d i d_i di的拼接并返回一个新的标识符 d i ′ ∈ R D d^′_i \in R^D di′∈RD,该标识符将位置信息和视觉信息编码在一起。

Self Attention Network

​ 标识符的聚合是通过自注意力机制在顶点之间传播信息,增加它们的上下文信息实现的,

​ 给定中间描述符 x ∈ R D × N x∈R^{D×N} x∈RD×N,该模型采用线性投影生成查询 Q ( x ) Q(x) Q(x),键 K ( x ) K(x) K(x)和值 V ( x ) V (x) V(x)。节点之间的权重计算采用softmax,然后将结果与值 V ( x ) V (x) V(x)相乘,以便在所有顶点上传播信息。注意力机制可以写成:
A = s o f t m a x ( Q ( x ) ⋅ K ( x ) T n k ) V ( x ) A = softmax(\frac{Q(x)·K(x)^T}{\sqrt{n_k}})V(x) A=softmax(nk Q(x)⋅K(x)T)V(x)

​ 其中归一化项 n k n_k nk是Q和K的维度。

​ 重复该操作L次, A ( L ) ∈ R D × N A^{(L)}\in R^{D\times N} A(L)∈RD×N是在第 L L L层上的结果,将用于更新每一层的顶点标识符
x i ( l + 1 ) = M L P ( l ) ( x i ( l ) ∣ ∣ a i ( l ) ) x^{(l+1)}_i = MLP^{(l)} (x\^{(l)}_i\|\|a\^{(l)}_i) xi(l+1)=MLP(l)(xi(l)∣∣ai(l))

​ 最后一个注意力层产生的第 i i i个顶点的嵌入 x i ( l ) x^{(l)}i xi(l)分解为两个分量:匹配描述符 m i ∈ R D m_i ∈ R^D mi∈RD和位置偏移 t i ∈ R 2 t_i ∈ R^2 ti∈R2
m i = M L P m a t c h ( x i ( L ) ) t i = M L P o f f s e t ( x i ( L ) ) m_i = MLP
{match}(x^{(L)}i)\\ t_i = MLP{offset}(x^{(L)}_i) mi=MLPmatch(xi(L))ti=MLPoffset(xi(L))

​ 匹配描述符进一步用于生成顶点之间连接的有效组合,而偏移量与顶点位置的组合如下:
p i = p i + γ ⋅ t i p_i = p_i + γ · t_i pi=pi+γ⋅ti

Optimal Connection Network

​ 该部分网络目的是连接生成顶点置换矩阵 P ∈ R N × N P∈R^{N ×N} P∈RN×N,并通过对所有可能的顶点对计算分数矩阵 S ∈ R N × N S∈R^{N ×N} S∈RN×N,并最大化总分 ∑ i , j P i , j S i , j ∑{i,j} P{i,j} S_{i,j} ∑i,jPi,jSi,j,来获得分配。

​ 给定两个匹配描述符 m i m_i mi和 m j m_j mj编码两个不同顶点的信息,我们利用 M L P c l o c k MLP_{clock} MLPclock来检测顺时针连接 m i → m j m_i→m_j mi→mj是否可能。网络接收两个描述符的连接情况,如果它们之间的连接很强,则返回一个高分值。
s i → j c l o c k = M L P c l o c k ( m i ∣ ∣ m j ) s^{clock} {i→j} = MLP{clock} (m_i\|\|m_j ) si→jclock=MLPclock(mi∣∣mj)

​ 反之,我们利用 M L P c o u n t MLP_{count} MLPcount来判断逆时针连接 m i → m j m_i→m_j mi→mj的可能性。
s i → j c o u n t = M L P c o u n t ( m i ∣ ∣ m j ) s^{count} {i→j} = MLP{count} (m_i\|\|m_j ) si→jcount=MLPcount(mi∣∣mj)

​ 通过执行约束2,我们可以在顶点的顺时针和逆时针路径之间建立一致性检查。最终得分矩阵S的计算是顺时针得分矩阵 S c l o c k S_{clock} Sclock和逆时针得分矩阵 S c o u n t S_{count} Scount的转置组合:
S = S c l o c k + S c o u n t S=S_{clock} + S_{count} S=Sclock+Scount

​ 最后,使用Sinkhorn算法8,27,29,30在给定分数矩阵 S S S的情况下找到最优分配矩阵 P P P。Sinkhorn是匈牙利算法的GPU高效可微版本,用于解决线性和分配问题,它包括对 e x p ( S ) exp(S) exp(S)的行和列进行一定次数的规范化迭代。

Losses

Detecting

​ 作者使用加权二值交叉熵损失来训练角点检测:
Ldet = − ω ·∑^H_{i=1}∑^W_{j=1} ̄Y_{i,j} · log (Y_{i,j} )−∑^H_{i=1}∑^W_{j=1}(1 − ̄Y_{i,j} ) · log (1 − Y_{i,j} )

Y Y Y是一个稀疏的零数组,表示建筑物角落存在的像素值为1,由于前景像素的分割严重不平衡,使用因子 ω ω ω来平衡正样本。

Matching

​ Self Attention Network和Optimal Connection Network是可微的,所以可以使用反向传播算法,这条路径是用交叉熵损失从真值置换矩阵P中以监督的方式训练出来的:
L m a t c h = − ∑ i = 1 N ∑ j = 1 N P i , j ⋅ l o g ( P i , j ) L_{match} = −∑^N_{i=1}∑^N_{j=1}P_{i,j} · log (P_{i,j} ) Lmatch=−i=1∑Nj=1∑NPi,j⋅log(Pi,j)

​ 由于Sinkhorn算法通过行和列进行迭代归一化,因此最小化 P P P的负对数可以同时最大化匹配的精度和召回率。

Positional refinement

​ 由于图像分辨率低、地面真值偏差或错误的建筑物标记,顶点检测网络提供的顶点位置在实践中不是最优的。因此,后续的匹配过程可能会产生与地面真实角不同的多边形,从而改变提取多边形的视觉吸引力。为了抑制这种现象,作者将预测多边形的角与地面真多边形的角之间的差异最小化。

局限性

​ PolyWorld不能很好的处理建筑之间的共有角和带洞的建筑,前者可以利用多类分割通过检测位于同一位置的顶点数量来解决,后者可能可以通过后处理绑定内环和外环相同形状的信息。

相关推荐
马士兵教育2 小时前
Java还有前景吗?Java+AI大模型学习路线及项目?
java·人工智能·python·学习·机器学习
KaMeidebaby3 小时前
卡梅德生物技术快报|纯化重组蛋白实操详解
人工智能·python·tcp/ip·算法·机器学习
江米小枣tonylua4 小时前
关掉 VSCode:在 NeoVim12 上配置 Claude Code
前端·程序员
嘉子的秃头日记5 小时前
TRO 2026|轮椅也能“猜到”用户想往哪走?
大数据·人工智能·机器学习
程序员cxuan5 小时前
Agents.md 是什么
人工智能·后端·程序员
Hali_Botebie5 小时前
非共轭先验(Non-conjugate Prior)和共轭先验(Conjugate Prior)
人工智能·机器学习
xrgs_shz6 小时前
基于K-Means聚类分析的鸢尾花分类
人工智能·机器学习
卡梅德生物科技小能手7 小时前
卡梅德生物科普:MAPT(微管相关蛋白Tau)
人工智能·经验分享·机器学习
AI数据皮皮侠7 小时前
全国高考报名、录取数据(1977-2026)
大数据·数据库·人工智能·python·机器学习·高考
码路星球7 小时前
我把 K-Means 的每一步都画了出来:分配、更新、收敛,外加几个工程踩坑
机器学习