Modele i platformy AI

Julien Rebetez, Lead Inżynier Machine Learning w Picterra – Wywiad

mm
Dodaj Unite.AI do preferowanych źródeł w Google

Julien Rebetez jest Lead Software & Machine Learning Engineerem w Picterra. Picterra oferuje platformę chmurową do szkolenia detektorów opartych na głębokim uczeniu, szybko i bezpiecznie.

Bez jednej linii kodu i z tylko kilkoma ręcznie utworzonymi adnotacjami, użytkownicy Picterra tworzą i wdrażają unikalne, gotowe do użycia modele głębokiego uczenia.

Automatyzuje analizę obrazów satelitarnych i lotniczych, umożliwiając użytkownikom identyfikację obiektów i wzorców.

Co skłoniło Cię do zainteresowania się machine learningiem i AI?

Zacząłem programować, ponieważ chciałem tworzyć gry wideo i zainteresowałem się grafiką komputerową. To doprowadziło mnie do komputerowego widzenia, które jest odwrotnym procesem, w którym komputer nie tworzy środowiska, ale je postrzega. Podczas studiów, uczestniczyłem w kursach Machine Learning i zainteresowałem się aspektem komputerowego widzenia. Myślę, że to, co jest interesujące w ML, to fakt, że znajduje się ono na przecięciu między inżynierią oprogramowania, algorytmami i matematyką, i nadal wydaje się trochę magiczne, gdy działa.

 

Jakie było Twoje pierwsze doświadczenie z analizą obrazów satelitarnych?

Moją pierwszą ekspozycją na obrazy satelitarne był projekt Terra-i (wykrywanie wylesiania) i pracowałem nad nim podczas studiów. Byłem zaskoczony ilością dostępnych bezpłatnie danych satelitarnych, które są produkowane przez różne agencje kosmiczne (NASA, ESA itd.). Można uzyskać regularne obrazy planety za darmo co kilka dni, co jest wielkim zasobem dla wielu zastosowań naukowych.

 

Czy mógłbyś podzielić się więcej szczegółów na temat projektu “Terra-i”?

Projekt Terra-i (http://terra-i.org/terra-i.html) został rozpoczęty przez profesora Andrzeja Perez-Uribe z HEIG-VD (Szwajcaria) i jest obecnie prowadzony przez Louisa Reymondina z CIAT (Kolumbia). Ideą projektu jest wykrywanie wylesiania przy użyciu bezpłatnych obrazów satelitarnych. W tamtym czasie pracowaliśmy z obrazami MODIS (rozdzielczość 250m) ponieważ zapewniały one jednolitą i przewidywalną pokrycie (zarówno przestrzenne, jak i czasowe). Uzyskiwaliśmy pomiary dla każdego piksela co kilka dni i z tego ciągu pomiarów można było wykryć anomalie lub nowości, jak to się nazywa w ML.

Projekt ten był bardzo interesujący, ponieważ ilość danych była wyzwaniem w tamtym czasie, a także było trochę inżynierii oprogramowania, aby to wszystko działało na kilku komputerach itd. Z punktu widzenia ML, używaliśmy Bajeskich Sieci Neuronowych (niezbyt głębokich w tamtym czasie) do przewidywania, jak powinien wyglądać ciąg pomiarów. Jeśli pomiary nie zgadzały się z przewidywaniami, mieliśmy anomalie.

W ramach tego projektu pracowałem również nad usunięciem chmur. Zastosowaliśmy tradycyjne podejście sygnałowe, gdzie mamy ciąg pomiarów i niektóre z nich są całkowicie nieprawidłowe z powodu chmury. Użyliśmy podejścia opartego na Fouriera (HANTS), aby oczyścić ciąg pomiarów przed wykryciem nowości w nim. Jedną z trudności było to, że jeśli oczyścimy je zbyt mocno, usuniemy również nowości, więc było trochę eksperymentów, aby znaleźć odpowiednie parametry.

 

Także zaprojektowałeś i wdrożyłeś system głębokiego uczenia do automatycznej klasyfikacji typu upraw z obrazów lotniczych. Jakie były główne wyzwania w tym czasie?

To było moje pierwsze prawdziwe doświadczenie z głębokim uczeniem. W tamtym czasie myślę, że głównym wyzwaniem było uzyskanie ramy do działania i prawidłowego użycia GPU niż sam ML. Używaliśmy Theano, które było jednym z przodków Tensorflow.

Celem projektu było sklasyfikowanie typu uprawy w polu, z obrazów lotniczych. Próbowaliśmy podejścia, w którym model głębokiego uczenia używał histogramów kolorów jako danych wejściowych, zamiast surowych obrazów. Aby to działało w sposób rozsądny, musiałem zaimplementować niestandardową warstwę Theano, aż do kodu CUDA. To było wielkie doświadczenie w tamtym czasie i dobry sposób, aby się trochę zagłębić w techniczne szczegóły głębokiego uczenia.

 

Jesteś oficjalnie Lead Software i Machine Learning Engineerem w Picterra. Jak najlepiej opisałbyś swoją codzienną pracę?

Rzeczywiście się różni, ale sporo czasu spędzam na nadzorowaniu ogólnej architektury systemu i produktu w ogóle oraz komunikowaniu się z różnymi zainteresowanymi stronami. Chociaż ML jest rdzeniem naszego biznesu, szybko się orientujesz, że większość czasu nie spędzasz na samym ML, ale na wszystkich rzeczach wokół niego: zarządzaniu danymi, infrastrukturze, UI/UX, prototypowaniu, zrozumieniu użytkowników itd… To jest dość zmiana w porównaniu z akademią lub poprzednim doświadczeniem w większych firmach, gdzie jesteś bardziej skupiony na konkretnym problemie.

Co jest interesujące w Picterra, to fakt, że nie tylko uruchamiamy modele głębokiego uczenia dla użytkowników, ale także pozwalamy im szkolić własne. To różni się od typowych przepływów ML, w których zespół ML szkoli model i publikuje go w produkcji. Oznacza to, że nie możemy ręcznie manipulować parametrami szkolenia, jak to się często robi. Musimy znaleźć sposób szkolenia, który będzie działał dla wszystkich naszych użytkowników. To doprowadziło nas do stworzenia tego, co nazywamy “ramą eksperymentów”, która jest dużym repozytorium zbiorów danych, symulujących dane szkoleniowe, które nasi użytkownicy budują na platformie. Możemy wtedy łatwo testować zmiany w naszej metodzie szkolenia na tych zbiorach danych i oceniać, czy pomagają, czy nie. Zamiast oceniać jeden model, oceniamy raczej architekturę + metodę szkolenia.

Inne wyzwanie polega na tym, że nasi użytkownicy nie są praktykami ML, więc niekoniecznie wiedzą, co to jest zbiór szkoleniowy, co to jest etykieta itd. Budowanie interfejsu, który pozwoli nie-praktykom ML na tworzenie zbiorów danych i szkolenie modeli ML, jest stałym wyzwaniem i jest wiele wahania się między zespołem UX a zespołem ML, aby upewnić się, że użytkownicy są prowadzeni we właściwym kierunku.

 

Jedną z Twoich odpowiedzialności jest prototypowanie nowych pomysłów i technologii. Jakie są niektóre z bardziej interesujących projektów, nad którymi pracowałeś?

Myślę, że najbardziej interesującym był prototyp Custom Detectora w Picterra. 1,5 roku temu mieliśmy “wbudowane” detektory na platformie: te, które sami szkoliliśmy i udostępnialiśmy użytkownikom. Na przykład, mieliśmy detektor budynków, detektor samochodów itd…

To jest typowy przepływ ML: masz inżyniera ML, który rozwija model dla konkretnego przypadku, a potem go udostępniasz klientom.

Ale chcieliśmy zrobić coś innego i trochę poszerzyć granice. Więc powiedzieliśmy: “Co, jeśli pozwolimy użytkownikom szkolić własne modele bezpośrednio na platformie”? Było kilka wyzwań, aby to działało: po pierwsze, nie chcieliśmy, aby to zajmowało kilka godzin. Jeśli chcesz zachować ten feeling interaktywności, szkolenie powinno trwać kilka minut najwyżej. Po drugie, nie chcieliśmy wymagać tysięcy adnotacji, co jest typowo potrzebne dla dużych modeli głębokiego uczenia.

Zaczęliśmy od bardzo prostego modelu, zrobiliśmy trochę testów w Jupyterze, a potem próbowaliśmy zintegrować go z naszą platformą i przetestować cały przepływ, z podstawowym interfejsem itd. Na początku nie działało zbyt dobrze w większości przypadków, ale były przypadki, w których działało. To dało nam nadzieję i zaczęliśmy iterować nad metodą szkolenia i modelem. Po kilku miesiącach, udało nam się osiągnąć punkt, w którym działało dobrze, i teraz mamy użytkowników, którzy używają tego cały czas.

Co było interesujące w tym, to podwójne wyzwanie utrzymania szkolenia w szybkim tempie (obecnie kilka minut) i tym samym niezbyt skomplikowanego modelu, ale jednocześnie wystarczająco skomplikowanego, aby działało i rozwiązywało problemy użytkowników. Dodatkowo, działa to z niewielką ilością (<100) etykiet w wielu przypadkach.

Stosowaliśmy wiele z “Zasad ML” Google (GOOGL ), w szczególności tych dotyczących implementacji całego przepływu i metryk przed rozpoczęciem optymalizacji modelu. To wstawia cię w tryb “myślenia systemowego”, w którym rozpoznajesz, że nie wszystkie twoje problemy powinny być rozwiązywane przez rdzeń ML, ale niektóre z nich mogą być przesunięte do interfejsu, niektóre z nich mogą być przetworzone przed lub po, itd…

 

Jakie technologie machine learningu są używane w Picterra?

W produkcji używamy obecnie Pytorch do szkolenia i uruchamiania naszych modeli. Używamy również Tensorflow od czasu do czasu, dla konkretnych modeli opracowanych dla klientów. Poza tym, jest to dość standardowy zestaw naukowy Pythona (numpy, scipy) z kilkoma bibliotekami geoprzestrzennymi (gdal) włączonymi.

 

Czy mógłbyś omówić, jak Picterra działa w tle, gdy ktoś uploaduje obrazy i chce wyszkolić sieć neuronową, aby właściwie adnotować obiekty?

Oczywiście, najpierw, gdy użytkownik uploaduje obraz, przetwarzamy go i zapisujemy w formacie “Cloud-Optimized-Geotiff” (COG) na naszym magazynie obiektów (Google Cloud Storage), co pozwala nam szybko uzyskać dostęp do bloków obrazu bez konieczności pobierania całego obrazu później. To jest kluczowy punkt, ponieważ obrazy geoprzestrzenne mogą być ogromne: mamy użytkowników, którzy regularnie pracują z obrazami 50000×50000.

Następnie, aby wyszkolić model, użytkownik musi utworzyć swój zbiór danych za pomocą naszego interfejsu webowego. Będzie to robił, definiując trzy rodzaje obszarów:

  1. obszary szkoleniowe, w których użytkownik narysuje etykiety szkoleniowe
  2. obszary testowe, gdzie model będzie przewidywał, aby użytkownik mógł zobaczyć wyniki
  3. obszar dokładności, gdzie użytkownik narysuje etykiety, ale te nie będą używane do szkolenia, tylko do oceny

Gdy użytkownik utworzy ten zbiór danych, może po prostu kliknąć “Szkol” i my szkolimy detektor dla niego. Co się dzieje dalej, to wstawiamy zadanie szkolenia do kolejki, mamy jeden z naszych workerów GPU, który je pobiera, szkoli model, zapisuje jego wagi do magazynu obiektów i w końcu przewiduje w obszarze testowym, aby wyświetlić wyniki w interfejsie. Od tego momentu, użytkownik może iterować nad modelem. Zazwyczaj, zauważy błędy w obszarach testowych i doda obszary szkoleniowe, aby pomóc modelowi poprawić się.

Gdy użytkownik jest zadowolony z wyniku modelu, może go uruchomić w skali. Z punktu widzenia użytkownika, jest to naprawdę proste: po prostu kliknąć “Wykryj” obok obrazu, który chce uruchomić. Ale jest to trochę bardziej skomplikowane pod spodem, jeśli obraz jest duży. Aby przyspieszyć, obsłużyć awarie i uniknąć wykrywania, które zajmuje kilka godzin, dzielimy duże wykrycia na komórki siatki i uruchamiamy niezależne zadanie wykrywania dla każdej komórki. To pozwala nam uruchamiać bardzo duże wykrycia. Na przykład, mieliśmy klienta, który uruchomił wykrywanie nad całą Danią na obrazach 25cm, co jest w zakresie terabajtów danych – dla jednego projektu. Opisaliśmy podobny projekt w tym poście na Medium.

 

Czy jest coś jeszcze, co chciałbyś podzielić się na temat Picterra?

Myślę, że to, co jest wspaniałe w Picterra, to fakt, że jest to unikalny produkt, na przecięciu między ML a geoprzestrzennością. To, co nas różni od innych firm, które przetwarzają dane geoprzestrzenne, to fakt, że wyposażamy naszych użytkowników w samodzielnie obsługiwane platformy. Mogą oni łatwo znaleźć lokalizacje, analizować wzorce i wykrywać oraz liczyć obiekty na obrazach satelitarnych i lotniczych. Byłoby to niemożliwe bez machine learningu, ale nasi użytkownicy nie muszą nawet posiadać podstawowych umiejętności programistycznych – platforma robi wszystko na podstawie kilku ręcznie utworzonych adnotacji. Dla tych, którzy chcą się zagłębić i nauczyć się podstawowych pojęć machine learningu w dziedzinie geoprzestrzennej, uruchomiliśmy kompleksowy kurs online.

Co również warto wspomnieć, to fakt, że możliwe zastosowania Picterra są nieograniczone – detektory zbudowane na platformie zostały użyte w zarządzaniu miastami, rolnictwie precyzyjnym, zarządzaniu lasami, zarządzaniu ryzykiem klęsk żywiołowych i katastrof, rolnictwie itd., aby wymienić tylko najczęstsze zastosowania. Jesteśmy zaskoczeni każdego dnia tym, co nasi użytkownicy próbują robić z naszą platformą. Możesz spróbować i powiedzieć nam, jak to działa na mediach społecznościowych.

Dziękuję za wspaniały wywiad i za to, że podzieliłeś się z nami, jak potężne jest Picterra. Czytelnicy, którzy chcą dowiedzieć się więcej, powinni odwiedzić stronę internetową Picterra.

Antoine jest wizjonerskim liderem i współzałożycielem Unite.AI, który jest zmotywowany niezachwianą pasją do kształtowania i promowania przyszłości sztucznej inteligencji i robotyki. Jako serialowy przedsiębiorca, wierzy, że sztuczna inteligencja będzie tak samo przełomowa dla społeczeństwa, jak elektryczność, i często jest złapany na tym, że zachwala potencjał przełomowych technologii i AGI.

Jako futurysta, jest poświęcony badaniu, jak te innowacje ukształtują nasz świat. Ponadto, jest założycielem Securities.io, platformy skupiającej się na inwestowaniu w najnowocześniejsze technologie, które zmieniają przyszłość i przebudowują całe sektory.