1 / 20

Vzporedna izvedba algoritmov računalniškega vida

Vzporedna izvedba algoritmov računalniškega vida. Vsebina. Računalniški vid Houghova transformacija Vzporedna izvedba Houghove transformacije Vzporedni računalnik (BEOWULF gruča) Porazdeljen procesni prostor (BPROC) Porazdeljeno računanje Houghove transformacije. d 2. . d 3. d 1.

jabari
Download Presentation

Vzporedna izvedba algoritmov računalniškega vida

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Vzporedna izvedba algoritmov računalniškega vida janez.pers@fe.uni-lj.si

  2. Vsebina • Računalniški vid • Houghova transformacija • Vzporedna izvedba Houghove transformacije • Vzporedni računalnik (BEOWULF gruča) • Porazdeljen procesni prostor (BPROC) • Porazdeljeno računanje Houghove transformacije

  3. d2  d3 d1 Računalniški vid • Cilj: simbolični opis slike. • Definicija “opisa” je odvisna od namena uporabe.

  4. Predobdelava slike • Cilj: Izboljšanje kvalitete. • Primer: filtriranje šuma.

  5. Obdelava slike • Cilj: zmanjšanje količine informacije. • Primeri: iskanje robov, binarizacija.

  6. Iskanje simboličnega opisa • Cilj: izračun parametrov elementov na sliki, ki so osnova za meritve. • Primer: robovi - premice.

  7. Houghova transformacija • Ideja: poskusimo poiskati *vse* možne premice, ki se lahko pojavijo na določeni sliki. • “Brute force” metoda, računska zahtevnost je temu primerna: • 512*512 slikovnih elementov • Pri zahtevani natančnosti 1 stopinje lahko skozi vsak element potegnemo 180 premic. • Preizkušamo torej 512*512*180 = 47,185,920 (47 miljonov!) hipotez. • Prednost: ne rabimo vnaprejšnjega znanja o sliki.

  8. Houghova transformacija • Izvedba: vzpostavimo polje akumulatorjev, v katerem zbiramo “glasove” za posamezno kombinacijo parametrov k in n premice y=kx+npri tistih točkah, ki imajo vrednost 1. • Primer: (narišemo le 4 premice/točko) y • V tem primeru je največ glasov dobila premicay=2 (k=0,n=2), saj samo ta poteka skozi vse točke z vrednostjo 1. x

  9. Houghova transformacija • Problem: kako zapisati navpične in vodoravne premice v parametričnem prostoru? • Izberemo zapis r=xcos()+ysin() • Glede na zahtevano natančnost za r in izberemo dimenzije polja akumulatorjev (v našem primeru kar 512*512) • Preiščemo vso sliko in v akumulatorje sproti prištevamo sivinske vrednosti slikovnih točk za vse možne r in. • Poiščemo maksimume v polju akumulatorjev, njihove pozicije nam dajo r in premic.

  10. Zaporedna izvedba HT • Algoritem/računanje:for (y=0; y<512; y++){ for (x=0; x<512; x++) { for ( = min;  < max;  ++) { r=x*cos()+y*sin(); akum[r][]=akum[r][]+slika[x][y]; }; };};

  11. Zaporedna izvedba HT • Program za HT presnamite iz http://vision.fe.uni-lj.si/classes/VS/hough • Odpakirajte: tar -zxvf hough.tar.gz • Prevedite: gcc houghseq.c -o houghseq -lm • Poženite: ./houghseq demo.pgm seq.pgm • Datoteke: • houghseq.c - glavni del programa • hough.c - izračun transformacije • pgmio.c - branje/pisanje PGM datotek • *.pgm - demo slike, pogledate jih z xloadimage slika.pgm

  12. Vzporedna izvedba HT • Ideja: vsoto v akumulatorju lahko računamo v poljubnem zaporedju. • Vhodno sliko razdelimo na pasove (na primer y=0..127, y=128..255, itd.) • Izvedemo transformacijo vsakega dela slike posebej v ločeno polje akumulatorjev (ki je še vedno dimenzij 512*512!) • Na koncu delne akumulatorje (delne vsote) seštejemo v glavni akumulator. • To je primer vhodne podatkovne dekompozicije.

  13. Vzporedna izvedba HT • Algoritem/računanje v vsakem procesu:for (y=y1; y<y2; y++){ for (x=0; x<512; x++) { for ( = min;  < max;  ++) { r=x*cos()+y*sin(); akum[r][]=akum[r][]+slika[x][y]; }; };};

  14. Vzporedna izvedba HT • Potrebna je komunikacija med procesi: • Deljen pomnilnik preko katerega procesi-otroci prenesejo delne rezultate (svoja polja akumulatorjev) roditelju. • Niz semaforjev za nadzor dostopa do deljenega pomnilnika. • Prevedite: gcc houghpar.c -o houghpar -lm • Poženite: ./houghpar demo.pgm par.pgm • Je takšna izvedba transformacije hitrejša? • Zakaj?

  15. Vzporedni računalnik • 1994, Thomas Sterling & Don Becker • vzdevek BEOWULF • 16 računalnikov 486 DX4 • Vsak računalnik predstavlja “vozlišče” (node) • Multiračunalniški sistem • Krajevno porazdeljen pomnilnik • Povezava prek krajevnega omrežja • Beowulf je le oznaka za takšen sistem, način realizacije ni standardiziran. • Dva glavna problema sta: • Upravljanje procesov • Komunikacija med procesi

  16. Upravljanje procesov • Enostavni, vendar nepraktični načini • rlogin + školjka na vsakem od računalnikov • rexec (remote exec) • Pomanjkljivosti: • Program mora biti prisoten na vsakem od računalnikov-vozlišč. • Uporabniki morajo imeti uporabniška imena na vsakem od vozlišč. • Procesi niso v sorodu. • Težavna administracija, nepregledno izvajanje programov.

  17. Upravljanje procesov • Beowulf Distributed Process Space (BPROC) • Porazdeljen procesni prostor • Procese je možno med delovanjem (!) premikati med računalniki. • PID procesov so navzven enaki ne glede na katerem računalniku se izvajajo. • Procesi so prisotni v tabeli procesov glavnega računalnika, tudi če se izvajajo drugje. • Minimalne prilagoditve vzporednih programov. • Bproc zajema: • Obsežne popravke jedra (kernel) • module sistemskega jedra • bproc demone (bpslave, bpmaster).

  18. HT na Beowulf računalniku • Minimalne spremembe paralelne verzije programa houghpar.c: • #include<sys/bproc.h> • bproc_move(številka_vozlišča) po izvedenem klicu fork(), preden se začne računanje • bproc_move(-1) po izvedenem računanju, pred začetkom sinhronizacije podatkov. • Pomembno: procesi ne morejo komunicirati na standardne načine (deljen pomnilnik, semaforji, cevi…) dokler se ne vrnejo na isti fizični računalnik (bproc_move(-1))!

  19. HT na Beowulf računalniku • Oglejte si houghpar_beo.c in nastavite številke vozlišč pri bproc_move()! • Prevedite:gcc houghpar_beo.c -o houghpar_beo -lm -lbproc • Poženite: ./houghpar_beo demo.pgm beo.pgm • Z ostalimi se dogovorite da eksperimentov ne boste pognali vsi naenkrat! • Opazujte procese z orodjem top/ktop • zaseden pomnilnik, proc. čas, itd. Kaj opazite? • Poglejte, kako so vaši procesi vidni na tujih računalnikih.

  20. V razmislek • Je takšen program hitrejši? Zakaj? • Zakaj nas ni nikoli zanimala sinhronizacija dostopa do vhodnih podatkov? • Od kje zakasnitev pred začetkom računanja? • Kaj se takrat dogaja? • Bi bilo smiselno program drobiti na še večje število procesov (npr. 64)? Zakaj ? • Oglejte si sliko akumulatorja (izhodne .pgm datoteke) in najdite maksimume. Koliko jih je?

More Related