A Serket egy gépi látással foglalkozó projekt, amely a kamera látóterében levő tárgyakat foltkereső eljárással észleli. A projektet demonstráció céljából fejlesztettük az ipari sertéstenyésztésben gépi látást alkalmazó eredeti Serket termékre építve. A feladat keretében egy sertésfarm makettjére néző kamera segítségével kellett műanyag sertéseket detektálnom, megadva azok irányát és pozícióját.

Mivel eredetileg webes fejlesztőként tevékenykedtem, majd művészeti és technológiai installációkkal foglalkoztam, a projektet megelőzően nem rendelkeztem sok tapasztalattal a gépi látással kapcsolatban. Az időkeret szűk volt, hiszen két hónap állt rendelkezésemre ahhoz, hogy elmélyedjek a gépi látás működésében és kifejlesszek egy működő prototípust. A projekt során szorosan együttműködtem Zsiga Bálint kollégámmal, az ő gépi látással kapcsolatos kiterjedt tudására nagymértékben tudtam hagyatkozni. Bálint és én hasonló úton jutottunk a programozás világába: probléma-alapú megközelítéssel kerestük a megoldásokat aktuálisan megoldandó feladatokra, kikerülve az intézményesített tanulást.

Bár részt vettem néhány programozási kurzuson az egyetemen, az oktatási intézmény, amelyben tanultam, a konstruktivista, probléma-alapú tanuláspedagógiát alkalmazta, amely során a diákok egy nyílt végű problémát kutatással oldanak meg, és a tudás a diákokkal való interakciók során jön létre (Aalborg Egyetem, 2015). Ez a szemlélet az online tudásépítő tevékenységekben is észrevehető, ahol az egyének az érdeklődési köreiknek megfelelő csoportokba tömörülnek.

Az online kódmegosztó platformok és üzenőfalak bárki számára lehetővé teszik a szoftveres projektekkel kapcsolatos tanulást, tudásmegosztást és közreműködést, amelyre mi magunk is nagymértékben támaszkodtunk a Serket fejlesztésekor.

A fejlesztési folyamat során két nyílt forráskódú szoftveres könyvtárat használtunk: a Processinget és az OpenCV-t. A köréjük szerveződő közösségeket nem pénzügyj megfontolások, hanem a tudásmegosztás célja hozza össze. Noha számos szakember fizetett projektekhez használja fel a könyvtárakat, maga a tanácsadás ingyenes, mivel azon a közös törekvésen alapul, hogy a programozást a társadalmi, gazdasági és kulturális háttérre való tekintet nélkül mindenki számára elérhető készséggé kell tenni. Ez a fajta összekapcsolódás azt jelenti, hogy bármilyen esetben, amikor valaki programozást igénylő projektet szeretne megvalósítani, hozzájuthat a számára fontos tudáshoz, és lehetősége van az ötletét egyedül vagy a közösség támogatásával kidolgozni. Ezekben a közösségekben az egyének nem piaci szereplőkként, inkább társas lényekként lépnek kapcsolatba egymással (Gauntlett, 2018).

Hogy szemléltessem, miként működik ez a tanulási megközelítés a gyakorlatban, a következőkben bemutatom a projekt elején használt szoftvert, valamint a közösséget, amely a gépi látás alapjainak megértésében a segítségemre volt. A Processing elsősorban a vizuális művészetek számára létrehozott programozási vázlatfüzet és fejlesztési eszköz, amelyet leggyakrabban szoftverprototípusok készítésére és adatvizualizációra használnak. Bár a végső prototípus nem Processingben futott, a szoftver a fejlesztés első szakaszában igen hasznosnak bizonyult, mivel a foltkereső detektálásra vonatkozó megközelítések vizsgálatakor lehetővé tette az ötletek gyors és egyszerű felvázolását. A Processing Foundation víziója szerint a programozás lehetőségét mindenki számára hozzáférhetővé kell tenni, ezért a szoftvert önkéntesek fejlesztik, és ingyenesen elérhető. A szintaxist oly módon fejlesztik, hogy a nem informatikai háttérrel rendelkező személyek is könnyen megérthessék és rövid idő alatt működőképes vázlatokat tudjanak készíteni (Processing Foundation, 2020). A Processing példáját vizsgálva jól látható, hogy a tudás az egyének közötti interakciók eredményeképpen jön létre, kikerülve az ellenőrző funkciót betöltő kapuőröket és az intézményesített tanulást.

A gépi látás alapjait, mint például a színkövetést és a mozgásérzékelést a Processing közösségétől, azaz a szabadidejükben a tudásukat megosztó kreatív programozóktól tanultam meg. Miután megértettem az alapokat, integráltam egy, kifejezetten a gépi látáshoz kifejlesztett szoftveres könyvtárat, az OpenCV-t, amely a fejlesztési folyamatot gyorsabbá és valamelyest könnyebbé tette. Az OpenCV a nyílt forráskódú gépi látás (open source computer vision) rövidítése. A projekthez a Processingtől eltérően nagy cégek is hozzájárulnak azzal a deklarált céllal, hogy „a gépi látással foglalkozó applikációk számára közös infrastruktúrát biztosítsanak, és felgyorsítsák a gépi érzékelés kereskedelmi termékekben történő alkalmazását” (OpenCV, 2019).

A közösség ugyanakkor továbbra is jelentős szerepet játszik a hiányosságok kimutatásában, a fejlesztésekben és az új funkciók kialakításában. Mivel az OpenCV egy közösség által motivált projekt, számtalan oktatóvideó és kódrészlet érhető el ingyenesen, amelyek minket is segítettek abban, hogy rövid időn belül létre tudjunk hozni egy működő prototípust.

A társadalom szempontjából nézve a nyílt forrás bizonyul a legköltséghatékonyabb megoldásnak, mivel az információt birtokló személyek ingyenesen, pontosabban a kommunikálás költségén osztják meg azt. Az így létrejövő projektek mások számára is elérhetők, továbbfejleszthetők, kiterjeszthetők és személyre szabhatók. Benkler (2006) ezt a jelenséget „hálózati információs gazdaságnak” nevezi, ahol „a hatékony gyártó tevékenységhez szükséges összes forrás az egyéni felhasználók irányítása alatt áll” (p. 99).

Mint korábban említettük, részben a szűk időkorlátból adódóan Bálinttal egy probléma-alapú fejlesztési megközelítést követtünk. A gépi látás témaköre igen szerteágazó, ahhoz, hogy egy adott probléma lehetséges megoldásairól gondolkodni lehessen, szükséges a könyvtár egy bizonyos szintű ismerete.

Bár a Serket mögötti technológia meglehetős kihívást jelentett számunkra és rengeteget kísérletezgettünk, sosem merült fel olyan probléma, amelyet más még ne tapasztalt volna, így a mi feladatunk az volt, hogy felhasználjuk a könyvtárba már korábban integrált algoritmusokat és kövessük az OpenCV közösségétől érkező tanácsokat. Egyáltalán nem használtuk fel az eredeti Serket projekt technológiáját, helyette kifejlesztettük a sajátunkat, kifejezetten a maketthez igazítva. Ez azt jelenti, hogy a fejlesztési folyamatunk döntően a gyors prototípuskészítésen alapult és a kutatási módszerünket is ennek megfelelően választottuk ki. Nem biztos, hogy a megközelítésünk alkalmazható olyan nagyobb projektek esetében, ahol szükséges az adott szakterület alapos ismerete. Ugyanakkor olyan projektekben, ahol mélyebb előzetes tudás nélkül kell az adott területen gyors eredményeket felmutatni, a nyílt forráskódú szoftverek és különösen az azokat körülvevő közösségek jelentik a legmegfelelőbb közeget, ahova tudásépítés és problémamegoldás céljából fordulni lehet.

Felhasznált irodalom

Aalborg Universitet. (2015). Problem Based Learning https://www.aau.dk/digitalAssets/148/148025_pbl-aalborg-model_uk.pdf

Benkler, Y. (2006). The wealth of networks: how social production transforms markets and freedom. New Haven, CT: Yale University Press.

Gauntlett, D. (2018). Making is Connecting: the social power of creativity, from craft and knitting to digital everything (2nd ed.). Cambridge: Polity.

OpenCV. (2019). https://opencv.org/about [utolsó megtekintés időpontja: 2020. január 23.]

Processing Foundation. (2020). [utolsó megtekintés időpontja: 2020. január 23.] https://processingfoundation.org/