Prototypování AI
Vývoj aplikací využívajících hluboké učení může vyžadovat značné investice času a finančních prostředků.
Účinným postupem pro snížení nákladů je rychlé prototypování v kombinaci s vizualizací konceptu ve stádiu návrhu produktu.
Toto řešení může pomoci produktovým týmům objevit konceptuální nedostatky již v rané fázi vývoje a maximalizovat užitnou hodnotu pro zákazníky.
Proč prototypovat AI aplikace?
Proč prototypovat AI aplikace?
Doporučuji vytvářet jednoduché zkušební aplikace (PoC), které mohou sloužit jako interaktivní prezentace při projednávání návrhu produktu.
Tyto ukázkové aplikace mohou významně podpořit komunikaci v multidisciplinárních týmech tím, že poskytnou hmatatelnou reprezentaci složitých konceptů produktu (čímž se zajistí, že všichni budou sladění nad sdílenou představou produktu).
K výhodám tohoto přístupu patří:
Lepší uživatelská přívětivost:
Nalezení úskalí z hlediska použitelnosti a jejich zohlednění v návrhu funkcí i uživatelského rozhraní.
Zkrácení doby pro uvedení na trh:
Včasným ověřováním nápadů i funkcí můžeme urychlit celkový časový harmonogram.
Úspory nákladů:
Včasné rozpoznání návrhových nedostatků předchází nákladným úpravám v navazujících fázích vývoje.
Minimalizace návrhových rizik.
Rychlejší vývojové cykly umožňují rychlejší nasazení do provozního prostředí.
Prozkoumejme tento přístup na praktickém příkladu: Uvažujme aplikaci na bázi počítačového vidění, která klasifikuje dopravní objekty jako nedílnou součást systému pro autonomní řízení.
Cvičení 1/3 (Wireframe)
Prozkoumejte následující nákres a zkuste si představit praktickou realizaci:
Jak by měla tato aplikace fungovat?
Jak řeší potřeby zákazníků?
Jaká jsou kritická rizika a překážky?
Které kategorie objektů bychom měli zahrnout?
Klasifikátor dopravních objektů (prototyp)
Klasifikátor dopravních objektů (prototyp)
Cvičení 2/3 (Prototyp)
Pohrajte si s prototypem a promyslete:
Jak by tato aplikace měla fungovat?
Jak řeší potřeby zákazníků?
Jaká jsou kritická rizika a překážky?
Které kategorie objektů bychom měli zahrnout?
Cvičení 3/3 (Vyhodnocení)
Porovnejte výsledky obou cvičení - které z nich přineslo:
Užitečnější postřehy?
Plynulejší tok myšlenek?
Jasnější představu o vhodném (nebo nevhodném) chování aplikace?
Je možné, že některé postřehy z prvního cvičení už byly zapracovány v prototypu a experimentování s interaktivním PoC pomohlo získat nové postřehy k důležitým aspektům, které je nutné zohlednit ve finální aplikaci.
Rámec pro navrhování aplikací s rychlým prototypováním:
Rámec pro navrhování aplikací s rychlým prototypováním:
Návrh produktu (iterační cyklus):
Koncept (value proposition)
Diskuse k návrhu produktu
UX/UI (skicy + nákresy)
Diskuse k formě realizace
Prototyp (interní PoC)
Testování a zpětná vazba
Rozhodnutí o úpravách řešení
Rámec přizpůsobený rozsahu projektu:
Jeden
složitý produkt
Návrh produktu:
Koncept
UX/UI
Prototyp
Vývoj aplikace:
SW vývoj
Testování
Finální úpravy
Provoz:
Nasazení do provozu
Monitorování a údržba
Aktualizace (nové funkce) s iteračním cyklem "více malých produktů".
Více
malých produktů
Koncept
UX/UI
Prototyp
Vývoj
Testování
Doladění
Provoz
Monitorování a údržba
Jak vyvinout prototyp aplikace založené na AI?
Jak vyvinout prototyp aplikace založené na AI?
Časový rozsah:
Realizace prototypu aplikace (včetně nasazení do provozu) mi zabrala přibližně 3 dny vývoje. Jakmile je vytvořena infrastruktura pro konkrétní úlohu (např. rozpoznávání obrazu), lze podobné prototypy vytvářet za 4-8 hodin.
Technologie:
Pro rychlé experimentování a zpřístupnění PoC jsem si vybral následující kombinaci technologií:
Prostředí: Jupyter notebook, Google Colab.
Python knihovny: PyTorch, Fastai.
Architektura modelu: Předem natrénovaná konvoluční neuronová síť (ResNet18) s výstupní vrstvou dotrénovanou na vlastním souboru dat.
Trénování modelu:
Toto je zrychlený přístup vhodný pro vývoj prvotního prototypu, který umožňuje co nejdříve odhalit rizika i překážky spojené s konkrétními úkoly/soubory dat:
Sesbírání obrázků prostřednictvím automatizovaného internetového vyhledávání s označováním na základě vyhledávacího dotazu.
Třídění obrázků na základě predikční ztráty a míry jistoty predikce.
Přeznačení chybně klasifikovaných položek.
Opětovné dotrénování výstupní vrstvy neuronové sítě a exportování finálního modelu.
Provoz:
Prototyp je veřejně přístupný prostřednictvím uživatelsky přívětivého webového rozhraní:
Interaktivní aplikace s ukázkovým obrázkem pro každou kategorii.
Webové rozhraní bylo vytvořeno pomocí nástroje Gradio pro snadné používání.
Prototyp je umístěn na webu HuggingFace.co v sekci "Spaces".
Jak objevit a překonat technologická omezení:
Jak objevit a překonat technologická omezení:
Kategorie vstupních dat
Prázdné město (volná silnice bez překážek).
Kráčející chodec (částečně předvídatelný pohyb).
Kráčející zvíře (nepředvídatelný pohyb).
Auto (rychle se pohybující objekt).
Omezení rychlosti (dopravní značkou).
Dopravní značka (s příkazem nebo informací).
Semafor (světelné signalizační zařízení).
Čištění dat a vyladění modelu
Sběr obrázků automatizovaným vyhledáváním:
Označení obrázků je založeno na vyhledávacím dotazu ("foto, silnice, maximální povolená rychlost" zařadí obrázky do kategorie "Omezení rychlosti").
To vede k rychlému sestavení nekvalitního datového souboru, který je však vhodný na dotrénování modelu pro určení problematických oblastí.
Obr.1: Vzorek sady vstupních obrázků
Seřazení obrázků dle vyčíslení predikční ztráty a míry jistoty predikce nám umožňuje:
Rychle objevit nejproblematičtější data.
Stanovit konkrétní požadavky na prakticky použitelnou sadu dat.
Zvážit alternativní přístupy (jako je segmentace obrazu a kategorizace objektů zájmu).
Přeznačení chybně klasifikovaných položek:
Pomáhá dotrénovat model na rysech relevantních pro jednotlivé kategorie.
To by se mělo projevit lepšími výsledky zvolených metrik (přesnost nebo chybovost).
Obr.2: Přeznačení problematických obrázků znatelně vylepšuje schopnost modelu správně klasifikovat ověřovací sadu obrázků.
Dotrénování modelu:
Poskytuje překvapivě dobré predikce na ověřovací sadě obrázků (vzhledem k omezenému rozsahu a relativně nízké kvalitě vstupních dat).
Obr.3: Porovnání predikčních metrik pro předem natrénovaný model ResNet18, dále model dotrénovaný na sesbíraných obrázcích a výsledný model dotrénovaný na přeznačených obrázcích.
Limitace prototypu (přehled)
Abychom mohli náš prototyp smysluplně používat, je třeba umět rozlišovat mezi dvěma typy omezení:
a) Limitace dané zjednodušováním:
Vznikají v důsledku omezeného času k rychlému prototypování (aspekty řešení, které jsme vědomě opomenuli).
Tyto limitace NESMÍ zkreslovat koncepční návrh aplikace.
Mezi příklady patří nízká přesnost, kostrbaté uživatelské rozhraní a výhradně interní použití.
Vyplývající limitace můžeme akceptovat, pokud prototyp stále poskytuje hmatatelnou reprezentaci konceptů i funkčního uspořádání produktu.
b) Limitace dané technologií:
Vyplývají z podstaty úkolů a vlastností vstupních dat (rychlá analýza mnoha obrázků v krátkém čase, klíčové objekty mohou zaujímat pouze malou část obrázku).
Příklady zahrnují chybnou klasifikaci objektů a nedodržování práva na ochranu soukromí.
Prototyp by nám měl pomoci tato omezení co nejdříve objevit (například v rámci studie proveditelnosti).
Tyto limity musíme náležitě zohlednit, abychom zajistili, že naše aplikace bude správně fungovat s riziky zmírněnými na přijatelnou úroveň.
V některých případech mohou zjištěná omezení vést až k opodstatněnému rozhodnutí zastavit projekt ještě předtím, než významně investujeme do vývoje softwaru (pokud předpokládané náklady převyšují požadovanou návratnost investic nebo by řešení představovalo nepřijatelná rizika v oblasti shody s legislativními předpisy).
Překonávání limitací (příklad)
Zaměřme se na postřehy získané prozkoumáváním technologických limitací prototypu klasifikátoru dopravních objektů. Limitace vhodně zohledníme pro návrh prakticky použitelné finální aplikace.
PRIORITIZACE:
Obr.4: Chybná klasifikace obrázku semaforu.
Náš model stěží rozpozná přítomnost semaforu na obrázku (7% míra jistoty predikce), který je chybně klasifikován jako obrázek prázdného města. Pro snížení rizika nesprávné klasifikace můžeme zvážit zavedení:
Sub-kategorizace: Hrubá klasifikace celého obrázku by však vedla k nepatřičně velkému počtu potřebných podkategorií (Úprava přednosti v jízdě/Semafory/Světelné šipky).
Segmentace: Namísto sub-kategorizace můžeme obrázky předpřipravit segmentací, abychom rozpoznali klíčové objekty zájmu ("Semafor", "Světelná šipka", "Dej přednost v jízdě", "Přednost zprava", "Volná cesta").
Prioritizace: Stanovení pořadí kategorií, ve kterém jsou prioritní objekty zpracovány přednostně (Chodec > Zvíře > Auto > Semafor > Dopravní značka (příkaz) > Omezení rychlosti > Dopravní značka (informace) > Volná cesta).
Metriky: Vzhledem k vysokým nákladům v případě jakékoliv falešně-negativní detekce je lepší mít raději více falešně pozitivních detekcí prioritních objektů (pouliční lampa chybně klasifikovaná jako semafor) než nerozpoznat byť jen jedinou pravdivě-pozitivní detekci, proto upřednostníme metriky odrážející tento kompromis (vyšší recall na úkor nižší preciznosti).
ROBUSTNOST SYSTÉMU:
Obr.5: Chybná klasifikace obrázku s přecházejícím chodcem.
V uvedeném případě by nebyl upřednostněn chodec přecházející silnici (jen 3% míra jistoty predikce), což by mělo fatální následky! Pro vyřešení takto zásadní chyby nám může pomoci:
Stanovit přísná kritéria (pro vysoce rizikové aspekty), které musí aplikace splňovat před schválením pro nasazení do provozního prostředí (chodci rozpoznáni a upřednostněni s 99,999% spolehlivostí).
Definovat požadavky na komplexní soubor dat s vhodně označenými obrázky/objekty s rovnoměrným rozložením mnoha variant (chodci z řady zemí, v rozličném oblečení, za různých světelných podmínek).
Takový soubor dat je předpokladem, který umožňuje splnit přísná kritéria.
Agregace multi-modálních vstupů vstupujících do rozhodovacího algoritmu může posílit robustnost systému i jeho odolnost vůči jedinému bodu selhání, jako je porucha snímače nebo chybná klasifikace objektu (několik obrázků z různých kamer, LIDAR, infračervená kamera nebo tepelný skener, GPS/Galileo, detektor mobilních/bezdrátových zařízení).
Závěr:
Závěr:
Navrhovaný rámec pro rychlé prototypování nám pomohl objevit a vhodně zohlednit kritická rizika u vývoje algoritmu na klasifikaci dopravních objektů jakožto zásadní součásti robustního systému autonomního řízení. Klíčové aspekty pro návrh finální aplikace použitelné v provozním prostředí zahrnují:
Vyvážení kategorií dopravních objektů a jejich prioritizace.
Definování požadavků na komplexní soubor dat, jeho sestavení a ověření vhodnosti k trénování modelu.
Vybrání vhodných metrik k hodnocení kvality modelu a stanoveni přísných kritérií pro vysoce rizikové aspekty, aby bylo možné dosáhnout cílů projektu bez vzniku nepřijatelných rizik.
Experimentování s vhodnými návrhy modelů pro nalezení optimálního technického řešení:
Segmentace obrazu + mnoho-cílové modely.
Výběr architektury modelu, jeho trénování a dolaďování.
Agregace multimodálních vstupů k vývoji robustního složeného modelu.
Shrnutí:
Prototypování aplikací na bázi hlubokého učení (umělé inteligence) může pomoci produktovým týmům efektivně objevit technická i koncepční úskalí již v rané fázi návrhu produktu, což usnadňuje dosažení cílů projektu při současné minimalizaci rizik.
Zohlednění těchto úskalí umožňuje týmům kvalifikovaně rozhodovat o optimálním řešení dříve, než významně investují do softwarového vývoje finálního produktu.
Popsaný rámec pro návrh aplikací s rychlým prototypováním může být snadno zaveden v agilních vývojových týmech k významnému posílení produktivity diskusí tím, že ulehčí porozumění složitým technologickým výzvám také netechnicky orientovaným členům týmu.