Umělá inteligence
Julien Rebetez, Lead Machine Learning Engineer at Picterra – Interview Series

Julien Rebetez, je Lead Software & Machine Learning Engineer ve společnosti Picterra. Picterra poskytuje geoprostorovou cloudovou platformu speciálně navrženou pro školení hlubokých učících se detektorů založených na hlubokém učení, rychle a bezpečně.
Bez jediné řádky kódu a s pouze několika lidsky vytvořenými anotacemi uživatelé Picterra vytvářejí a nasazují jedinečné akční a připravené k použití modely hlubokého učení.
Automatizuje analýzu satelitních a leteckých snímků, umožňující uživatelům identifikovat objekty a vzorce.
Co vás přitáhlo k strojovému učení a umělé inteligenci?
Začal jsem programovat, protože jsem chtěl vytvářet videohry a zajímal se o počítačovou grafiku. To mě vedlo k počítačovému vidění, které je vlastně opačný proces, kdy místo toho, aby počítač vytvářel falešné prostředí, jej vnímá reálné prostředí. Během svých studií jsem absolvoval einige kurzy strojového učení a zajímal se o úhel počítačového vidění. Myslím, že to, co je zajímavé na strojovém učení, je to, že se nachází na rozhraní mezi softwarovým inženýrstvím, algoritmy a matematikou a stále to vypadá trochu magicky, když to funguje.
Již několik let pracujete na použití strojového učení pro analýzu satelitních snímků. Jaký byl váš první projekt?
Mou první zkušeností se satelitními snímky byl projekt Terra-i (k detekci odlesňování) a pracoval jsem na něm během svých studií. Byl jsem překvapen množstvím volně dostupných satelitních dat, která jsou produkována různými vesmírnými agenturami (NASA, ESA atd.). Můžete získat pravidelné snímky planety zdarma každý den nebo tak a je to skvělý zdroj pro mnoho vědeckých aplikací.
Můžete sdílet více informací o projektu “Terra-i”?
Projekt Terra-i (http://terra-i.org/terra-i.html) byl zahájen profesorem Andrezem Perezem-Uribe z HEIG-VD (Švýcarsko) a nyní je veden Louisem Reymondinem z CIAT (Kolumbie). Nápad projektu spočívá v detekci odlesňování pomocí volně dostupných satelitních snímků. V té době jsme pracovali s snímky MODIS (250m pixelové rozlišení), protože poskytovaly uniformní a předvídatelnou pokrytí (jak prostorové, tak časové). Získali jsme měření pro každý pixel každých několik dní a z tohoto časového řady měření jsme se pokusili detekovat anomálie nebo novinky, jak je někdy nazýváme ve strojovém učení.
Tento projekt byl velmi zajímavý, protože množství dat bylo výzvou v té době a byla zde také一些 softwarového inženýrství, aby to fungovalo na více počítačích a tak dále. Z hlediska strojového učení jsme použili Bayesian Neural Network (ne příliš hluboký v té době 🙂 ) k předpovědi, jak by měl vypadat časový řad měření. Pokud měření neodpovídalo předpovědi, pak jsme měli anomálii.
V rámci tohoto projektu jsem také pracoval na odstranění mraků. Použili jsme tradiční přístup zpracování signálu, kde máte časový řad měření a některé z nich budou úplně mimo kvůli mraku. Použili jsme fourierovský přístup (HANTS) k očištění časového řady před detekcí novinek v něm. Jednou z obtíží bylo, že pokud bychom to očistili příliš silně, také bychom odstranili novinky, takže bylo třeba udělat一些 experimentů, aby se našly správné parametry.
Také jste navrhl a implementoval hluboký učící se systém pro automatickou klasifikaci typu plodin z leteckých (dronových) snímků farmářských polí. Jaké byly hlavní výzvy v té době?
To byla moje první skutečná zkušenost s hlubokým učením. V té době jsem si myslím, že hlavní výzvou bylo dostat framework běžet a správně použít GPU než na samotném strojovém učení. Použili jsme Theano, který byl jedním z předků Tensorflowu.
Cílem projektu bylo klasifikovat typ plodin v poli z dronových snímků. Zkouseli jsme přístup, kde hluboký učící se model používal barevné histogramy jako vstupy místo raw obrazu. Abychom to dostali fungovat rozumně rychle, musel jsem implementovat vlastní Theano vrstvu, až po一些 CUDA kódu. To byla skvělá zkušenost v té době a dobrý způsob, jak se trochu ponořit do technických detailů hlubokého učení.
Jste oficiálně Lead Software a Machine Learning Engineer ve společnosti Picterra. Jak byste nejlépe popsali své denní činnosti?
To opravdu variuje, ale hodně z toho je o udržování celkové architektury systému a produktu obecně a komunikaci s různými zúčastněnými stranami. Ačkoli strojové učení je jádrem našeho podnikání, rychle si uvědomíte, že většina času se nevytváří na strojovém učení samotném, ale na všech věcech kolem něj: správě dat, infrastruktuře, UI/UX, prototypování, pochopení uživatelů a tak dále. To je docela změna oproti akademické sféře nebo předchozím zkušenostem ve větších společnostech, kde jste mnohem více zaměřeni na specifický problém.
Co je zajímavé na Picterra je to, že nejen běžíme hluboké učící se modely pro uživatele, ale také jim umožňujeme trénovat své vlastní. To je odlišné od většiny typických pracovních postupů strojového učení, kde máte tým strojového učení, který trénuje model a pak jej publikuje do produkce. To znamená, že nemůžeme ručně hrát s trénovacími parametry, jako často děláte. Musíme najít一些 trénovací metody, které budou fungovat pro všechny naše uživatele. To nás vedlo k vytvoření našeho “experimentálního frameworku”, který je velkou repozitářem dat, který simuluje trénovací data, která naši uživatelé vytvářejí na platformě. Můžeme pak snadno testovat změny v naší trénovací metodologii proti těmto datům a vyhodnotit, zda pomáhají nebo ne. Místo hodnocení jednoho modelu tedy více hodnotíme architekturu + trénovací metodologii.
Další výzvou je to, že naši uživatelé nejsou odborníci na strojové učení, takže nevědí, co je trénovací sada, co je štítek a tak dále. Vytvoření uživatelského rozhraní, které umožňuje uživatelům, kteří nejsou odborníci na strojové učení, vytvářet datové sady a trénovat modely strojového učení, je neustálou výzvou a je zde mnoho zpětné vazby mezi týmy UX a ML, aby se ujistili, že uživatelé jsou vedeni správným směrem.
Jaké jsou některé z vašich odpovědností, jako je prototypování nových nápadů a technologií. Jaké jsou některé z více zajímavých projektů, na kterých jste pracovali?
Myslím, že nejzajímavější byl prototyp Custom Detectoru. Před 1,5 lety jsme měli “vestavěné” detektory na platformě: ty detektory, které jsme trénovali sami a zpřístupnili uživatelům. Například jsme měli detektor budov, detektor aut a tak dále.
To je vlastně typický pracovní postup strojového učení: máte einige odborníka na strojové učení, který vyvíjí model pro specifický případ a pak jej zpřístupní klientům.
Ale my jsme chtěli udělat něco jiného a trochu posunout hranice. Řekli jsme si: “Co kdybychom umožnili uživatelům trénovat své vlastní modely přímo na platformě?” Byly některé výzvy, aby se to podařilo: první, nechtěli jsme, aby to trvalo několik hodin. Pokud chcete zachovat interaktivní pocit, trénování by mělo trvat několik minut nejvýše. Druhé, nechtěli jsme vyžadovat tisíce anotací, které jsou typicky potřebné pro velké modely hlubokého učení.
Takže jsme začali s velmi jednoduchým modelem, provedli einige testy v jupyteru a pak se pokusili integrovat jej do naší platformy a otestovat celý pracovní postup, s základním uživatelským rozhraním a tak dále. Zpočátku to nefungovalo velmi dobře ve většině případů, ale byly einige případy, kdy to fungovalo. To nás dalo naději a začali jsme iterovat na trénovací metodologii a modelu. Po několika měsících jsme byli schopni dosáhnout bodu, kdy to fungovalo dobře, a nyní naši uživatelé používají to všechno.
Co bylo zajímavé na tom, byla dvojí výzva: udržet trénování rychlé (v současné době několik minut) a proto model nebyl příliš komplexní, ale zároveň dostatečně komplexní, aby fungoval a řešil problémy uživatelů. Kromě toho to funguje s několika (<100) štítky pro mnoho případů.
Použili jsme také některé z "Pravidel strojového učení" od Googlu, zejména těch, které se týkají implementace celého pracovního postupu a metrik před začátkem optimalizace modelu. To vás dostane do "systémového myšlení" módu, kde zjistíte, že ne všechny vaše problémy by měly být řešeny jádrem strojového učení, ale některé z nich mohou být přesunuty do uživatelského rozhraní, některé z nich před/zpracovány a tak dále.
Jaké jsou některé z technologií strojového učení, které se používají v Picterra?
V produkci目前 používáme Pytorch k trénování a běhu našich modelů. Někdy také používáme Tensorflow pro einige specifické modely vyvinuté pro klienty. Kromě toho je to poměrně standardní vědecký Python stack (numpy, scipy) s einige geoprostorovými knihovnami (gdal) vržené do toho.
Můžete diskutovat, jak Picterra funguje na pozadí, když někdo nahrává obrázky a chce trénovat neuronovou síť, aby správně anotoval objekty?
Ano, takže když poprvé nahráváte obrázek, zpracujeme jej a uložíme jej do “Cloud-Optimized-Geotiff” (COG) formátu na našem blobstore (Google Cloud Storage), což nám umožňuje rychle přístup k blokům obrázku bez toho, aby jsme museli stáhnout celý obrázek později. To je klíčový bod, protože geoprostorové obrázky mohou být obrovské: máme uživatele, kteří rutinně pracují s obrázky 50000×50000.
Takže pak, aby jste trénovali váš model, budete muset vytvořit trénovací sadu prostřednictvím našeho webového uživatelského rozhraní. To budete dělat tak, že definujete tři typy oblastí:
- ‘trénovací oblasti’, ve kterých budete kreslit trénovací štítky
- ‘testovací oblasti’, kde model předpoví, aby vám umožnil vizualizovat einige výsledky
- ‘přesnostní oblast’, kde budete kreslit štítky, ale ty nejsou použity pro trénování, pouze pro skóre
Jakmile jste vytvořili tuto sadu, můžete prostě kliknout na ‘Trénovat’ a my trénujeme detektor pro vás. Co se stane dál, je, že zařadíme trénovací úlohu, máme jednoho z našich GPU workerů, který ji zpracuje (nové GPU workerů jsou spuštěny automaticky, pokud existuje mnoho současných úloh), trénujeme váš model, uložíme jeho váhy do blobstore a nakonec předpoví v ‘testovací oblasti’, aby se zobrazily na uživatelském rozhraní. Odtud můžete iterovat nad svým modelem. Typicky budete hledat einige chyby v ‘testovací oblasti’ a přidáte ‘trénovací oblasti’, aby model zlepšil.
Jakmile budete spokojeni se skóre vašeho modelu, můžete jej spustit v měřítku. Z uživatelského pohledu je to opravdu jednoduché: prostě klikněte na ‘Detekovat’ vedle obrázku, na kterém chcete jej spustit. Ale je to trochu složitější pod kapotou, pokud je obrázek velký. Abychom to urychlili, zpracovali jsme velké detekce na gridové buňky a spustili nezávislou detekční úlohu pro každou buňku. To nám umožňuje spustit velmi velké detekce. Například jsme měli zákazníka, který spustil detekci nad celou zemí Dánska na 25cm snímcích, což je v rozsahu TB dat – pro jeden projekt. Popisujeme podobný projekt v tomto medium příspěvku.
Je něco jiného, co byste rádi sdíleli o Picterra?
Myslím, že to, co je skvělé na Picterra, je to, že je to jedinečný produkt, na rozhraní mezi strojovým učením a geoprostorovými daty. Co nás odlišuje od jiných společností, které zpracovávají geoprostorová data, je to, že vybavujeme naše uživatele se samoobslužnou platformou. Mohou snadno najít lokace, analyzovat vzorce, detekovat a počítat objekty na snímcích Země – to by bylo nemožné bez strojového učení, ale naši uživatelé nemusí mít ani základní programovací dovednosti – platforma dělá práci na základě několika lidsky vytvořených anotací. Pro ty, kteří chtějí jít hlouběji a naučit se základní koncepty strojového učení v geoprostorovém doméně, jsme spustili komplexní online kurz.
Co je také worth mentioning je to, že možné aplikace Picterra jsou nekonečné – detektory postavené na platformě byly použity ve správě měst, precizním zemědělství, lesním hospodářství, humanitární a řízení rizik, zemědělství a tak dále, aby se jmenovaly některé z nejčastějších aplikací. Základní jsme překvapeni každý den tím, co naši uživatelé se snaží udělat s naší platformou. Můžete to zkusit a dejte nám vědět, jak to fungovalo na sociálních médiích.
Děkuji za skvělý rozhovor a za sdílení, jak moc je Picterra silná, čtenáři, kteří chtějí se dozvědět více, by měli navštívit webovou stránku Picterra.
