Label Maker:將衛星圖和街景圖生成機器學習數據集的利器
作者|Liu Zhiyong
譯者|Debra Chen
編輯|Emily
AI 前線導讀:人工智慧技術最近炒得很火,一旦將其大規模用于軍事領域,那將是改變規則的技術。美國已經開始利用人工智慧技術在海量衛星照片中捕獵中國導彈陣地了。據美國《大眾機械》網站報道,密蘇里大學團隊訓練了一個深度學習演算法,可在 TB 級數字圖像中檢測、識別中國的地對空導彈陣地。據稱,人工智慧程序不僅能夠像人一樣準確地找到這些陣地,而且遠比人類更快。人工智慧將被用來補充人類情報專家,幫助他們從數千平方英里的衛星圖像中像大海撈針一樣找到所需的目標。
那麼我們又如何師夷長技以制夷呢?本文就介紹了如何利用 Github 的 Label Maker 項目為機器學習生成衛星地圖和街景圖的數據集。
更多乾貨內容請關注微信公眾號「AI 前線」,(ID:ai-front)
關於 OpenStreetMap
OpenStreetMap(開放街道地圖,OSM)是由英國人 Steve Coast 創立的一個開源地圖服務項目,其運營模式類似與維基百科,由志願者們免費提供地圖信息。個人、網站以及公司都可以使用它的地圖信息。目前,該地圖服務由英國非營利組織 OpenStreetMap 基金會負責。
OSM 已有超過兩百萬名註冊用戶。一如維基百科等網站,OSM 網站地圖頁有「編輯」按鈕,亦有記錄修訂歷史。經註冊的用戶可上傳 GPS 路徑,及可編輯地圖的向量數據,包括使用 OSM 網站的編輯器或其他自由地理信息系統軟體,如 JOSM。
OSM 的地圖由用戶根據手持 GPS 設備、航空攝影照片、衛星視頻、其他自由內容以至單靠用戶由於對有關區域的熟悉而具有的本地知識繪製。地圖的向量數據以開放資料庫授權方式授權。
Label Maker 項目簡介
而我們也同樣也可以用人工智慧來將衛星圖片和街景圖片生成機器學習數據集,這個工具就是 Github 上的 Label Maker 項目 [1],該項目利用了 OpenStreetMap 的 QA Tile 進行數據集的生成。OpenStreetMap QA Tile 包含用於分析 OpenStreetMap(QSM)的數據,將它們與 Tile Reduce 一起使用,將 OpenStreetMap 與其他數據集合在一起,可檢測連接問題等錯誤,或者監視破壞行為,可以對 OpenStreetMap 數據執行任何基於分片的分析。
Label Maker 項目的工具下載 OpenStreetMap QA Tile 信息和衛星圖像分片,並將其保存為.npz[2] 文件,以用於機器學習培訓。
項目要求
安裝
需要注意的是,運行這個庫需要 tippecanoe 作為「同版本依賴(peer-dependency)」,且在運行該命令之前,應該可從你的命令行獲得。
配置
在運行任何命令之前,需創建一個 config.json 文件,指定數據準備過程的輸入:
命令行使用
label-maker is most easily used as a command line tool. There are five commands documented below. All commands accept two flags:
label-maker 是最容易使用的命令行工具。下面有五個命令,所有的命令都接受兩個標誌:
示例:
$ label-maker download --dest flood-monitoring-project --config flood.json
下載
下載並解壓 OSM QA tile:
標記
將 OSM 數據恢復到所需的縮放級別,創建標籤數據 (labels.npz),計算類別統計信息,創建可視標籤文件,(根據 ml_type,可以使用 GeoJSON 或 PNG 文件)。需要上一步中的 OSM QA tile。
預覽
Downloads example satellite images for each class. Requires the labels.npz file from the previous step. Accepts an additional flag:
下載每個類的衛星圖像的例子。需要上一步的 labels.npz 文件。接受一個額外的標誌:
-n or --number: 為每類創建的實例圖像的 interger 個數。(預設:5)
圖像
下載訓練所需的所有圖像分片,需要 labels 步驟中的 labels.npz 文件。
封包 Package
捆綁衛星圖像和標籤以創建最終的 data.npz 文件。需要 labels 步驟中的 labels.npz 文件和 images 步驟中下載的圖像分片。
使用封包數據
一旦你有一個封包的 data.npz 文件,你可以使用 numpy.load[8] 來載入它。作為一個示例,下面是如何將創建的數據提供給 Keras[9] 模型:
數據,在訓練和測試集之間進行調整和分割
此處定義你的模型,Keras 的示範用例:
要獲得更為詳細的演練,請查看這個示例頁面:Label Maker Examples[10]。
致謝
這個庫建立在 skynet-data[11] 的理念之上。如果沒有來自 OpenStreetMap 和 Mapbox 的出色數據,將無法獲得以下許可證:
參考資料:
[1] Label Maker
https://github.com/developmentseed/label-maker
[2] numpy.savez
https://docs.scipy.org/doc/numpy/reference/generated/numpy.savez.html
[3] Download Planet
https://osmlab.github.io/osm-qa-tiles/
[4] Zoom levels
https://wiki.openstreetmap.org/wiki/Zoom_levels
[5] Mapbox GL Filter
https://www.mapbox.com/mapbox-gl-js/style-spec/#other-filter
[6] mapbox/mapbox-gl-js
https://github.com/mapbox/mapbox-gl-js/tree/master/src/style-spec/feature_filter
[7] Access tokens
https://www.mapbox.com/help/how-access-tokens-work/
[8] numpy.load
https://docs.scipy.org/doc/numpy/reference/generated/numpy.load.html
[9] Keras: The Python Deep Learning library
https://keras.io/
[10] Label Maker Examples
https://github.com/developmentseed/label-maker/tree/master/examples
[11] Data pipeline for machine learning with OpenStreetMap
https://github.com/developmentseed/skynet-data
[12] OpenStreetMap Copyright and License
https://www.openstreetmap.org/copyright
[13] Open Data Commons Open Database License (ODbL)
https://opendatacommons.org/licenses/odbl/
[14] Mapbox Terms of service
https://www.mapbox.com/tos/#%5BYmtMIywt%5D
TAG:機器學習 |