Masivně paralelní zpracování obrazu v prostředí systému VisionLab. 25. 9. 2013 Liberec Roman Cagaš, rc@mii.cz



Podobné dokumenty
PŘEDSTAVENÍ GRAFICKÉHO PROCESORU NVIDIA G200

Co je grafický akcelerátor

Geekovo Minimum. Počítačové Grafiky. Nadpis 1 Nadpis 2 Nadpis 3. Božetěchova 2, Brno

Vytváříme dobré aplikace vykreslovače grafiky v programovém prostředí Control Web

Ekosystém spolupracujícího programového a technického vybavení pro vysoce efektivní řešení zakázkových systémů v mnoha oblastech automatizace

Fakulta informačních technologíı. IZG cvičení 6. - Zobrazování 3D scény a základy OpenGL 1 / 38

Nvidia CUDA Paralelní programování na GPU

Grafické karty. Autor: Kulhánek Zdeněk

Středoškolská technika SCI-Lab

DUM č. 14 v sadě. 31. Inf-7 Technické vybavení počítačů

Systémy pro sběr a přenos dat

GPGPU Aplikace GPGPU. Obecné výpočty na grafických procesorech. Jan Vacata

Přehled paralelních architektur. Dělení paralelních architektur Flynnova taxonomie Komunikační modely paralelních architektur

GRAFICKÉ ADAPTÉRY. Pracovní režimy grafické karty

Přednášky o výpočetní technice. Hardware teoreticky. Adam Dominec 2010

Přednáška 1. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

Nástroje pro efektivní digitalizaci výroby. Amper 2019, Moravské přístroje a.s., Roman Cagaš

Pokročilé architektury počítačů

Semestrální práce z předmětu Speciální číslicové systémy X31SCS

GPU A CUDA HISTORIE GPU CO JE GPGPU? NVIDIA CUDA

Profilová část maturitní zkoušky 2017/2018

G R A F I C K É K A R T Y

DataCam Průmyslové CCD kamery DataLight Osvětlovací jednotky pro průmyslové kamery

Analýza a zpracování digitálního obrazu

Hierarchický model Josef Pelikán CGG MFF UK Praha. 1 / 16

Jádrem systému je modul GSFrameWork, který je poskytovatelem zejména těchto služeb:

Architektura grafických ip pro Xbox 360 a PS3

Paralelní výpočty ve finančnictví

Úvod do GPGPU J. Sloup, I. Šimeček

Úvod do problematiky. Význam počítačové grafiky. Trochu z historie. Využití počítačové grafiky

Obecné výpočty na GPU v jazyce CUDA. Jiří Filipovič

Základy informatiky. 2. Přednáška HW. Lenka Carr Motyčková. February 22, 2011 Základy informatiky 2

Load Balancer. RNDr. Václav Petříček. Lukáš Hlůže Václav Nidrle Přemysl Volf Stanislav Živný

Grafické karty s podporou DirectX 11 Quynh Trang Dao Dao007

Operační systémy. Přednáška 1: Úvod

Základní informace. Operační systém (OS)

Představení a srovnání grafických procesorů ATI RV770 a NVIDIA G(T)200

Profilová část maturitní zkoušky 2013/2014

SADA VY_32_INOVACE_PP1

Wonderware Information Server 4.0 Co je nového

Vzdálený přístup k počítačům

Identifikátor materiálu: ICT-3-03

Administrační systém ústředen MD-110

OPS Paralelní systémy, seznam pojmů, klasifikace

Témata profilové maturitní zkoušky

Procesory nvidia Tegra

SUPERPOČÍTAČE DANIEL LANGR ČVUT FIT / VZLÚ

Procesy a vlákna (Processes and Threads)

Vzdělávací obsah vyučovacího předmětu

Průmyslové roboty a manipulátory, průmyslové počítače, PLC, řídicí systémy a operátorské panely

Kompaktní procesní stanice

VÝUKOVÝ MATERIÁL. 3. ročník učebního oboru Elektrikář Přílohy. bez příloh. Identifikační údaje školy

Osobní počítač. Zpracoval: ict Aktualizace:

Textury v real-time grafice Josef Pelikán, MFF UK Praha Josef.Pelikan@mff.cuni.cz

Základy počítačových sítí Model počítačové sítě, protokoly

Control Web 5. 4 Podpora otevřených standardů. 1 Co je Control Web? Schopnost práce v distribuovaném prostředí. 2 Podpora hardware

Programovatelné automaty SIMATIC S7 a S5

Inovace výuky prostřednictvím ICT v SPŠ Zlín, CZ.1.07/1.5.00/ Vzdělávání v informačních a komunikačních technologií

Optika v počítačovém vidění MPOV

Pokročilé architektury počítačů

Disková pole (RAID) 1

Paralelní architektury se sdílenou pamětí typu NUMA. NUMA architektury

HW počítače co se nalézá uvnitř počítačové skříně

, Brno Připravil: Ing. Jaromír Landa. Postprocessing videa

Informatika. tercie. Mgr. Kateřina Macová 1

GRAFICKÉ KARTY. Pracovní režimy grafické karty. Základní blokové schéma grafické karty

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

G4 CCD kamera. Uživatelská příručka

Počítač jako elektronické, Číslicové zařízení

architektura mostů severní / jižní most (angl. north / south bridge) 1. Čipové sady s architekturou severního / jižního mostu

KONTROLA PŘESNOSTI VÝROBY S VYUŽITÍM MATLABU

Přednáška 3. Opakovače,směrovače, mosty a síťové brány

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

verze GORDIC spol. s r. o.

Zpracování obrazu v FPGA. Leoš Maršálek ATEsystem s.r.o.

Hospodářská informatika

VZOROVÝ STIPENDIJNÍ TEST Z INFORMAČNÍCH TECHNOLOGIÍ

Kompaktní procesní stanice

Principy operačních systémů. Lekce 5: Multiprogramming a multitasking, vlákna

Xbox 360 Cpu = IBM Xenon

Mapový server Marushka. Technický profil

Programové prostředí pro digitalizaci průmyslu. Control Web 8. Amper Roman Cagaš,

Controlweb. Úvod. Specifikace systému

Surfels: Surface Elements as Rendering Primitives

Vypracoval: Ing. Antonín POPELKA. Datum: 30. června Revize 01

Metoda sledování paprsku na grafických akcelerátorech. Martin Zlatuška

TCP-Wedge ZDARMA. Přidává podporu TCP/IP: Sběr dat z adres portu IP na libovolné síti TCP/IP - ethernet / internet.

ADMINISTRACE POČÍTAČOVÝCH SÍTÍ. OPC Server

Profilová část maturitní zkoušky 2014/2015

Představení procesorů od firmy Tilera a jejich architektura

Paralelní programování

Virtualizace. Lukáš Krahulec, KRA556

Pokročilé architektury počítačů

2015 GEOVAP, spol. s r. o. Všechna práva vyhrazena.

MATLABLINK - VZDÁLENÉ OVLÁDÁNÍ A MONITOROVÁNÍ TECHNOLOGICKÝCH PROCESŮ

Úvod do problematiky. Význam počítačové grafiky. Trochu z historie. Využití počítačové grafiky

Data x Informace x Znalosti

Flow-X PRŮTOKOMĚR. On-line datový list

DODATEČNÉ INFORMACE K ZADÁVACÍ DOKUMENTACI č. 3

Transkript:

Masivně paralelní zpracování obrazu v prostředí systému VisionLab 25. 9. 2013 Liberec Roman Cagaš, rc@mii.cz

Moravské přístroje a.s. - oblasti vývoje a výroby Prostředí pro vývoj aplikací Software pro strojové vidění Software pro vědecké kamery Speciální a zakázkový software DataLab Speciální technika DataCam DataLight Vědecké kamery

Ekosystém produktů Velmi efektivní systém pro produkci malosériových a kusových zařízení Jednotné programové prostředí Distribuovaný systém v síťovém prostředí Databázová konektivita, webové technologie, vizualizace, virtuální realita, strojové vidění, přímé řízení strojů, OPC a mnoho dalšího

RAW data digitální kamery Vysoce kvalitní obraz Standardní i odolné provedení Připojení přes USB 2.0 Objektivy standardů C, CS, bajonet Canon, bajonet Nikon DataCam

DataCam - parametry

DataCam Traffic Kamera v klimaticky odolném provedení Vysoká citlivost v blízkém IR spektru Vestavěný IR osvětlovač Funkce čtení registračních značek automobilů je snadno k dispozici v podobě jediného kroku strojového vidění systému VisionLab

Diodové osvětlovací jednotky přímo řiditelné kamerami Zadní osvětlovače, kruhové souosé osvětlovače, reflektory, osvětlovače v temném poli Volitelná barva světla, směrovost a typy difuzorů Osvětlovače s trvalým svitem i zábleskové DataLight

Control Web komponenty Komponenty virtuálních přístrojů Komponenty ovladačů S vlastnických protokoly Se standardními protokoly Modbus, Modbus TCP SMS HTTP klient Modem, radiomodem Pro standardní sw API OPC server, klient Univerzální ovladače TCPIP packet Serial text Komponenty kroků strojového vidění Komunikace mezi jádry systému Sdílení a synchronizace dat SQL, ODBC OCL scripting nad komponentami Multiprocessing Masivně paralelní GPU processing Atd. atp.

Control Web 3D vykreslovací systém Celý systém je dynamicky zaváděn až v případě jeho potřeby Architektura klient server Vykreslovací systém v separátním threadu minimální ovlivňování běhu aplikačního programu OpenGL + GLSL shadery

Control Web editace 3D scény In-place editor Samostatný editor Import 3D modelů ve formátech OBJ, 3DS a DXF Postprocessing obrazu atd. atp.

Control Web vykreslovací server bumpmapy, stíny, zrcadlení, mlha, environment, postprocessing

VisionLab systém strojového vidění Sada komponent instalovatelná do prostředí systému Control Web Grafický editor nad kamerovými virtuálními přístroji Algoritmy strojového vidění jsou zařazeny do aplikačního programu v prostředí systému Control Web

GPU systémech strojového vidění GPU je samozřejmou součástí veškerých současných počítačů, tabletů, telefonů CPU -> jednotky výpočetních jader GPU -> stovky jader, široké sběrnice, vysoká datová propustnost VisionLab automatický multithreading na více jádrech CPU + kroky v GPU

např. GeForce GTX 680 Počet tranzistorů Počet výpočetních jader 1536 Hodinové frekvence GPU Výkon přístupu k texturám Šířka sběrnice grafické paměti Datová propustnost Výpočetní výkon (single precision) 3.5 miliardy 1006 MHz 128.8 miliard pixelů / sec 384 bitů 192.2 GB / sec 3.79 TFLOPS Není škoda to nevyužít?

Tradiční architektura zpracování grafických dat

Jazyky pro programování shaderů Cg ( NVIDIA pro DirectX i OpenGL) HLSL High-Level Shading Language (Microsoft DirectX) GLSL OpenGL Shading Language Prostředí pro GPU computing CUDA ( NVIDIA ) OpenCL OpenGL + rozšíření pro pro sdílení a přenos bloků dat

OpenGL pravděpodobně nejsilnější standard do budoucna

Prostředky GPU Programovatelné procesory v uniformní architektuře mohou vystupovat jako vertexové, fragmentové a geometrické. Při zpracování obrazu z kamery využijeme tradiční funkce vertexových a fragmentových shaderů: Vertexový shader je spuštěn pro každý vertex, vykreslujeme-li např. trojúhelník, je spušten celkem třikrát. Jeho výsledkem je grafický element, který je předán do rasterizeru. Fragmentový shader je spoušten výstupem rasterizeru pro každý fragment, tedy pro každý obrazový bod vykreslované scény. Rasterizer prostřednictvím interpolace vytváří jednotlivé fragmenty z obrazových elementů. Základním obrazovým elementem je trojúhelník, definovaný třemi vertexy. V jeho ploše jsou pak rasterizerem interpolovány texturové souřadnice nebo barvy fragmentů. Textury jsou bloky grafické paměti, které mohou být čteny fragmentovými procesory. Data z texturových objektů lze pouze číst, zápis do nich není fragmentovými shadery možný. Framebuffer je blok paměti, do které fragmentové procesory zapisují výsledku běhu fragmentových shaderů. Data uvnitř framebufferu nelze fragmentovým procesorem číst a dokonce každý s paralelně běžících fragmentových shaderů může zapsat jen do jediné pozice v bufferu, která odpovídá jeho instanci v rámci plochy obrazu.

Využití GPU v systému strojového vidění VisionLab GPU umožňuje realizovat takové algoritmy, které by jinak byly v akceptovatelném čase nerealizovatelné Virtuální přístroj gl_camera: Využívá vykreslovací stroj systému Control Web Vykreslovací stroj pracuje ve vlastním threadu Vykreslovací stroj používá architekturou klientserver

Pokročilá adaptivní interpolace barevné mozaiky Víceprůchodový algoritmus s float-point výpočty

Korekce geometrických zkreslení obrazu tvorba výsledného obrazu řešena s vysokou subpixelovou přesností programem fragmentového shaderu, který poskytuje zaručeně kvalitní a stabilní výsledky na veškerých GPU

Obrazové filtry Obrazové filtry vypadají na první pohled jako optimální úlohy pro řešení v GPU. Často tomu tak je, ale nemusí to platit univerzálně. Potíž může být v tom, že řada jednoduchých kernelových filtrů nemá příliš vysokou výpočetní intenzitu (a současné vícejádrové CPU také nepočítají až tak zoufale pomalu). Režie přenosu obrazových dat mezi systémovou a grafickou pamětí pak může i stonásobně vyšší rychlost výpočtů kernelu v GPU oproti CPU znehodnotit. Situace se ale dramaticky změní v případě filtrů s nutností složitějších výpočtů v plovoucí řádové čárce, jako je tomu např. u transformací barevných prostorů, řešení saturační matic, šumových filtrů atd. Pak nám může využití GPU zrychlit tyto kroky až o dva řády.

Obrazové filtry Anisotropický šumový filtr využívá výkonu GPU ve výpočtech s plovoucí řádovou čárkou

Obrazové filtry Lokálně prahovací filtr využívá mohutného datového toku GPU při čtení pixelů textur

Transformační kódování Dvojrozměrná Fourierova transformace obrazu je natolik výpočetně intenzivní, že v reálném čase není jinak než s využitím GPU realizovatelná

Další možnosti Existují však i problematické úlohy, kde přínosy GPU nemusejí být takto jasné. Příkladem je např. hledání vzorů realizované prostřednictvím GPU - tento příklad trvá asi 50ms na procesoru G80

API pro kroky systému VisionLab Systém strojového vidění VisionLab poskytuje krokům, které využívají GPU značný prostor. S vykreslovacím jádrem systému Control Web i virtuálním přístrojem gl_camera komunikují jen prostřednictvím velmi jednoduchého povelového rozhraní. Kroky dostanou k dispozici paměťový pixel buffer dané velikosti a formátu pixelů a mohou si zcela samostatně alokovat libovolné prostředky GPU mohou si vytvářet např. vlastní texturové objekty, další frame buffer objekty, samozřejmě mohou načítat a spouštět vlastní shadery atd. Kroky strojového vidění tak mohou využívat veškerá nejnovější rozšíření, které přinášení aktuální grafické ovladače. Tyto možnosti umožňují systému strojového vidění VisionLab stále sledovat poslední vývoj technologií a přinášet tak svým uživatelům vysoký užitek a konkurenční výhodu.

Příklad použití příkazového API při zpracování obrazu v kroku: // begin rendering if (! cw_iproc::cameracallback(callbackhandle, vgltype::commandhigh, (WCHAR *)& vgltype::commandlockrenderingcontextw, sizeof( vgltype::tgpucommanddata ), (ADDRESS)& GPUCommandData ) ) { } wcsncpy( ErrorString, GPUCommandData.ErrorString.a_, ErrorString_HIGH + 1); ok = false; // initialize rendering if (! cw_iproc::cameracallback( CallbackHandle, vgltype::commandhigh, (WCHAR *)& vgltype::commandinitializerenderingw, sizeof( vgltype::tgpucommanddata ), (ADDRESS)& GPUCommandData ) ) { } wcsncpy( ErrorString, GPUCommandData.ErrorString.a_, ErrorString_HIGH + 1); ok = false; // rendering LoadTextureFromBuffer( SourceTexture, GL_TEXTURE0, w, d, bpp, data_addr ); SetSourceDimensions( w, d, bpp ); Render( PRegion ); // copy rendered picture to output frame if (! cw_iproc::cameracallback( CallbackHandle, vgltype::commandhigh, (WCHAR *)& vgltype::commandpicturedatatooutputframew, sizeof( vgltype::tgpucommanddata ), (ADDRESS)& GPUCommandData ) ) { } wcsncpy( ErrorString, GPUCommandData.ErrorString.a_, ErrorString_HIGH + 1); ok = false; // finalize rendering if (! cw_iproc::cameracallback( CallbackHandle, vgltype::commandhigh, (WCHAR *)& vgltype::commandfinalizerenderingw, sizeof( vgltype::tgpucommanddata ), (ADDRESS)& GPUCommandData ) ) { } wcsncpy( ErrorString, GPUCommandData.ErrorString.a_, ErrorString_HIGH + 1); ok = false; // end rendering if (! cw_iproc::cameracallback( CallbackHandle, vgltype::commandhigh, (WCHAR *)& vgltype::commandunlockrenderingcontextw, sizeof( vgltype::tgpucommanddata ), (ADDRESS)& GPUCommandData ) ) { } wcsncpy( ErrorString, GPUCommandData.ErrorString.a_, ErrorString_HIGH + 1); ok = false;

Ať vám vaše systémy strojového vidění spolehlivě fungují a ať se při jejich vývoji příliš nenadřete. Děkuji!