Moravian instruments
Vyhledávání
Hlavní menu
Hlavní stránka
O společnosti
Stažení software
Stažení dokumentů
Obchodní partneři
Registrace
Vstup pro partnery
Produkty
Programový systém Control Web
Strojové vidění VisionLab
Kamery DataCam a  osvětlovače DataLight
Průmyslový počítačový systém DataLab
Vědecké CCD kamery
Speciální technika
Ceník
Aktivace produktů
Control Web online
Služby
Školení
Zakázková řešení
Podpora


Hlavní stránka  Produkty  Strojové vidění VisionLab

Nový krok pro detekci vzorů s pomocí GPU
 Pattern matching je v oblasti aplikací strojového vidění stále jedním z nejpoužívanějších kroků. Jeho použití je snadno pochopitelné a výsledky bývají výborné. Jediným problémem se občas stává spotřeba výpočetního času. S tímto problémem nám mohou znatelně pomoci současné grafické procesory. Do systému VisionLab přibyl nový krok gpu_pattern, který proti stávajícímu řešení přináší několik optimalizací a další zvýšení efektivity využití GPU.

Ani současné moderní GPU nemají bohužel stále tolik hrubého výkonu, aby mohly realizovat kompletní normalizovanou křížovou korelaci pro všechny pixely obrazu se všemi pixely hledaného patternu. Škoda, řešení hrubou silou by poskytovalo nejpřesnější výsledky, ale normalizované křížová korelace je opravdu výpočetně příliš náročná. Proto i GPU algoritmus potřebuje několik optimalizací na výkon, které vedou na nutnost několika vykreslovacích průchodů. Nový krok je optimalizován tak, aby byla pokud možno co nejméně přenášena data mezi pamětí CPU a pamětí grafické karty.

Všechna měření výkonnosti byla na počítači s CPU Intel Core i-5 a GPU Nvidia GF680 GTX. GPU je již hodně vzdálená od současné výkonové špičky, ale pro reálná nasazení v průmyslových podmínkách je toto srovnání užitečné.

Srovnání výkonnosti předchozího GPU algoritmu, nového GPU řešení a podobného kroku, řešeného prostřednictvím více jader CPU.

Srovnání výkonnosti předchozího GPU algoritmu, nového GPU řešení a podobného kroku, řešeného prostřednictvím více jader CPU.

Na výše uvedeném obrázku jsou uvedenu doby vykonávání v nejvýhodnější variantě pro CPU algoritmus, je hledán jen jeden výskyt korelace se vzorem a není vyžadováno žádné natočení či škálování. Výkonový rozestup mezi CPU krokem a předchozím a novým GPU řešením je viditelný, i když nijak dramatický.

Ve všech krocích je hledán tento stejný pattern.

Ve všech krocích je hledán tento stejný pattern.

Testovací obrázek má velikost 800 x 600 pixelů a výše uvedený pattern je hledán v celé jeho ploše. Hledáme-li jediný výskyt vzoru a nepotřebujeme-li rotační ani měřítkovou invarianci, jsou rozdíly ve výkonu mezi jednotlivými algoritmy sice nejmenší, ale i v tomto případě mohou být v některých úlohách velmi důležité. Situace se ale hodně změní, budeme-li hledat více výskytů vzoru a ještě větší rozdíly se objeví při požadavku hledání natočených patternů. Pojďme se podívat, jaké budou rozdíly výkonnosti nyní:

Hledání maximálně deseti výskytů vzorů.

Hledání maximálně deseti výskytů vzorů.

Hledání rozšířeno o natočení v rozsahu +- 15 stupňů.

Hledání rozšířeno o natočení v rozsahu +- 15 stupňů.

V těchto testech již začíná dramaticky narůstat spotřeba času u CPU algoritmu. Masivně paralelní podstata grafických procesorů ukazuje své přednosti. Spotřeba času se u GPU algoritmů s množstvím hledaných výskytů příliš nemění, neboť množství dat, přenášených mezi CPU a GPU pamětí zůstává přibližně stejné. Přibude-li navíc ještě nutnost testování korelací s pootočenými vzorovými obrazy, začíná být tato úloha pro CPU opravdu velikou zátěží. V posledních výsledcích měření je také dobře vidět, jakým přínosem je optimalizace nového GPU řešení při opakovaných průchodech několika shaderů oproti staršímu GPU algoritmu.

Nyní si můžeme prohlédnout výsledky u všech třech srovnávaných kroků. Parametru hledání byly nastaveny shodně a výsledky jsou rovněž dosti podobné. V tomto srovnání se zdají být výsledky nového GPU řešení mírně lepší než u dalších dvou kroků.

Výsledku hledání vzorů u předchozího GPU algoritmu

Výsledku hledání vzorů u předchozího GPU algoritmu

Výsledku hledání vzorů novým GPU krokem

Výsledku hledání vzorů novým GPU krokem

Výsledku hledání vzorů u CPU algoritmu

Výsledku hledání vzorů u CPU algoritmu

Krok gpu_match_monochrome dále zůstává součásti systému VisionLab. Všechny aplikace, kde je tento krok použit tedy budou bez problémů fungovat i nadále. Pouze v paletě kroků grafického editoru již není pro tvorbu nových aplikací nabízen a je nahrazen novým krokem gpu_pattern.

Schopnosti modernizovaného GPU algoritmu mohou být přínosem pro řešení úloh vizuální inspekce.

Roman Cagaš

 
 | O společnosti | Produkty | Podpora | Stažení software | Stažení dokumentů | 
Moravské přístroje, a.s., Masarykova 1148, Zlín-Malenovice, 76302