Computer vision: the image as measurement
Mi romlik el a modell előtt — kalibráció, cellaméret, csempézés —, milyen feladattípusok vannak és mit jelent a címkéjük az adatban, és mit mérünk valójában, amikor egy képi modellt jónak mondunk.
The semester
Három hiba, amelyik a modell előtt keletkezik
A skála a távolsággal arányos. Aki síkon kívül kalibrál, arányos méretbeli hibát kap.
A méretbecslés legegyszerűbb képlete: a tárgy valódi mérete a képen mért képpontszám szorozva a skálatényezővel. A skálatényező viszont a kalibrálási TÁVOLSÁGTÓL függ — és ha a tárgy nem ott van, ahol a kalibráló etalon volt, a hiba egyenesen arányos az elcsúszással. A második képlet ezt mondja ki: öt százalékkal távolabb kalibrálva öt százalék méretbeli hiba. A demó ezt ellenőrzi is: a mért görbe és a zárt alak eltérése két a mínusz tizenhatodikon — vagyis a számábrázolás pontossága.
A `cv-calibration` demó esete: 5 %-kal távolabb kalibrálva.
h=100 * (2,1 / 2 - 1)=5% méretbeli hiba
Húzd a csúszkát, és nézd, mi mozdul.
Az ábra betöltése…
Itt a teljes mérés. A bal oldali panel a távolsághibát mutatja: egyenes arány, és a mért pontok a zárt alakon ülnek. A jobb oldali a lencsetorzítás a képmező sugara mentén — és ez nem lineáris, hanem a szélek felé gyorsuló. Ezért van az, hogy a középen mért tárgy pontos, a sarokban mért pedig tíz százalékkal téved. Ha a mérési feladatod méretbecslés, akkor vagy torzításkorrekciót kell futtatnod, vagy a képmező közepére kell tenni a tárgyat.
A cella betöltése…
A cella itt fut. A csavar a torzítási együttható: erősítsd mínusz nulla nulla nyolcra, és nézd meg, mennyit visz el a képmező széle. Ebből megtudod, hogy a saját objektíveddel mekkora képmezőrészt szabad mérésre használni — és ez a szám a projekt első oldalára való.
A hiba nem a tábla méretétől függ, hanem a KERÜLET/TERÜLET aránytól.
A második hiba a cellaméret. Egy műholdas vagy drónos rács celláinak egy része a táblaszélen ül: félig tábla, félig út vagy árok. Ezek a keverékképpontok, és az átlagot LEFELÉ húzzák, mert a táblán kívüli érték kisebb. A demó ezt két táblaalakon mérte meg, azonos területtel. A zömök táblán harminc méteres cellánál a képpontok tizennégy egész egy százaléka kevert. A keskeny táblán ugyanez sokkal rosszabb — mert nem a terület számít, hanem a kerület per terület arány.
A hiba a kevert hányad és a kontraszt szorzata. Mindkettő csökkenthető, de máshogy.
A gyógymód egyszerű, és a képletből következik. Ha a határt egy cellányit BEFELÉ húzzuk, akkor a kevert cellák kiesnek a számításból. Az ár az, hogy elveszítünk egy cellányi sávot a tábla szélén — vagyis területet cserélünk pontosságra. A demó megmérte: negatív puffer nélkül harminc méteres cellánál az átlaghiba mínusz nulla nulla két NDVI-egység, pufferrel viszont nulla, négy tizedesjegyig. A torzítás nem csökken — ELTŰNIK.
Az ábra betöltése…
A teljes mérés. Nézd meg a két táblaalak görbéit egymás mellett: azonos területnél a keskeny tábla végig rosszabb, és a különbség a cellamérettel nő. És figyeld meg a területhiba oszlopát is — ott van egy tanulságos szabálytalanság: ahol a tábla szélessége éppen egész számú cella, ott a hiba kisebb. Ez nem zaj, hanem a rács és a tábla illeszkedése, és pontosan ezért átlagol a demó több rácseltolásra.
A cella betöltése…
A cella itt fut. Érdemes a saját tábláid alakjával végigszámolni: a kerület és a terület egy térinformatikai fájlból kiolvasható, és onnantól a képlet megmondja, mekkora cellaméretnél mennyi a várható torzítás. Ez az a fajta számítás, amit érdemes egyszer megcsinálni, mielőtt drága felbontást vásárolunk.
800 valódi objektum. Átfedés nélkül 815, elegendő átfedéssel pontosan 800.
A harmadik hiba a csempézés. A nagy felvételt darabokra vágjuk, mert egyben nem fér a memóriába — és a csempék határán álló objektumok vagy kettévágódnak, vagy mindkét csempén megjelennek. A demó nyolcszáz objektumot tett egy kétezerszer kétezres képre, és megmérte, mennyit számol a csempézés. Átfedés nélkül nyolcszáztizenötöt. Az átfedés növelésével a hiba csökken — de csak akkor, ha az átfedés legalább akkora, mint az objektum ÁTMÉRŐJE.
Az ábra betöltése…
A teljes görbe. A két sorozat közti rés az, amit az összevonás megtakarít. Az objektum sugara hét képpont, tehát az átmérője tizennégy — és nézd meg, hol találja el a pontos darabszámot az összevonásos sorozat: pontosan tizennégynél. Ez nem véletlen egybeesés, hanem a szabály: az átfedés legyen legalább akkora, mint a legnagyobb objektum átmérője.
A cella betöltése…
A cella itt fut. Ez a demó azért fontos, mert a hiba itt nem a modellben van: a detektálás TÖKÉLETES, minden objektumot megtalál. A darabszám mégis téved, pusztán a feldarabolástól. Ez a modul egyik visszatérő gondolata — a feldolgozási lánc hibája nem a modell hibája, és nem is ott javítható.
A modul eszközeit is érdemes egészben látni. A lánc hét lépés, és a modell csak az ötödik. Ez nem stílus: a hiba nagy része az első négyben keletkezik, és ott is kell megjavítani. Felvétel, georeferálás, előfeldolgozás, címkézés, modell, futtatás, mérce. Figyeld meg, hogy a modell két oldalán is van munka — és hogy a lánc a MÉRCÉVEL ér véget, nem a modellel.
Egy drónos számlálás rendszeresen három százalékkal kevesebbet mutat, mint a kézi számlálás. A detektáló modell F1-értéke 0,95. Mi az első, amit megnézel?
Egy drónos számlálás rendszeresen három százalékkal kevesebbet mutat, mint a kézi számlálás. A detektáló modell F1-értéke 0,95. Mi az első, amit megnézel?
a kép széle felé gyorsuló geometriai torzítás; a képmező felénél 2,6 %, a sarokban 10,5 % méretbeli hiba
Az első blokk fogalmai. Mindhárom a képalkotásról szól, nem a modellről — és mind a három a modell előtt dől el.
A feladattípust a CÍMKE alakja adja, nem a modell
Amikor a modellmérőszám szép, a feladaté pedig nem
Alulról felfelé nő a címke felbontása, és vele a címkézés ára. Legalul a képszintű címke: egy szó az egész képre. Fölötte a folytonos szám ugyanoda. Aztán a doboz objektumonként, aztán a képpontonkénti osztály, aztán a képpontonkénti EGYED. A kulcspont külön ág: nem több terület, hanem megnevezett pontok. És legfölül a követés, ami időben is összeköt. A lényeg a nyíl iránya: durvább címkéből a finomabb kérdés NEM válaszolható meg. Ez a címkefelbontás felső korlátja, és ezt a projekt legelején kell eldönteni.
Két szorzás, két kivonás, egy küszöb. Déli fényen 93,3 % — ez az alapvonal.
Mielőtt bármilyen hálóról beszélnénk: a zöldtöbblet-index három szorzás és két kivonás. Kétszer a zöld csatorna, mínusz a vörös, mínusz a kék. Erre egy küszöb, és kész a gyomfelismerés. A demó szerint ez déli fényen kilencvenhárom egész három százalékot ad. Ez az alapvonal — és ha a hálód ezt nem veri meg, akkor a háló nem hoz semmit. A második képlet a javítás: ha a csatornák összegére normálunk, a képlet a megvilágítás erősségétől függetlenné válik.
| feladat | mi van a címkefájlban | mi a mérce |
|---|---|---|
| képosztályozás | képazonosító + egy osztálynév; egyetlen szöveges oszlop | pontosság, F₁, ROC-AUC — osztályonként, ha kiegyensúlyozatlan |
| képi regresszió | képazonosító + egy szám | MAE, RMSE, R² — ugyanúgy, mint táblázatos adaton |
| objektumdetektálás | objektumonként (osztály, x, y, szélesség, magasság), normálva vagy képpontban | mAP IoU-küszöbön (0,5 vagy 0,5–0,95), precizitás és fedés méretsávonként |
| szemantikus szegmentálás | osztálytérkép: a képpel azonos méretű egész értékű raszter | IoU vagy Dice osztályonként, majd átlag (mIoU) |
| példányszegmentálás | egyedenként poligon vagy futáshossz-kódolt (RLE) maszk + osztály | maszk-alapú mAP; darabszámnál külön a darabszámhiba |
| kulcspont-detektálás | objektumonként pontlista (x, y, látható-e) rögzített sorrendben | OKS-alapú mAP; a láthatósági jelző kezelése külön szabály |
| számlálás | darabszám képenként, vagy sűrűségtérkép | a darabszám hibája ÉS annak IRÁNYA — nem a detektálási F₁ |
| objektumkövetés | képkockánként (azonosító, doboz); az azonosító képkockákon át állandó | MOTA és IDF1 külön; a detektálás és az azonosság két különböző hiba |
Ez a blokk legfontosabb táblázata. A középső oszlop az, amit a legtöbb tananyag kihagy: hogy néz ki az adat. Nem elvont — ez az, amit a címkéző eszköz kiír, és amit a betöltőnek olvasnia kell. A jobb oldali oszlop pedig a mérce, és figyeld meg, hogy MINDEGYIK más. Ugyanaz a modell két feladathoz két különböző számot ad, és a kettő nem hasonlítható össze.
Az ábra betöltése…
Itt a teljes mérés. A bal oldali panel a két megvilágítás hisztogramja a nyers indexszel: látszik, hogy a délutáni eloszlás egyben eltolódott, és a rögzített küszöb rossz helyre került. A jobb oldalon ugyanez normálva: a két eloszlás egymásra esik, és ugyanaz a küszöb mindkettőn jó. Ez a modul egyik legfontosabb képe, mert megmutatja, hogy az üzemi romlás gyakran nem a modellben van, hanem egyetlen beállított számban.
Képosztályozásegyetlen osztálycímke a TELJES képre; a modell bármiből dolgozhat, ami a képen van — a háttér is tanulható.
borítottság, beérettség, becsült tömeg. Ugyanaz a szerkezet, más címketípus.
lokalizáció nélkül nincs mire visszakérdezni
A két legolcsóbb címkeforma, és a két legkönnyebben félrevezető. Az ok közös: egyikben sincs lokalizáció, tehát a modell BÁRMIBŐL dolgozhat, ami a képen van. A rozsdás leveleket délután fényképezték, az egészségeseket délelőtt? A modell a fényt tanulja meg, és a teszten is jól teljesít — amíg a teszt ugyanabból a napból van. Ezt a hibát nem a modell mérőszáma mutatja meg, hanem a szétvágás, és ez a következő blokk tárgya.
A cella betöltése…
A cella itt fut. Ez negyven sor numpy, és kilencvenöt százalékot ad. Mielőtt bárki hálót tanít erre a feladatra, ezt le kell futtatnia — mert ez lesz az a szám, amit meg kell verni. És ha a háló kilencvenhat százalékot ad tízezer címkézett képért cserébe, az nem győzelem, hanem költség.
Objektumdetektálásbefoglaló doboz és osztály EGYEDENKÉNT — darabszámhoz elég, területhez durva (a doboz hátteret is tartalmaz). · Szemantikus szegmentálás: képpontonkénti osztály, egyedek nélkül — területarányra pontos, darabszámra alkalmatlan. · Példányszegmentálás: képpontonkénti maszk egyedenként — terület ÉS darabszám, a legdrágább címkézéssel. · A választás a KÉRDÉSBŐL jön: borítottság
A három lokalizáló feladat, és a különbségük egy mondatban. A detektálás dobozt ad: gyors, olcsó, és a darabszámhoz elég. A szemantikus szegmentálás képpontonkénti osztályt ad: TERÜLETRE pontos, de két összeérő levél egyetlen folt — darabszámhoz alkalmatlan. A példányszegmentálás mindkettőt adja, és háromszor-ötször annyi címkézési időbe kerül. A választás tehát nem pontossági kérdés: a feltett kérdés dönti el. Ha a kérdés borítottság, szemantikus kell. Ha darabszám, detektálás. Ha mindkettő, példány.
| megközelítés | mikor elég | mi az ára |
|---|---|---|
| színindex és küszöb (ExG, NDVI) | zöld kontra talaj, borítottság, folthatárok | nulla címke — de a küszöb megvilágításfüggő |
| klasszikus képfeldolgozás (OpenCV) | alak, méret, kontúr, morfológia; kalibrált mérés | nulla címke — de kézi szabályok, és törékeny |
| előretanított detektor finomhangolása | objektumonkénti számlálás, betegségosztályozás | néhány száz–ezer címkézett kép, és videokártya |
| irányítható szegmentálás (SAM-vonal) | maszk pontból vagy dobozból — CÍMKÉZÉST gyorsít | osztálycímkét nem ad: nem tudja, mit rajzolt körbe |
Négy szint, növekvő költséggel. A képlet alapú index ingyen van, és a demónk szerint kilencvenöt százalékot ad — ez az alapvonal. A klasszikus képfeldolgozás akkor jön, ha alakot is kell nézni. Az előretanított detektor finomhangolása akkor, ha az objektumokat egyenként kell megszámolni — és itt már címkézett adat kell. Az irányítható szegmentálás pedig nem osztályozó: címkézést gyorsít. A jobb oldali oszlop a valódi döntés: nem a pontosság, hanem az, mibe kerül.
A Dice és az IoU ugyanazt méri, más skálán. 0,5-ös IoU = 0,67-es Dice — a két szám sosem vethető össze közvetlenül.
Három képlet. Az első az átfedési arány: a metszet osztva az unióval. A második a Dice: kétszeres metszet osztva a két terület összegével — ugyanazt méri, de MEGENGEDŐBB, és a harmadik sor mondja meg, mennyivel. Nulla egész ötös IoU nulla egész hatvanhetes Dice. Ezért nem szabad soha összehasonlítani egy IoU-értéket egy Dice-értékkel — az orvosi és a növényi irodalom Dice-t jelent, a detektálási Ioú-t, és az olvasó észre sem veszi. A negyedik sor az mAP: a precizitás-fedés görbe alatti terület osztályonként, egy IoU-KÜSZÖB mellett. A küszöb kiírása nélkül a szám nem értelmezhető.
11,6 pont esés, és a modell közben nem jelez semmit.
Ugyanez a jelenség egy tanult modellen. A demó egy színalapú osztályozót tanít déli fényen, aztán délutánin teszteli. Az esés tizenegy egész hat százalékpont. És most jön a lényeg: a modell NEM JELEZ hibát. A döntési rés — az, hogy mennyire magabiztos — hetven százalékról ötvenre megy, vagyis nem omlik össze. A modell ugyanolyan magabiztosan mond rosszat. Ezért nem elég a modell kimenetét figyelni: a BEMENET eloszlását kell nézni.
A Dice mindig nagyobb az IoU-nál. A két szám ugyanazt a maszkot írja le — csak más skálán.
d=2 * 0,5 / (1 + 0,5)=0,67Dice
Húzd a csúszkát, és nézd, mi mozdul.
Az ábra betöltése…
A teljes kép. A bal oldalon a két tartomány színeloszlása, a jobb oldalon a pontosság a négy kezeléssel. A tanulság sorrendje itt is fontos: először MÉRD MEG, hogy van-e eltolódás — ehhez nem kell címke, elég a bemenetek eloszlása. Csak utána válassz korrekciót. Aki fordítva csinálja, az vaktában normalizál, és néha ront vele.
Az ábra betöltése…
Itt a mérés. Kétszáz felvétel, közel huszonnégyezer objektum. Az F-egy nulla egész kilencszáztizennyolc — ezt a számot bátran leírná bárki egy jelentésbe. A darabszám mégis átlagosan mínusz öt egész nyolc százalékkal téved, és kétszáz felvételből SZÁZKILENCVENEN lefelé. Ha a hiba véletlen volna, ez a fele lenne. Az ok a méretfüggés: a legkisebb negyedet a detektor hatvannégy egész kilenc százalékban találja meg, a többit kilencvenhét egész kettőben. A téves riasztások ezt részben elfedik, de nem javítják — egy hiányzó kalász helyére nem az kerül, amit tévesen bejelöltünk.
A cella betöltése…
A cella itt fut. A csavar a színhőmérséklet-váltás: erősítsd, és nézd meg, meddig bírja a szürkevilág-korrekció. Az önellenőrzés is a cellában van: az azonos fényen mért kilencvenegy egész egy százalék a felső határ — ha egy korrekció ezt túllépné, valami hibás a mérésben.
A darabszám akkor pontos, ha a fedés és a precizitás EGYENLŐ — nem akkor, ha mindkettő magas.
n=0,89 / 0,95=0,94× a valódi darabszám
Húzd a csúszkát, és nézd, mi mozdul.
Az F1 a két mérőszám közepét méri. A darabszám a HÁNYADOSUKAT.
És itt a modul legfontosabb mérése. Egy detektáló precizitása kilencvennégy egész hét, fedése nyolcvankilenc egész egy, az F1-je nulla egész kilencszáztizennyolc. Ez egy jelentésben kifogástalanul néz ki. A darabszám viszont rendszeresen öt egész nyolc százalékkal kevesebb. És ez nem véletlen szórás: a kétszáz felvételből száznyolcvanban alulszámlál. Ha a hiba véletlen lenne, ez a fele lenne. A képlet megmondja, miért: a darabszám hibája a fedés és a precizitás KÜLÖNBSÉGÉBŐL jön, az F1 viszont a közepüket méri.
Kulcspont-detektálásmegnevezett pontok objektumonként, rögzített sorrendben, láthatósági jelzővel — méret, tartás, irány mérésére. A befoglaló doboz ezeket nem hordozza.
a MOTA összegzi, az IDF1 külön az azonosságot méri
A két feladat, amit agrárban a legritkábban vesznek elő, pedig gyakran ezek a helyesek. A kulcspont akkor kell, ha a kérdés MÉRET, TARTÁS vagy IRÁNY: a kalász hossza a tövétől a csúcsáig, az állat ízületeinek szöge. Ezt a befoglaló doboz nem hordozza — egy ferdén álló kalász doboza nagyobb, mint egy egyenesé, ugyanolyan hossz mellett. A követés pedig akkor, ha a kérdés IDŐBELI: mennyit mozog egy egyed, mennyit eszik, mikor sántít.
A szokásos találatküszöb 0,5. Ez megállapodás, nem tétel — a feladat dönti el, mennyi elég.
Egy detektálás akkor számít találatnak, ha elég jól fedi a valódi objektumot. Az „elég jól” mérőszáma az átfedési arány: a metszet területe osztva az unióéval. Egy és nulla között van, és a szokásos küszöb nulla egész öt. De nézd meg, mit jelent ez: két azonos méretű doboz ötven százalékos átfedéshez körülbelül a szélességük harmadával csúszhat el. Számlálási feladatnál ez elfogadható. Méretbecslésnél nem — ott a doboz pontossága maga az eredmény.
| agrárkérdés | a hozzá tartozó feladat | a gyakori tévedés |
|---|---|---|
| Mekkora a gyomborítottság a táblán? | szemantikus szegmentálás | detektálás: a doboz hátteret is tartalmaz, tehát a területet felülbecsli |
| Hány kalász van a négyzetméteren? | detektálás vagy sűrűségbecslés | szegmentálás: az összeérő kalászok egyetlen folttá olvadnak |
| Beteg-e ez a levél? | képosztályozás | detektálás: fölösleges címkézés, ha a kérdésben nincs „hol” |
| Milyen arányban érett be a tábla? | képi regresszió vagy szemantikus szegmentálás | osztályozás három kategóriára: a folytonos válasz kerekítése információt dob el |
| Mekkorák az egyedi kalászok? | kulcspont | detektálás: a ferde objektum doboza nagyobb, mint a hossza |
| Hány állat és mennyit mozog? | detektálás + követés | képkockánkénti detektálás követés nélkül: a darabszám jó, az egyedi idő nem |
| Mekkora a kártétel foltja és hány folt van? | példányszegmentálás | szemantikus szegmentálás: területet ad, darabszámot nem |
És a záró táblázat: kérdés, feladat, és a leggyakoribb tévedés. A jobb oldali oszlopot olvasd el figyelmesen — mindegyik sor egy valódi projekthiba. A leggyakoribb közülük az első: valaki gyomborítottságot akar mérni, és detektálást tanít, mert az volt kéznél. A doboz viszont hátteret is tartalmaz, tehát a területet rendszeresen felülbecsli — és ez a hiba nem véletlen, hanem irányított.
Az ábra betöltése…
A teljes mérés. A bal oldali panel a darabszám-hiba eloszlása kétszáz felvételen: nézd meg, hogy az egész eloszlás a nulla BAL oldalán ül. Ez a rendszeres torzítás képe. A jobb oldalon a fedés méret szerint — innen jön a magyarázat. A tanulság: ha a feladat számlálás, akkor a jelentésbe a DARABSZÁM hibája való, nem az F1. A modellmérőszám eszköz; a mérce a feladaté.
A cella betöltése…
A cella itt fut. Ezt a mérést érdemes a saját projektedre is megcsinálni: vedd a detektálásaidat, számold ki az F1-et, aztán számold ki a darabszám hibáját is — és nézd meg, egy irányba téved-e. Ha igen, akkor rendszeres torzításod van, és azt kalibrációval javítani lehet, modellcserével nem feltétlenül.
Három fénykép, három predikció, és mérés ground truth nélkül
99,8 % kontra 64,0 %. A különbséget a szétvágás adja, nem a modell.
A negyedik mérés a 8. hét anyagának képi változata. Száz növény, mindegyikről öt felvétel. Ha képenként sorsolunk szétvágást, ugyanannak a növénynek a képei a tanítóba ÉS a tesztbe is kerülnek — és a modell kilencvenkilenc egész nyolc százalékot ad. Ha növény szerint vágunk, hatvannégyet. Harmincöt egész nyolc százalékpont, amit a rossz szétvágás ingyen ad. A demó a mechanizmust is megméri: véletlen szétvágásnál a legközelebbi szomszéd az esetek kilencvennyolc egész négy százalékában ugyanaz a növény.
Könnyű · nehéz · nulla-kontroll. Ground truth maszk nincs — de a kontrollon ismert a helyes válasz.
A képek nem véletlenül ezek. Az első könnyű eset: zöld kukorica vörös talajon, éles színkontraszt. A második nehéz: zöld zab száraz kukoricaszár alatt, jó részben árnyékban. A harmadik a legfontosabb — sávos talajművelés után gyakorlatilag nincs rajta zöld. Ez a NULLA-KONTROLL, és ez az egyetlen kép, amelynek az igazságát ránézésre ki lehet mondani. Enélkül a másik kettőn csak azt tudnánk mérni, melyik eljárás mást mond; a kontrollal azt is, melyik mond rosszat.
Az ábra betöltése…
A teljes mérés. Ez az a dia, amit érdemes megjegyezni a projektmunkához: a képi adatnál a szétvágás egysége szinte SOHA nem a kép. Ugyanaz a növény, ugyanaz a tábla, ugyanaz a felvételi nap — mindhárom szivárgási csatorna. A szabály egyszerű: a szétvágás egysége az legyen, amiről a modellnek majd üzemben is nyilatkoznia kell.
Az ábra betöltése…
Itt a mérés, és ezt az ábrát érdemes lassan végignézni. A sorok a képek, az oszlopok az eljárások, a sárga az, amit a gép növénynek nevezett. Felül a kukorica: a nyers zöldindex a talajra is ráfest, a normált szorosabb, az Otsu óvatos. Középen a zab: a nyers index az egész képet befedi, ötvenkilenc százalék. És most nézd meg a legalsó sort, a jobb szélső panelt. Ez a tarlós kép. Nincs rajta zöld. És az egész kép sárgán világít: kilencvennyolc egész nyolc százalék.
A cella betöltése…
A cella itt fut. A csavar az egyedi jel erőssége: gyengítsd nulla egész négyre, és nézd meg, mennyivel kisebb a szivárgás ára. Ebből megtudod, hogy a szivárgás nagysága attól függ, MENNYIRE egyedi a növény — vagyis hogy a te adatodon mekkora kockázat.
A nyers index a fénnyel szorzódik. A normált nem — az f kiesik, azonosan.
Írjuk fel, mi a baj. Az első sor a tankönyvi zöldtöbblet: kétszer a zöld, mínusz a piros és a kék. A második sor a baj: ha a képet f-szeres fénnyel vesszük fel, mindhárom csatorna f-szeres lesz, tehát a KÜLÖNBSÉG is — a küszöb alatta elcsúszik. A harmadik sor a javítás: ugyanazt a képletet a csatornák összegére normáljuk. És most nézd meg a negyediket: az f kiesik. Nem közelítőleg, hanem azonosan. Egyetlen osztás, és a mérőszám függetlenné vált a megvilágítástól.
| formátum | ahogy a dobozt leírja | ahol elcsúszik |
|---|---|---|
| COCO JSON | [x_bal, y_felső, szélesség, magasság] képpontban | a sarok vagy a középpont: itt a BAL FELSŐ sarok |
| Pascal VOC XML | [x_min, y_min, x_max, y_max] képpontban | két sarok, nem sarok és méret — más szám négy helyen |
| YOLO szöveges | osztály, x_közép, y_közép, szélesség, magasság — NORMÁLVA | 0 és 1 közötti értékek: képpontként olvasva minden a bal felső sarokba kerül |
| maszk (RLE vagy poligon) | képpontonkénti hovatartozás | a maszk és a doboz nem ugyanaz: egy ferde objektum doboza fele háttér |
És egy gyakorlati dia, ami sok órát megspórol. Három elterjedt címkeformátum van, és a köztük való átváltás a modul leggyakoribb néma hibaforrása. Nem azért, mert bonyolult, hanem mert mindegyik MÁST ért doboz alatt: az egyik két sarkot, a másik középpontot és méretet; az egyik képpontban, a másik a kép szélességére normálva. Ha rosszul konvertálsz, a modell tanul valamit — csak nem azt, amit akartál —, és a hiba csak a kirajzolt dobozokon látszik.
Told a fény csúszkáját. Az index vele mozog — pedig a szín nem változott.
e=2 * (1 * 0,5) - (1 * 0,3) - (1 * 0,3)=0,4ExG
Húzd a csúszkát, és nézd, mi mozdul.
Tökéletes detektálás mellett is: 100 azonosítócsere = 14,9 pont egyedi hiba.
Az utolsó mérés. Tizenkét egyed, egy óra felvétel, TÖKÉLETES detektálás — minden egyed minden képkockán megvan. Csak az azonosítók cserélődnek néha. A csordaszintű átlag ettől nem mozdul, egyáltalán nem: ha csak összeadjuk az aktív egyedeket, a csere nem számít, mert az egyik egyedtől elvett időt a másiknak adja. Az EGYEDI mérés viszont romlik: száz cserénél tizennégy egész kilenc százalékpont. Ha tehát egyedi viselkedést mérsz, a követés minősége maga a mérés minősége.
Ugyanaz a fény-csúszka, és a szám meg sem rezdül. Az f kiemelhető, tehát kiesik.
e=(2 * (1 * 0,5) - (1 * 0,3) - (1 * 0,3)) / ((1 * 0,3) + (1 * 0,5) + (1 * 0,3))=0,36ExG (normált)
Húzd a csúszkát, és nézd, mi mozdul.
Az ábra betöltése…
A teljes mérés. A felső görbe az egyedi mérés hibája a cseregyakoriság függvényében: monoton nő. Az alsó vonal a csordaszintű hiba, és az végig a nullán fekszik. Két dolgot érdemes leolvasni. Az első: a csordaszintű nulla nem mérési eredmény, hanem azonosság — az összeg a cseréktől definíció szerint nem változik. A második: a görbe nem egyenletes. Tizenöt cseréig meredeken nő, aztán ellaposodik, mert egy már összekevert egyedet nehéz tovább rontani.
Az ábra betöltése…
És itt a söprés. Három panel, mindegyikben ugyanaz a három kép, a vízszintes tengelyen a megvilágítás nulla egész héttől egy egész háromig. A bal panel a nyers index: a zab görbéje negyvenhatról hetvenre mászik, tehát ugyanaz a tábla huszonnégy százalékponttal többnek látszik, ha kisüt a nap. A középső a normált: vízszintes vonalak. A jobb oldali az Otsu — szintén vízszintes, de nézd meg, hol fut a zöld vonal: kilencvenkilencen. Stabilan téved.
A cella betöltése…
Az utolsó cella. A csavar az egyedszám: állítsd harmincra. A kérdés az, hogy nagyobb csordánál ugyanannyi csere mennyit ront. A várakozás az, hogy kevesebbet, mert a cserék több egyed között oszlanak el — de ezt meg kell mérni, nem elég várni.
Az ábra betöltése…
A második predikció tanul. Kilenc foltot jelöltem meg kézzel ezen a képen — négyet növénynek, ötöt talajnak —, és ez a kép mutatja, hol vannak. Egy dolgot mondok el róla, mert tanulság: az első körben a jelölt növényfoltjaim fele talaj lett, mert kétszáz képponttal mellébecsültem a koordinátákat. Nem hibaüzenet mondta meg. Az, hogy kivágtam a foltokat, egymás mellé raktam, és ránéztem. A rosszul jelölt folt csendben rossz modellt ad.
Egy istállói kameraredszer csordaszinten stabil aktivitási átlagot mutat, de az állatorvos szerint az egyedi riasztások használhatatlanok. Mi a legvalószínűbb ok?
Egy istállói kameraredszer csordaszinten stabil aktivitási átlagot mutat, de az állatorvos szerint az egyedi riasztások használhatatlanok. Mi a legvalószínűbb ok?
Az ábra betöltése…
Balra a fénykép, középen amit a modell mond: minden képpontra egy valószínűség, sárga a növény. A növények tisztán kirajzolódnak. Jobbra viszont a fontosabb rész. Ugyanaz a modell, ugyanaz az adat, kétféle szétvágás: képpont szerint véletlenül, és folt szerint. A rés a logisztikus regressziónál egy egész kettő, a véletlen erdőnél egy egész nyolc, a magoló 1-NN-nél három egész négy százalékpont. A sorrend a magyarázat: a szivárgás akkor nagy, ha a modell MEGJEGYEZNI tud.
| mérés | ami szépen néz ki | ami a feladatról szól |
|---|---|---|
| alapvonal | ExG 93,3 % déli fényen | ugyanaz a küszöb délután 88,2 % — a küszöb csúszott, nem a képlet |
| tartományeltolódás | a modell magabiztos marad (rés 50,5 %) | a pontosság 11,6 ponttal esik, és semmi nem jelez |
| detektálás | F1 = 0,918 | a darabszám rendszeresen 5,8 %-kal kevesebb |
| szétvágás | 99,8 % véletlen szétvágással | 64,0 % növény szerint — a különbség a szivárgás |
| követés | csordaszinten 0,00 pp hiba | egyedi szinten 14,9 pp száz azonosítócserénél |
Az egész modul összefoglalása. Minden sor ugyanazt a szerkezetet mutatja: van egy szám, ami szép, és van egy másik, ami a feladatról szól. A projektmunkádban a második oszlop az, amit a beadandó első oldalára kell írni.
Az ábra betöltése…
A harmadik predikció egy igazi mély modell: a MobileNetV2, ahogy az ImageNet ezer osztályára betanították. Nem tanítjuk tovább, csak megkérdezzük. A kukoricatáblára azt mondja: cserép, huszonnyolc százalék. A zabosra: kalász, harminc. És a tarlós képre — nézzétek meg — lábtörlő, hetvenhét egész két százalék. Hetvenhét százalékos magabiztossággal. Egyik címke sem téves az ImageNet értelmében; egyik sem válasz arra, amit a gazdálkodó kérdez.
a kép széle felé gyorsuló geometriai hiba; a sarokban 10,5 % méretbeli eltérés
a metszet osztva az unióval; ez dönti el, mi számít találatnak, és a küszöbét ki kell írni
nem a modellé: számlálásnál a darabszám hibája, riasztásnál a téves riasztás ára
más fény, más évszak, más tábla; a modell nem jelzi, csak rosszabbul dönt
Ennyi a modul. Ezek a fogalmak mind a nyolc projektben előkerülnek, és mindegyikhez tartozik futtatható mérés.
Az ábra betöltése…
És a stabilitás. Bal oldalon a megvilágítás: öt beállítás, és a három képre összesen öt különböző top-1 címke jön ki — három volna a stabil eset. Jobb oldalon a kivágás: ugyanabból a képből vett öt részlet, és tizenegy különböző címke. A kukoricatábla öt részletére a modell azt mondta: cserép, indiai kobra, tatu, kalász, fejes káposzta. Ugyanaz a tábla. Öt részlet. Öt állat és növény.
Transzfer tanulásegy nagy adathalmazon előtanított modell ÚJRAFELHASZNÁLÁSA egy másik, jellemzően kisebb feladatra — az alsó rétegek általános képi jellemzőit megtartva, a feladatspecifikus fejet lecserélve és a saját címkéken hangolva.
ezek feladatfüggetlenek
ha a saját képeink is más napszakban készülnek, mint az üzemiek, a hiba megmarad
A meghatározás a dián, és a lényeg a második mondatban: nem a modellt dobjuk el, hanem a FEJÉT. Az előtanított háló alsó rétegei éleket, textúrákat, foltokat ismernek fel — ez minden képen ugyanaz, akár macska van rajta, akár kukorica. Amit cserélni kell, az a legfelső réteg, amelyik ezerféle ImageNet-osztályra szavaz. A helyére a MI címkéink kerülnek, és néhány száz saját kép elég szokott lenni a hangoláshoz. Ez az, ami a projektmodult egy félév alatt teljesíthetővé teszi.
| Rövidítés | Feloldás | Mit jelent |
|---|---|---|
| IoU | Intersection over Union — átfedési arány | a metszet osztva az unióval; a szokásos találatküszöb 0,5, de ez megállapodás |
| Dice | Dice-együttható | 2·metszet osztva a két terület összegével; ugyanazt méri, mint az IoU, de megengedőbb — D = 2·IoU/(1+IoU) |
| mAP | mean Average Precision | a PR-görbe alatti terület osztályonként, IoU-küszöb mellett; a küszöb nélkül nem értelmezhető |
| OKS | Object Keypoint Similarity | a kulcspont IoU-megfelelője: a ponthiba az objektum méretéhez mérve |
| MOTA | Multiple Object Tracking Accuracy | a követés összesített hibája: hiányzás, téves riasztás és azonosítóváltás együtt |
| IDF1 | Identity F1 | kifejezetten az AZONOSSÁG megtartását méri; tökéletes detektálás mellett is lehet alacsony |
| MAE | Mean Absolute Error — átlagos abszolút hiba | a képi regresszió mércéje, a kimenet egységében |
| RMSE | Root Mean Squared Error — négyzetes középhiba | ugyanott, de a nagy hibákat aránytalanul bünteti |
| ROC-AUC | Receiver Operating Characteristic — görbe alatti terület | a rangsorolás jósága küszöbtől függetlenül; a véletlen rangsoroló 0,500 |
| ExG | Excess Green — zöldtöbblet-index | 2G − R − B; a legolcsóbb növény–talaj szétválasztás |
| NDVI | Normalized Difference Vegetation Index | (NIR − vörös) ÷ (NIR + vörös); infravöröset látó kamera kell hozzá |
| RGB | Red, Green, Blue | a kamera három csatornája; ebből számol az ExG |
| NIR | Near InfraRed — közeli infravörös | a növény ebben erősen visszaver, a talaj nem — ezen áll az NDVI |
| TP, FP, FN, TN | a zavarási mátrix négy cellája | valódi találat, téves riasztás, kimaradt eset, helyes nem — itt IoU-küszöb dönti el, mi a találat |
| K/T | kerület ÷ terület | a táblaalak mérőszáma; ettől függ a keverékképpontok aránya, nem a tábla méretétől |
A gépi látás rövidítései két csoportba esnek, és ezért két táblán állnak. Ez az első: amivel MÉRÜNK. Az átfedési aránytól a zavarási mátrixig, plusz a képi indexek. Ezeket tudni kell, mert ezek a számok kerülnek a jelentésbe — és ezeket keverik össze a leggyakrabban.
| eljárás | mit kíván | mikor jó, és mikor nem |
|---|---|---|
| zöldindex küszöbbel (`cv-fedettseg`) | semmit: egy képlet és egy szám | azonnal indul, és normálva stabil is; de csak SZÍN alapján dönt — a sárguló növényt nem látja meg |
| kézzel tanított pixelosztályozó (`cv-pixelosztalyozo`) | tíz perc jelölés képenként, szakértői szemmel | színen túli jellemzőket is használ (textúra); de a jelölés minősége a felső korlát, és folt szerint kell értékelni |
| előtanított mély háló (`cv-eloretanitott`) | semmit — de a címkéi nem a mi kérdésünkre válaszolnak | önmagában használhatatlan agrárkérdésre; transzfer tanulással viszont néhány száz saját kép is elég |
| transzfer tanulással hangolt háló | néhány száz SAJÁT, címkézett kép és egy GPU-óra | ez a projektmodul valódi célja; a doméneltolódás ellen adatbővítés kell mellé |
Összefoglaló táblázat. A jobb oldali oszlopot olvasd el először: mindhárom eljárásnak van olyan helyzete, ahol rossz választás. És figyeld meg a középső oszlopot — a címkézési költséget. Ez az, ami a projekttervben a leggyakrabban hiányzik, pedig ez a legnagyobb tétel.
| Rövidítés | Feloldás | Mit jelent |
|---|---|---|
| CC | Creative Commons | szabad licenccsalád; a licenc a képpel EGYÜTT utazik |
| CC0 | Creative Commons Zero | közkincs: a származékos mű sem terhelt |
| BY-SA | Attribution-ShareAlike | a származékos művet is ugyanezzel a licenccel kell továbbadni |
| AGPL | Affero General Public License | a ráépülő művekre is kiterjed — ezért esett ki modellként |
| MobileNetV2 | könnyű konvolúciós háló | beágyazott futtatásra; a kurzus az ImageNet-en tanított, Apache 2.0 változatát futtatja |
| GPU | Graphics Processing Unit | párhuzamos számolóegység; a háló tanítása ezen megy |
| COCO | Common Objects in Context | annotációs formátum; a doboz [x_bal, y_felső, szélesség, magasság] képpontban |
| VOC | Visual Object Classes (Pascal VOC) | annotációs formátum; a doboz két sarokkal, képpontban |
| YOLO | You Only Look Once | detektorcsalád, és az annotációs formátum neve is: osztály és NORMÁLT középpont-méret |
| SAM | Segment Anything Model | irányítható szegmentálás: pontból vagy dobozból ad maszkot, osztálycímke nélkül |
| ONNX | Open Neural Network eXchange | keretrendszer-független modellformátum; a tanítás és az üzemeltetés így válik szét |
| RLE | Run-Length Encoding | futamhossz-kódolás; a maszkok tömör tárolása |
| JSON, XML | adatcsere-formátumok | a COCO JSON-ban, a Pascal VOC XML-ben tárolja a címkéket |
| GDAL | Geospatial Data Abstraction Library | térinformatikai raszterkönyvtár: vetületváltás, csempézés, mintavétel |
| QGIS | Quantum GIS | nyílt forráskódú térinformatikai felület |
| CVAT | Computer Vision Annotation Tool | címkéző felület több annotátorral és verziókövetéssel |
| OpenCV | Open Source Computer Vision Library | programkönyvtár, nem rövidítés: a klasszikus képfeldolgozás munkalova |
A második tábla az eszközöké, a formátumoké és a licenceké. Ezeket nem kell fejből tudni — vissza lehet lapozni. Egyet emelnék ki, az utolsó hármat: a licenc ugyanolyan tervezési korlát, mint a pontosság. A modul modellje azért MobileNetV2 és nem a YOLO-vonal, mert az utóbbi AGPL, és az ráragadna az egész kurzustárolóra.
Az ábra betöltése…
Ahogy minden diasor végén: a használt típusok egymás mellett, ugyanazon az öt értéken. Ebben a modulban három szerepel. Az oszlop a kezelések és a szétvágások összevetésére, a vonal ott, ahol egy folytonos paraméter mentén nézünk végig valamit — a csempeátfedésen vagy a cseregyakoriságon. A harmadik panel a demóábra: a képi eloszlások és a hisztogramok olyan rajzot kívánnak, amit a dia saját rajzolója nem tud.
%pip install -q unigaku-demofrom demo.lite import futtatfuttat('cv-eloretanitott')A Python a böngésződben indul el, telepítés nélkül. Az első indítás néhány másodperc, mert a futtatókörnyezet ekkor töltődik be. Utána átírhatod a paramétert, és újrafuttathatod.
A demó a saját gépeden fut — a böngészős futtatókörnyezetben nincs onnxruntime, és a tizennégy megabájtos modell sem utazik a kerékkel. A csavar a `KIVAGAS`: állítsd tizenkettőre. A kérdés: hány különböző címke jön ki ugyanarról az EGY tábláról, ha tizenkét részletet nézünk meg belőle? És a második kérdés, ami fontosabb: ha egy modell ugyanarra a táblára több különböző dolgot mond a kivágástól függően, mit jelent az, hogy „nyolcvan százalékos pontosságú”?
| diagramtípus | mit olvasol le róla | mire NEM jó |
|---|---|---|
| oszlop | kategóriák nagyságrendje és sorrendje — a hossz maga az érték | időbeli alakulás: a sorrend nem látszik rajta |
| vonal | folytonos paraméter menti alakulás: a meredekség és a fordulópontok | kategóriák összevetése: a vonal sorrendet állít oda is, ahol nincs |
| demóábra | amit a keretrendszer rajza nem tud: eloszlás, hisztogram, képi panel | saját adatod: ez a demó kimenete, nem szerkeszthető a dián |
És a táblázat. A modul szinte végig összevetéseket mutat — ez a kezelés kontra az a kezelés, ez a szétvágás kontra az a szétvágás —, oda pedig az oszlop való. A vonal ott jelenik meg, ahol a köztes értékekről is állítunk valamit: a csempeátfedésen és a cseregyakoriságon. A középső oszlop a fontos, a jobb oldali még inkább.