2024. április 20., szombat

Gyorskeresés

Tensorflow pillanatok

Írta: | Kulcsszavak: tensorflow

[ ÚJ BEJEGYZÉS ]

A múltkor szembe jött velem egy egyszerű next-next-finish tensorflow tutorial youtube-on, szóval gondoltam felszállok én is az AI/machine learning/bullsitbingó vonatra.

Van egy hobbi projektem, azt csinálja, hogy próbálja megsaccolni mikor fog esni nálad. Van hozzá egy minimáldizájnos web appom is, így mobilon csak elindítom, és látom, mikor jön az eső. Jól hangzik? Kár, hogy az esetek többségében nem működik felhőtlenül /pun intended/, de hát az ember szereti a gyerekét, akkor is, ha haszontalan.

Hogy is működik az egész? Gondolom mindenki látott már radarképet az esőről, akkor is, ha nem tudta hogy az az. Olyan szép színes izé, ami az ország felett megy, araszol. Azt is mondhatnánk, hogy van neki iránya és valamilyen sebessége. Na de hogyan tudjuk meg, hogy mennyi az annyi? Egyszerű, van egy mozgásbecslés nevű algoritmus, ami meg tudja mondani, hogy kép kép között melyik szegmensek merre és mennyit mozdultak el, tehát ennek segítségével meg tudjuk mondani, hogy merre tart az eső, a saját pozíciónkat nyilván ismerjük /ha a Google location API is úgy akarja :D /, ebből pedig már tudjuk, mikor ér hozzánk az égi áldás.

Én a mozgásbecslés legegyszerűbb változatát implementáltam /C-ben inline assemblyvel, jó kis gyakorlófeladat volt :D /, tehát van két képed, az egyikből kivágsz egy kisebbet, és azt elkezded mozgatni a nagyobban, minden pozícióra kiszámolod az összes pixel abszolút különbségeinek összegét, és ha mindent jól csináltál, akkor lesz egy 120 x 120-as képed. Miért pont annyi: mert a kép minden oldalából 60 pixelt vágtam le. Ezt még érdemes színezni, csak hogy fancy legyen.

Még itt vagy? Nem untatlak? Jó.

A végeredmény alapvetően kétfajta lehet: valid vagy invalid. Az előbbi akkor, ha szépen mozog az eső, tipikusan frontok áthaladásakor jellemző, ilyenkor ilyen képet kapunk:

Az utóbbi pedig, ha nincs eső, és csak zaj van a radarképen, vagy nyári záporoknál, mikor az esőnek nincs kitüntetett haladása, egyszer csak elkezd esni, odébb megy 2 km-t, és abba is hagyja. Ilyenkor ez a végeredmény:

Utóbbit nem tudjuk felhasználni, hisz fals eredményeket adna, meg kell valahogy különböztetni a kettőt, és akkor el is érkeztünk ahhoz, amiért a bejegyzésre kattintottál. Gondoltam érdemes volna megnézni, mennyire valószerű gépi tanulással osztályozni a képeket. A projekt már fut egy ideje, így volt egy több ezer elemes válogatott mintám, amit meg tudtam mutatni a tensorflownak, kb. egy óra alatt le is darálta. Külön válogattam 50-50 olyan képet, amit még sosem láthatott, ez lesz a testset. Itt ugye az az érdekes, hogy mennyi pozitív és negatív fals eredmény születik. Ez a 100 kép, felső 5 sor az invalid, alsó 5 a valid.

[Dobpergés.mp3]

TF \ én | valid | invalid
-------------------------
valid | 42 | 0
invalid | 8 | 50

Látható, hogy ami tényleg invalid volt, azt annak is ismerte fel, ellenben 8 esetben valid képeket invalidként osztályozott, néha meglepő magabiztossággal.

Sok kommentárt nem fűznék hozzá, de egy dolgot nem értek teljesen: nekem a 98-as és a 100-as kép pl. nagyon hasonló, ennek ellenére ő a 100-ast 97%-ra validnak gondolta, de a 98-ast meg 51%-ra invalidnak, WTF?

Ha esetleg valaki szintén szeretne játszani, a bejegyzésben el vannak rejtve a linkek.

Hozzászólások

(#1) Realradical


Realradical
őstag

Kösz a megosztást!
Én a sztenderd mennyit fog érni az ingatlanod típusú tutorialt nézegettem + Pluralsight, de sajna kevés volt ahhoz, hogy megalapozzam a tudásom a tökéletes tőzsde-géphez.
Ellopom a munkád és tanulok belőle. :R

[ Szerkesztve ]

Things that try to look like things often do look more like things than things

(#2) IO.sys


IO.sys
őstag

Nincs kedved írni Tensorflow tutorialt? 15 éve programozok, érdekel ez is, de Youtube videókból nem igazán esett le, mi miért merre.

凸_(ツ)_/¯ // -Valamit kiírt a gép!... -Az a dolga!...

(#3) weiss válasza Realradical (#1) üzenetére


weiss
addikt

Örülök, hogy valaki hasznát veszi ennek a kevésnek is :)

IO.sys: Az nehéz volna, mert semennyire sem értek hozzá, tényleg csak a tutorialt követtem.

[ Szerkesztve ]

I did nothing, the pavement was his enemy!

(#4) Lacc


Lacc
aktív tag

Pár észrevétel:
1. Érdemes inkább Python vagy C++-ot használni, a C Api még nem támogatja az összes Tensorflow API-t. Lasd link Current Status, bár kérdés mennyire használod ki.
2. Nem azért színezzük, mert Fancy :). Hanem class annotáció miatt :), itt egy példa kép. Bár a te leírásodhoz talán nem kapcsolódik, nem tudom, hogy pontosan mit akartál színezés alatt érteni, de objektum detektálás miatt használják, a gépi intelligencia tanítatása supervised learning-gel (felügyelt tanulással, megmondjuk neki mi micsoda), erre van egy jó egyetemi projekt is.
3. Tutorialban a CNN architektúra ami használva van, az a MobilNet, másik architektúrával pontosabb eredményt is el lehet érni, bár ez függ a bemeneti képek "témájától" is. VGG, FCN, SegNet, AlexNet, ezek mind-mind más arhictektúrák, más performancia, pontosság, stb.
4. Lehet pontosabb eredményt kapsz, ha a Hyperparametéert változtatod (esetleg filter/kernel - ezt a fogalmat láttam, hogy ugyanarra használják) a Tutorialt amit csináltál, ott a 7. szakaszban leírja.

+1 Megnéztem a Valid képeket, amelyeket Invalidnak jelölt, két dolgot figyeltem meg. 3 olyan képet jelölt meg invalidnak, ahol látott egy színből négyzet alakot/téglalapot, az egyik a 86-os volt. Az invalid képeknél látszik, hogy mindig van egyszínű négyszet. 2-nél meg azt vettem észre, hogy a viharszeme, ha szabad így mondanom, nagyon el van nyújtva.

+2 "AI/machine learning/bullsitbingó" - kihagytad a "Deep Learning"-et.

[ Szerkesztve ]

(#5) weiss válasza Lacc (#4) üzenetére


weiss
addikt

Ez az egész egy már létező projektre "épült" rá teszt jelleggel, tehát a kis színes képek eddig is voltak, sőt osztályozás is, csak más feltételekkel. Amit most ki akartam próbálni, az annyi, hogy az ML mit hoz ki belőle. 1. Tehát nem C-ben van, hanem a sima TF for poets retrain.py-t használtam.
2. Igazából azért csináltam a szivárvány színezést, hogy fejlesztés közben lássam, hogy a mozgásbecslő algoritmus, jól működik-e. Aztán megtetszett, és benne hagytam. Meg fancy :D
3. Ehhez nem tudom hozzászólni, lehet butaságot írok, de nekem az Inception v3 rémlett.
4. Meglesem, kösz.

+1 Jó észrevétel, de a 84-re gondoltál, nem?

I did nothing, the pavement was his enemy!

(#6) Lacc válasza weiss (#5) üzenetére


Lacc
aktív tag

3. Nem néztem végig a videót, csak a kommentjét, ahol a "TensorFlow For Poets" című google anyagot linkelte be a feltöltő, és azt néztem át gyorsan 2 perc alatt, szóval ezért ez a hivatkozási alapom.

És itt írja a következőket:
In this exercise, we will retrain a MobileNet. MobileNet is a a small efficient convolutional neural network. "Convolutional" just means that the same calculations are performed at each location in the image.
The MobileNet is configurable in two ways:
Input image resolution: 128,160,192, or 224px. Unsurprisingly, feeding in a higher resolution image takes more processing time, but results in better classification accuracy.
The relative size of the model as a fraction of the largest MobileNet: 1.0, 0.75, 0.50, or 0.25.
We will use 224 0.5 for this codelab.

De 84 és 95-ös meg 76. képek, meg a 98-as is olyan a jobb oldali piros téglalapm talán még 57-esre is rá lehet mondasni.

További hozzászólások megtekintése...
Copyright © 2000-2024 PROHARDVER Informatikai Kft.