FCC průmyslové systémy
+420 472 774 173
info@fccps.cz
Praha
Ústí nad Labem
Ostrava
Bratislava
PO - PÁ
8:00 - 16:00
E-shop
Banner rubrika 1
Jakou technologii SSD zvolit
Stabilní výkon SSD v nestabilních situacích napájení
Antimikrobiální ošetření Active Key inovace
Definice rozšířené teploty pro průmyslové paměti.
Synchronizace času - profesionální audio/video broadcasting
Kontrola barevného odstínu světlovodičů automobilového reflektoru
ATOP - průmyslové ethernetové switche, routery
CAN - stručný úvod
CAN FD - stručný úvod
Strojové učení strojového vidění
Pásma LTE/UMTS/EDGE/GSM používaná v České republice
PC Nexcom zlepšuje svážení odpadků
Průvodce výběrem vhodné gateway
Měřicí stanice pro záznam dat z průtokoměrů a měřičů hladin na modelu vodního díla
Teaming - redundantní Ethernet pod Windows
Kontrola sestavy čerpadla pro automobilový motor
Ochrana proti přepětí v kontextu průmyslové elektroniky - svodiče a galvanická izolace
Mobilní data v proudu času
Elektrická (smart) dálnice
Zajímavý výzkum na katedře měření ČVUT FEL
Stroj pro kontrolu kulových čepů
Příklady 3G a 4G modemů
Kontrolní zařízení pro kovové třmeny
Vizualizace výrobních dat, On-line reporting stavu výroby
Vizualizace výrobních dat, On-line zásobování Machinery a Assembly
Řídicí terminály pro biologické laboratoře
Londýnské metro je na špici ve získávání energie pro využití ve stanicích
Kontrola správného postupu ruční montáže chladiče klimatizační jednotky
Strojové vidění hlídá kvalitu v lakovně plechu
Kontrola plastového výlisku
PCI Express - mýty a fakta
Identifikace a kontrola přítomnosti krytu automobilového reflektoru ve stříkací lince
Stanice pro kontrolu sestavy konektoru
Kontrola 50 000 dílů za směnu
Antény pro WiFi - 1. část
Antény pro WiFi - 2. část
Základní přehled o technologii WiFi
Dodávané a podporované operační systémy pro PC

Strojové učení strojového vidění


Strojové učení je často ztotožňované s umělou inteligencí, přesto, že jde jen jednu z jejích podoblastí. Využívá se úspěšně k rozpoznání řeči, dolování dat, optimalizaci řízení, predikci trendů. Důležitou oblastí nasazení učících se systémů je i zpracování obrazu. Tam se strojové učení používá pro klasifikaci scén, hledání a klasifikaci objektů v obraze nebo rozpoznání tváří. Tyto procedury jsou pak důležitým prvkem moderních bezpečnostních, dopravních a dalších systémů. Firma FCC průmyslové systémy je však průmyslovým systémovým integrátorem a zajímá ji hlavně nasazení učících se systémů v oblasti průmyslového strojového vidění. Následující úvahy tedy vycházejí ze zkušeností získaných ve firmě FCC průmyslové systémy při aplikaci strojového učení při řešení projektů integrace systémů strojového vidění v průmyslové výrobě.

Klasifikace objektů v obraze neuronovou sítí
Učících se systémů je několik druhů. Pro zpracování obrazu je dnes nejčastěji učící se systém nasazen ve formě neuronové sítě pro učení s učitelem (supervised learning) a využívané jako klasifikátor objektů v obraze. Nebudeme se zabývat tím, proč právě tento typ učícího se systému je tak populární. Raději využijeme toho, že takovou síť je dnes možné poměrně snadno realizovat s využitím mnoha dostupných softwarových knihoven. K dispozici jsou knihovny pro vybudování jak „univerzálních“ neuronových sítí, tak i tzv. konvolučních sítí, vyvinutých přímo pro zpracování obrazu. Využitím těchto knihoven většina integrátorů začíná a touto cestou jsme se vydali i my.
Proto se zde nebudeme věnovat rozboru principu neuronových sítí, pro zájemce o tuto oblast již existuje široká nabídka pramenů v literatuře i na internetu. Na neuronovou síť budeme hledět jako na klasifikátor, který určité množině vstupních vektorů přiřazuje výstupní vektor charakterizující klasifikační třídu. K tomu, aby takto fungoval, musí klasifikátor projít procesem učení, ve kterém aproximuje své vnitřní proměnné.

 

Nasazení v automatizované výrobě

obr. 1. Vizualizace deskriptorů v aplikaci strojového vidění

Klasifikace (přiřazení objektu třídě) je častou úlohou i ve strojovém vidění. Nejčastěji se využívá při kontrole úplnosti montáže: zda je k montáži dodán, případně již namontován správný díl. Ve výrobě je také často třeba identifikovat loga, nápisy nebo kódy.
Řešení této úlohy dosavadními postupy standardního strojového vidění spočívá v jednorázovém porovnání obrazu s ideálním modelem. Model většinou nebývá příliš komplikovaný, nejčastěji sestává z izolovaných charakteristických prvků obrazu objektu (deskriptorů), které lze snadno a jednoznačně identifikovat a převést na binární signál přítomen / nepřítomen. Deskriptory bývají nejčastěji kontrastně nasvícené hrany nebo jejich kombinace (obr. 1). Někdy bývá základem deskriptoru výsledek transformace obrazu (například konvoluční filtrace). Snahou vývojáře je užít co nejméně deskriptorů, nejlépe pro každou třídu jeden. Výstupní vektor je výsledkem logické operace se stavy deskriptorů. Systém se ladí ruční parametrizací deskriptorů tak, aby bylo dosaženo potřebné spolehlivosti klasifikace na dostupných výrobcích. Testovací množina výrobků nemusí být často ani příliš obsáhlá, protože vývojář při ladění využívá své zkušenosti a představivost. Návrh modelu a výběr deskriptorů je nejcennějším know-how firem, které se strojovým viděním zabývají.
Co by nás tedy mohlo přinutit k tomu opustit tuto zavedenou metodu a aplikovat učící se systém? V praxi je to obvykle některý z následujících důvodů:

  • Počet klasifikačních tříd je vysoký a počet deskriptorů by byl rovněž vysoký. Reálně není v silách vývojáře napsat a odladit program, který by pracoval spolehlivě.
  • Počítá se s tím, že se klasifikační třídy budou časem měnit nebo se jejich počet bude rozšiřovat. Do sady montovaných dílů se budou přidávat další, výrobek se bude modifikovat. V tom případě je většinou třeba rozšířit model, upravit nebo přidat deskriptory a změnit vyhodnocení jejich stavu. Znamená to obvykle podstatný zásah do aplikace, který musí provést příslušný specialista. Učící se systém by měl být schopen naučit se nový typ výrobku a odvést tuto práci za něj. 
  • Nejsme schopni nalézt použitelné deskriptory. Tuto situaci často zapříčiňují rušivé vlivy jako parazitní světlo, nebo odrazy. Někdy lze tyto vlivy kompenzovat, někdy to prostě není možné. Pak je naděje, že učící se systém, který je založen na řádově větším počtu deskriptorů, než jsme klasickým programováním schopni vytvořit a nastavit, řešení v procesu učení najde. 

 

Realizace neuronové sítě pro zpracování obrazu

obr. 2. Využití neuronové sítě pro klasifikaci objektů v obraze

Již jsme zmínili, že klasifikátor pracuje se vstupním vektorem; většinou se sadou reálných čísel. Tato čísla musí, stejně jako při klasickém řešení, reprezentovat vhodné deskriptory obrazu (obr. 2). Deskriptorů by měl být dostatečný počet (určitě řádově více, než používáme při standardním vyhodnocení obrazu). Na druhou stranu, nemusí každý charakterizovat příslušnost do jedné třídy. Tuto sadu deskriptorů obvykle nevytváříme ručně. V praxi se používají funkce z vhodných knihoven; populární je například KAZE feature detector, který je součástí OpenCV.
Normalizované hodnoty deskriptorů zavedeme jako vstupy do neuronové sítě a nastane proces učení. Existuje řada odkazů na postup trénování a testování neuronové sítě, kde jsou diskutovány vlastnosti trénovací/testovací množiny. Při správném trénování by chybovost měla klesat poměrně rychle a bez oscilací. Pokud se zastaví na vysoké hodnotě a s přibývajícím trénováním neklesá, bývá síť zbytečně složitá (přeurčená) nebo je trénovací množina nevhodná a dochází k přeučení. To se většinou projeví i tak, že chybovost opět začne stoupat. Je třeba si uvědomit, že parametry klasifikátoru tvořeného natrénovanou neuronovou sítí jsou náhodné veličiny, které se parametrům ideálního klasifikátoru pouze více či méně přibližují. Výsledek stejného tréningu se stejnými daty tedy nevede ke stejné chybovosti. Optimální výsledky jsou souhrou vhodné konfigurace sítě, vhodných a vhodně nastavených deskriptorů, vhodné trénovací množiny a postupu tréningu. Není na škodu vědět i při návrhu na pohled jednoduché aplikace něco o vhodnosti parametrů sítě (počet vrstev, počet neuronů..) pro různé vlastnosti klasifikované množiny a zamyslet se nad tím, zda počet vrstev sítě a sada použitých deskriptorů odpovídá charakteru aplikace. Obecně neplatí, že čím složitější síť, tím lepší výsledky.

 

Konvoluční neuronové sítě

obr. 3. Využití konvoluční sítě pro klasifikaci objektů v obraze

Problém nalezení vhodných deskriptorů obrazu vedl k myšlence získat je také pomocí strojového učení. Tak vznikly takzvané konvoluční sítě. Mají dvě základní vrstvy (obr. 3). V první vrstvě se na obraz aplikuje sada filtrů, tedy konvolucí s různými maskami. Filtrované obrazy se dále upravují a výsledkem je sada deskriptorů. Parametry filtrů (hodnoty prvků masek) se učením optimalizují, takže na konci učení získáme sadu deskriptorů optimálně přizpůsobených charakteru vyhodnocovaného obrazu. Využití operací konvoluce má také výhodu v tom, že vzniklé deskriptory jsou poměrně invariantní k posunutí nebo změně měřítka klasifikovaných objektů.
Tyto deskriptory jsou vstupním vektorem druhé vrstvy, která je v podstatě standardní neuronovou sítí. Natrénovat konvoluční vrstvu je však obrovský problém. Jde o paralelní aproximaci prvků několika maticových masek, což vede k výpočtům ve vícerozměrném prostoru a použití tenzorového počtu. Zajištění konvergence chybovosti konvoluční vrstvy je údajně záležitost statisíců obrázků a týdnů práce. Proto se konvoluční sítě dodávají takzvaně předtrénované, tedy s konvoluční vrstvou již natrénovanou na nějaký typ aplikace, takzvaného modelu. Uživatel pak trénuje jen druhou, klasifikační vrstvu obvyklým způsobem.
Záleží tedy na tom, jak blízký je natrénovaný model tomu našemu (což ale nemusí vždy znamenat, že obrázky jsou si vizuálně podobné). Nejznámější knihovna pro konvoluční síť, TensorFlow od firmy Google poskytuje k volnému stažení množství modelů, jejich charakter však odpovídá tomu, že jde o volně šířený software. Jak sami uznáte, model pro rozeznání pejska a kočičky je v průmyslu k nezaplacení. A tak se může stát, že použití konvoluční sítě poskytne horší výsledky než klasická síť s vhodnými deskriptory. Ideální by bylo trénovat konvoluční vrstvu přímo v aplikaci; při zkušenostech naší společnosti s integrací systémů v průmyslu však pokládáme takový projekt za ekonomicky nerentabilní a prakticky nerealizovatelný.

Specifika nasazení ve výrobě
Kromě výše uvedených problémů má aplikace učících se systémů v průmyslu i další úskalí. Bývá problém opatřit dostatečně velký trénovací a testovací soubor. Pokud je tříd výrobků větší množství, obvykle se všechny nevyrábějí rovnoměrně a ve stejných počtech. A dokud není systém natrénován dostatečně na všechny možné varianty, nepracuje správně.
Jiný problém může být v proměnlivosti rušivých vlivů. Lze vytvořit a natrénovat systém, který správně klasifikuje za mizerných světelných podmínek, z obrázků, se kterými by měl problém i člověk. Ovšem změna osvětlení, která nebyla součástí trénovací množiny, může vést ke zcela chybné klasifikaci. Se stejnou situací se, samozřejmě, můžete setkat i při využití standardních metod vyhodnocení obrazu. Člověk (vývojář) si však takovou situaci umí představit a systém na ni předem adaptovat. Učící se systém ji musí vždy vidět (a ne jednou), aby si ji zapamatoval.
S tím souvisí i otázka spolehlivosti klasifikace. Jak již bylo řečeno, natrénovaný učící se systém je pouze statistickou aproximací ideálního modelu klasifikátoru, lépe či hůře povedenou. Budeme-li chtít ověřit jeho způsobilost k bezchybné klasifikaci stejně, jako ověřujeme způsobilost jakéhokoliv jiného měřicího přístroje pro výrobu, pravděpodobně narazíme. Kritéria dnešních požadavků 100% reliability / zero-failure těžko plní i deterministické systémy zatížené minimální náhodnou chybou.

Další typy aplikací
V předchozím textu jsme se zabývali využitím učících se systémů v úlohách klasifikace objektů ve výrobním procesu. V oboru strojového vidění však existuje ještě jedna velká třída aplikací, pro kterou se učící se systém zdá být vhodným řešením. Je o rozpoznání vady, tedy klasifikace do dvou tříd OK / NOK. Problém je však v tom, že zatímco třída OK je jasně definovaná a opatřit pro ni data pro trénovací množinu nebývá problém, třídu NOK jako konečnou množinu často není možné definovat. Každý integrátor kontrolního systému se setkal se situací, kdy kdekdo ve firmě ví, jak má vypadat bezchybný výrobek, nikdo vám ale jednoznačně neřekne, co je to zmetek. A i kdybyste množinu NOK výrobků definovali, z praktických důvodů nebude možné opatřit potřebný počet zmetků pro trénování. Pro tyto účely vám je vedení firmy určitě vyrobit nedá. A co není natrénováno, to systém správně neklasifikuje. Pro aplikace rozpoznání vad se patrně bude lépe hodit jiná třída učících se systémů, detektory anomálií.

Na závěr ještě shrnutí našich dosavadních zkušeností: Učící se systémy mohou ve strojovém vidění řešit úlohy, které jsou jiným způsobem neřešitelné. Jejich nasazení však nevede k náhradě kvalifikované práce vývojáře prací někoho méně kvalifikovaného. Pouze ji transformuje na práci, která vyžaduje jiný okruh znalostí a praxe.

Otto Havle, FCC průmyslové systémy

Eshop
Youtube
Magazín
Kalalog
Kalalog
FCC průmyslové systémy


Již 20 let na českém trhu

FCC průmyslové systémy je technicko – obchodní společností, zastupující významné výrobce v oblasti průmyslové automatizace a telekomunikační techniky. V oblasti průmyslové automatizace zahrnuje naše nabídka spektrum sahající od senzorových systémů přes průmyslové sběrnice a průmyslové komunikace po průmyslové výpočetní, řídicí a dispečerské systémy na bázi specializovaných PC. Naší významnou specializací jsou systémy pro strojové vidění využívané v oblasti výrobní automatizace a kontroly kvality. Spolupracujeme s nejvýznamnějšími světovými dodavateli průmyslové výpočetní techniky a komunikací z Evropy a Asie a disponujeme i vlastním vývojovým a konstrukčním zázemím včetně vývoje softwaru.

up