Detekce objektů pomocí strojového učení

9. 5. 2019
  • Desktopový GIS
  • ArcGIS Pro 2.3

Trendem posledních let je umělá inteligence. Modely umělé inteligence najdeme například v lékařství nebo také v oblíbeném překladači google translator. Ani oblast geografických informačních systémů nemohla zůstat stranou. Vždyť slovo "strojové učení" (v originále machine learning) – tedy název jedné z podoblastí umělé inteligence – bylo slyšet na každém kroku na letošním Developer Summitu v Palm Springs. V GIS se pro využití strojového učení některé úlohy přímo nabízejí – například klasifikace satelitních snímků či detekce objektů – a tak nezůstávají stranou ani nástroje ArcGIS.

Práci se strojovým učením bychom mohli rozdělit do dvou kategorií. Na práci vývojářskou a vědeckou, tedy tu část, kdy modely pro detekci stavíme, učíme a ověřujeme, a na část analytickou, kdy je využíváme pro konkrétní úlohy nad reálnými daty. Dnes si v tomto krátkém článku ukážeme velmi elegantní možnost, jak využít předem naučené modely strojového učení pro detekci objektů – v našem případě palem – na leteckém snímku s vysokým rozlišením.

Stažení dat

Z odkazu https://downloads.esri.com/learnarcgis/use-deep-learning-to-assess-palm-tree-health/deeplearning.zip stáhneme a uložíme archiv obsahující soubor definice modelu (EMD) a soubor PB reprezentující „vytrénovaný“ model strojového učení. Formát PB značí typ Protocol Buffers, přičemž podporovány jsou i další formáty.

V textovém editoru si otevřeme definici modelu TensorFlowCoconutTrees.emd a zadáme cestu k vlastnímu modelu, souboru PB, na řádku
"ModelFile":"frozen_inference_graph.pb",
a to buď absolutní cestou a nebo, nacházejí-li se oba soubory ve stejné složce, pouze zadáním jména souboru, jak je uvedeno výše.

Dále otevřeme stránku https://openaerialmap.org a klikneme na tlačítko Start Exploring. Do vyhledávacího pole napíšeme slovo Kolovai (město na ostrově Togantapu). Klikněte do čtverce ve městě a vyčkejte na zobrazení dostupných snímků v levé části obrazovky. Pro další analýzu vybereme druhý snímek v první řadě - Kolovai UAV4R Subset (OSM-Fit) 2017-10-05 / 9 cm od autora Cristiana Giovanda.

Klikneme na daný snímek a zobrazíme si jeho detaily. V detailu pak klikneme na ikonu pro stažení a snímek uložíme do počítače.

Detekce objektů na vybraném snímku

Abychom mohli používat funkce strojového učení, je třeba správně nastavit prostředí pro jazyk Python v ArcGIS Pro. Spustíme ArcGIS Pro a otevřeme jeho Nastavení. Na záložce Python klikneme na možnosti Spravovat prostředí. Vybereme možnost klonovat prostředí a vyčkáme na tvorbu nového pracovního prostředí, které nám na rozdíl od výchozího umožní instalovat nové balíčky. Jakmile se nové prostředí vytvoří, pomocí přepínače jej nastavíme jako aktivní.

Restartujeme ArcGIS Pro a vrátíme se do nastavení Pythonu. Protože používáme naklonované prostředí, můžeme instalovat nové balíčky. Klikneme na tlačítko Přidat balíčky a do okna Hledat vložíme název požadovaného balíčku tensorflow. V pravé části klikneme na tlačítko Instalovat a objevivší se okno s detaily instalace taktéž potvrdíme.

Analogicky pak nainstalujeme balíčky tensorflow-gpupyyaml.

Po instalaci si v ArcGIS Pro otevřeme nový mapový projekt a do mapy vložíme snímek, který jsme si stáhli.

Otevřeme nástroj Detect Objects Using Deep Learning. Jako vstup nám poslouží zobrazený snímek a definice modelu TensorFlowCoconutTrees.emd. Pro základní demonstraci můžeme ponechat parametry ve výchozím nastavení.

Parametr score_threshold reprezentuje mezní hodnotu, při které bude objekt vyhodnocen jako palma. Parametr padding používáme pro nastavení, jak má nástroj pracovat s pixely na hranici snímku. Parametr batch_size definuje počet vzorků použitých pro trénování neurální sítě. (Poznámka: Desetinná čísla bude pravděpodobně nutné zadat s desetinnou tečkou.)

Nástroj spustíme tlačítkem Spustit a vyčkáme na dokončení, které může trvat až několik desítek minut, záleží na výkonu počítače.

Nástroj generuje výsledek jako novou vrstvu prvků, která reprezentuje jednotlivé detekované objekty.

Na co se můžete těšit dále? V některém z příštích tipů a triků si ukážeme tvorbu vlastního modelu za pomocí Jupyter Notebook a knihoven PyTorchfast.ai.