Kérdés:
A málna Pi 2-n az OpenCV-vel végzett multiprocesszió kihasználása
AtoM_84
2015-03-18 14:10:02 UTC
view on stackexchange narkive permalink

Az OpenCV-t korábban Raspberry-n használtam különböző projektekhez (arcfelismerés, szinkronkamera, tűző stb.). Vettem egy málna Pi 2-t az új hardverkonfiguráció előnyeivel.

A 4 magot azonban nem tudtam felhasználni például képek varrásához. Amikor elvégzem mondjuk 3 kép varrását, X-ben a terhelésmérő adja a terhelés 25% -át (1 mag). Amikor elindítok két összeillesztési szkriptet 2 pár 2 képpel, akkor is 25% -os terhelést jelent a CPU. az OpenCV alapfunkciói közül? Lehetséges-e például a Python alkalmazásával használni azokat a könyvtárakat, amelyek több málna, de a Raspberry Pi 2 különböző magjain lehetővé teszik a többprocesszoros feldolgozást?

Ha teljesen különálló folyamatokra hivatkozol, amelyek úgy hangzanak, mint te, akkor képesnek kell lenned futtatni őket mind a négy mag maximalizálásához *, kivéve, ha * van valamilyen jelentős I / O szűk keresztmetszet mindannyian. Nem tudok elég sokat az openCV-ről ahhoz, hogy elmondjam, mi lehet ez - használja-e ehhez a GPU-t? Ellenőrizhet valamilyen más eszközt (pl. "Htop"), hogy megerősítse, hogy a rendszer valóban nem használja ki a legtöbbet.
Kettő válaszokat:
codingjoe
2015-08-20 20:29:05 UTC
view on stackexchange narkive permalink

Nézze meg a többprocesszoros könyvtárat. Ha vannak olyan programrészei, amelyeket párhuzamosan futtathat, például több kép feldolgozása és arcok észlelése, egyszerűen meghatározhat egy folyamatot Pool . Alapértelmezés szerint egy készlet annyi folyamatot indít el egyidejűleg, ahány processzorod van. Megadhatja a készlet méretét és 4-re is javíthatja.

pl .:

  a többprocesszoros importkészletből a glob import import globdef Detect_face (fájlnév): ... if __név__ = = '__main__': a Pool () néven p-ként: p.map (Detectface, glob ('*. jpg'))  

A sherlock -ot is ki kell fizetnie , példa-gyűjtemény a többprocesszoros és az opencv kombinálásáról.

Korlátozások:

Az OpenCV algoritmusai önmagukban nem könnyen futtathatók több folyamatban. Mivel az OpenCV C ++ nyelven van megírva, végrehajtásuk nagymértékben függ végrehajtásuktól.

vsz
2015-10-28 19:04:27 UTC
view on stackexchange narkive permalink

Ha az OpenCV könyvtárat úgy fordítja le, hogy az OpenMP opció aktív a cmake fájlban (alapértelmezés szerint ki van kapcsolva), akkor sok algoritmus automatikusan több magot fog használni, anélkül, hogy bármit is módosítania kellene a forrásban kód. Esetemben a teljesítmény akár 4,5-szeres növekedését sikerült elérnem. Igen, a Raspberry Pi 2 csak 4 maggal rendelkezik, de ha nagy számgörgetést végez, a feladatok megfelelő elosztása jelentősen lerövidítheti a várakozási időt. Rövidebb algoritmusok esetén ne számítson sokkal többet a háromszoros gyorsításra.

Vigyázzon, az OpenMP könyvtárak fordításakor a libpng csomagban van egy hiba. Ha a make hibával szünetel, mert a libpng nem találja meg a zlib -t, akkor gyors és piszkos megoldás lehet, hogy csak átmásolja a zlib forrását a a libpng forrásmappát (vagy kapcsolja ki a libpng elemet, ha nincs rá szüksége).



Ezt a kérdést és választ automatikusan lefordították angol nyelvről.Az eredeti tartalom elérhető a stackexchange oldalon, amelyet köszönünk az cc by-sa 3.0 licencért, amely alatt terjesztik.
Loading...