AI News HubLIVE
站内改写2 分鐘閱讀

使用city2graph、OSMnx和PyTorch Geometric進行城市功能推斷的空間圖神經網絡編碼實現

本教程介紹了使用city2graph構建端到端空間圖學習流水線的方法,用於城市功能推斷。它從OpenStreetMap收集興趣點(POI)和街道網絡數據,設計了合成數據回退機制以確保可靠性。接着,工程化空間特徵,構建多種近鄰圖家族(如KNN、Delaunay、Gabriel等),並比較它們在表示同一城市環境時的差異。然後,同時構建異質圖和同質圖,轉換為PyTorch Geometric格式,並訓練GraphSAGE模型根據空間結構預測POI類別。整個工作流整合了地理空間數據處理、圖構建和GNN訓練,提供了一個實用的實現範例。

來源MarkTechPost作者: Sana Hassan

在本教程中,我們將構建一個完整的端到端空間圖學習流水線,用於城市功能推斷,該流水線基於city2graph庫實現。我們首先從OpenStreetMap收集真實的城市興趣點(POI)數據和街道網絡信息。為了確保工作流在任何情況下都能可靠運行,我們還設計了一個合成數據回退機制:如果OSM請求失敗,會自動生成一個聚類的合成POI數據集。具體來説,我們選取東京澀谷地區(座標35.6595, 139.7005)作為實驗區域,在半徑1100米範圍內通過OSMnx庫獲取四種類別的興趣點:餐飲(包括餐廳、咖啡館、快餐、酒吧和酒館)、零售(所有商店)、教育(學校、大學、學院、幼兒園、圖書館)和健康(醫院、診所、藥房、醫生、牙醫)。同時下載步行街道網絡。獲取的數據集如果超過700個點,則隨機抽樣至700點以控制計算量。所有數據被投影到適當的UTM座標系以確保距離計算準確。

接下來進行空間特徵工程。對於每個POI,我們提取其投影座標(cx, cy),計算局部密度(在150米半徑內的鄰居數量),並估計到最近街道段的距離(通過空間連接)。這些特徵被標準化處理。然後我們構建多種近鄰圖家族來連接這些POI,包括KNN(k=8)、Delaunay三角剖分、Gabriel圖、相對鄰域圖(RNG)、歐幾里得最小生成樹(EMST)和Waxman圖。通過比較每種圖的邊數和平均度,我們可視化了幾種代表性拓撲(KNN、Delaunay、EMST)並觀察它們連接同一組POI的方式差異。

在構建圖結構方面,我們同時採用兩種方式。首先是異質圖:將POI按類別分為不同節點類型(food、retail、education、health),然後使用橋接邊(k=3的KNN)連接不同類型之間的鄰近節點,最後轉換為PyTorch Geometric的HeteroData格式。其次是同質圖:基於KNN(k=8)構建無向圖,併為每個節點添加度特徵,與之前的空間特徵一起構成節點特徵向量。圖數據被轉換為PyG的Data對象。

我們定義了一個兩層GraphSAGE模型:第一層SAGEConv將輸入特徵映射到64維隱藏層,經過ReLU激活和dropout(概率0.3)後,第二層SAGEConv再次映射到64維,最後通過線性層輸出類別數。使用Adam優化器(學習率0.01,權重衰減5e-4)進行訓練。數據集按6:2:2的比例劃分為訓練集、驗證集和測試集。訓練共200個epoch,每20個epoch在驗證集上評估準確率和宏F1,並保存最佳模型。最終在測試集上報告性能指標。

此外,教程還包括了節點嵌入的可視化(通過PCA降維)以及異質GNN的前向傳播演示。整個過程完整地展示瞭如何將地理空間數據處理、圖構建和GNN訓練整合到一條實用的流水線中,為城市功能推斷任務提供了可複製的代碼實現。