A 22.1. Adateredet, címke és csoportos split egység rögzítette, hogy a GlyphLab 360 képéhez 180 független jelenet tartozik, és a splitet scene-szinten kell nyilvántartani. Ott a címke és a rekord kapcsolatáról a hosszanti, adatkezelési oldalon volt szó. Most ugyanennek a szerződésnek a transzformációs oldalát vizsgáljuk: ha a betanított modellt egy augmentációs pipeline-on keresztül tápláljuk, mikor marad a kimeneti címke változatlan, és mikor változtatja meg a transzformáció magát a feladatot?
A 21.3. Dropout, súlyregularizálás és augmentáció a regularizáló eszközöket úgy vezette be, hogy az augmentációt csak megemlítette. A 10.2. Affín réteg és aktiváció backward a backward VJP-szabályainál a batch- és broadcast-műveleteket kezelte; ott minden tenzorműveletnek egzakt, indexelt definíciója volt. A 18.2. Batch normalization train és eval módban pedig a BatchNorm train/eval kettősségénél hangsúlyozta, hogy ugyanaz a forward-képlet különböző üzemmódban más statisztikát használ. Ugyanez a minta tér vissza az augmentációban: ugyanaz a geometriai művelet egészen más szerződést teljesít, ha a címkét, a maszkot és a dobozt is transzformáljuk vagy éppen nem.
Induló kérdés. A GlyphLab osztályai: 0 = vertical, 1 = horizontal, 2 = diagonal. Ha a 0. osztályú képet 90 fokkal elforgatjuk, a megjelenő gerenda vízszintes lesz. Az eredeti címke 0 maradhat-e? A becslését a 4. szakasz kézi példája után ellenőrizheti: ott a számítás nem szorzás, hanem egy címketér-leképezés felírása lesz.
Definíció (augmentáció). Legyen egy kép-címke pár, ahol (a batch-nélküli GlyphLab-konvencióban ), a magasság, a szélesség. Az augmentáció egy adattranszformáció, amelyet a tanítási adatfolyamban a minibatch betöltésekor alkalmazunk, nem előre elmentett fájlként. A célja a gyakorlati variabilitás növelése a tényleges adatgyűjtés nélkül; a modell így ugyanazt a tanítópéldát több realizációban láthatja.
A transzformáció akkor része a szerződésnek, ha külön mondjuk meg, hogy milyen objektumra hat. Két különböző, nem felcserélhető objektumról van szó:
Definíció (címkemegőrző transzformáció). A transzformáció akkor címkemegőrző az adott tanítási feladatra, ha minden olyan párra, amelyre értelmezve van, a transzformált képhez is az osztály tartozik. Rövidebben: a feladat címketér-leképezése kielégíti az
egyenlőséget a tanítási halmaz elemeire.
A jelölés szándékosan „az adott feladatra” szól. A definícióban a feladat címkézőfüggvénye, nem a tanított modell. Például a GlyphLab feladatban a vonás áthaladási irányát adja, és ez a modell címkéjének értelmezését rögzíti, függetlenül attól, hogy a betanított súlyok mit jósolnak. Két rövid megjegyzés a definícióhoz:
A szerződés numerikusan így ellenőrizhető egy konkrét, reprodukálható pipeline-ban: minden olyan -re, amelyre a transzformációt megengedjük, a transzformált párnak is -nak kell lennie a céltenzorgenerátor szerint. Ez a definíció a klasszifikációs transzformáció-katalógusokban label-preserving néven ismert; a PyTorch dokumentációja [D08] a Dataset és DataLoader folyamatában a transzformációk általános alkalmazását rögzíti, de a címke- és annotáció-szinkronizálást a felhasználó szerződéseként kezeli. Az adott transzformációt megvalósító API pontos paramétereit a hallgató a telepített könyvtár dokumentációjában ellenőrzi.
A crop művelet az indexek leszűkítése. Egy kivágási ablakot fél-nyílt, nullától indexelt intervallumokkal adunk meg, ugyanazon konvencióval, mint a 22.1. Adateredet, címke és csoportos split alfejezetben a dobozra: , és a kivágott kép
A magasságra a fél-nyílt feltétel: , azaz a kivágott terület az intervallum. Az output alakja .
A crop címkemegőrző az osztályozási feladatra, ha a kivágás választását az osztályt meghatározó tartalomtól függetlenül rögzítjük, és a kép tartalma elégséges a címke eldöntéséhez. Ahhoz, hogy ezt a feltételt ne csak heurisztikusan mondjuk ki, a tanulási szerződés szempontjából rögzítjük: a transzformáció akkor elfogadott, ha a kivágás utáni kép az eredeti -ből származó, a cél szempontjából reprezentatív mintája. A crop önmagában nem címkeőrző eljárás, hanem indexhalmaz-művelet; a címkeőrzés a kivágási politikától függ. Például a GlyphLabban egy olyan kivágás, amely a gerendát teljesen elhagyja, megszünteti a címkét hordozó tartalmat, tehát megsérti a szerződést, még ha a pixelformát tekintve simának is tűnik.
A hivatalos követelmény a kép és a társannotáció szinkronja esetén szigorúbb, hiszen a maszkhoz és dobozhoz is ugyanazt az indexhalmazt kell használni. A 4. szakaszban a doboz transzformációját külön számoljuk ki.
A resize a diszkrét kép rácsát egy másik rácsra képezi. A legátláthatóbb, matematikailag is következetes fogalom a bilineáris interpoláció: az intenzitást az diszkrét pozíciójú minta folytonos interpolációjának tekintjük, és az kimenet mintájához a forrásrácsban keressük az és koordinátákat. Pontosabban, az output pixel -normalizált pozícióját az input pixel-centrumoknak megfelelően interpoláljuk. A részletes kernel pozíciófüggő: a súlyok a forrás- és célrács koordinátáitól függenek, a pixelintenzitásoktól viszont nem. Rögzített be- és kimeneti rács mellett ezért a resize az intenzitásokra nézve lineáris operátor, és a kép minden csatornájára ugyanaz:
ahol a
súlyok a célrácstól függő, bilineáris kernel. Tehát
minden
valós számra és azonos méretű
képre; a bilineáris interpoláció koordinátafüggése ezen nem változtat.
Valóban nemlineáris lépés csak az, ami az eredményre utólag hat, például
a
-be
vágás (clipping), a kerekítés uint8-ra, vagy az adaptív, a
képtartalomtól függő súlyválasztás (például antialias-szűrő, amelynek
mérete a tartalomtól függ); ezeket a szerződésben külön kell megnevezni.
A 14.1. Stride, padding, dilation és outputméret
padding/stride képletétől eltérően itt nincs konvolúciómag – ez a
művelet mintavételi átkonvertálás, nem szűrő.
A resize akkor címkemegőrző az osztályozási feladatra, ha a feladat nem függ egy képpontos részlet abszolút méretétől, csak a geometriai tartalom relatív konfigurációjától. Ez a GlyphLab orientációs feladatán teljesül: a gerenda függőleges vagy vízszintes iránya egy kisebb rácson is olvasható. Az alábbi feltételt írásban is rögzítjük: a resize akkor engedhető meg, ha a forrás- és célméret eltérése nem éri el a klasszifikációhoz szükséges minimális felbontást. Ha például -ről -re kicsinyítünk, egy vékony, 2 pixel vastag vonal eltűnhet; az ilyen resize nem címkemegőrző, mert a cél-információ megsemmisül. Ez a megállapítás heurisztika, nem bizonyított tétel: a megengedett minimális méretet a konkrét generátor vastagságeloszlása ellenőrzi, amit a 22.1. Adateredet, címke és csoportos split generátorának dokumentációja rögzít.
A vízszintes tengelyű tükrözés (horizontal flip) a szélességi indexet tükrözi:
A függőleges tengelyű tükrözés analóg:
A flip fontos tulajdonsága, hogy az osztályozási címkét csak az adott feladat hagyja meg, míg az annotációt szinkronban kell tükrözni. Ez a megkülönböztetés a jelen fejezet magja. Egy kép vízszintes tükrözése a vizuális tartalmat megőrzi, de a GlyphLabban a diagonal osztály csak az egyik ferde irányt tartalmazza. A GlyphLab ADATOK.md szerződése kifejezetten rögzíti: a 90 fokos forgatás a vertical és horizontal címkét felcseréli, és a diagonal osztály csak az egyik ferde irányt tartalmazza, ezért tükrözés/forgatás új célértelmezést igényelhet. A tükrözött diagonal már a másik ferde irány, ami egy másik feladatcímke lenne, nem a meglévő 2. osztály.
Állítás. Nem minden forgatás címkemegőrző minden osztályozási feladathoz. Konkrétan a GlyphLab orientációs feladatán a 90 fokos forgatás a vertical és horizontal osztályokat kölcsönösen felcseréli, így a transzformáció az eredeti címke megtartásával nem érvényes.
Bizonyítás. Legyen a GlyphLab feladat címkézője , ahol a 0 a függőleges, 1 a vízszintes, 2 a diagonal vonalat rendeli a képhez. Legyen a képsík óramutató járásával megegyező 90 fokos forgatása. A GlyphLab generátora olyan képeket állít elő, amelyeken a vonal függőlegesen, vízszintesen vagy diagonalisan fut. Egy függőleges, az -tengely mentén hosszan elnyúló vonal a forgatás után a -tengely mentén hosszan elnyúlt, azaz vízszintes vonal lesz:
A vízszintes vonalra szimmetrikusan:
Mivel tehát legalább egy -re, a transzformáció nem címkemegőrző a GlyphLab feladatára.
A bizonyítás a definiált célfeladat szintjén teljes; nem szükséges hozzá általános képi ontológia. Szándékosan mutattuk meg, hogy a címkemegőrzés feladattól függ, nem a forgatóképesség gyenge. Egy olyan feladatnál, ahol a cél a vonal jelenléte (nem annak iránya), a címkemegőrző lenne: a vonal jelen marad. A fontos üzenet tehát: a geometriai invariancia a cél definíciójához képest értendő.
Az intenzitástranszformáció a csatornán a tartományú intenzitásra hat, nem az indexre. Az egyszerű eltolás-skálázás például:
ahol és skalár, a kimenetet pedig a tartományra vágjuk vagy normalizáljuk. A GlyphLab képein megkötés mellett az intenzitás a látható tartalmat nem szünteti meg. A brightness csatorna transzformációja akkor címkemegőrző az orientációs feladatban, ha a kontraszt és a fényesség nem befolyásolja a vonal pozícióját. Fontos korlát: ha az intenzitásművelet a zaj szintjét a kép szubjektív osztályozhatóságán túl növeli, a cél címkéje már nem az eredetiből igazoltan levezethető. Ez intenzitásnál és zajosításnál észlelhetőségi feltétel, és a fejezetben mint ellenőrizendő heurisztikát jelöljük.
A normalizálás és az intenzitás-skálázás közötti különbség: az előbbi a modell numerikus bemenetét skálázza, az utóbbi a kép vizuális tartalmát módosítja. A címkemegőrzés szempontjából a minden képen ugyanazzal az affin intenzitástranszformációval végzett normalizálás akkor megengedett, ha a kép normája nem a címke döntő forrása. A GlyphLab feladatban a címkét az átvonuló iránya szolgáltatja, nem az átlagos fényesség, ezért a normalizálás önmagában megengedhető.
A maszk és doboz ugyanazon képhez tartozó annotáció. A 22.1. Adateredet, címke és csoportos split szerint a maszk az előtér 0/1 döntése, a doboz a legszűkebb befoglaló téglalap fél-nyílt xyxy formában. Ha a kép indexeit transzformáljuk, a maszk és doboz indexeit ugyanazzal a geometriai leképzéssel kell transzformálni, különben a kép-pozíció és az annotáció elcsúszik.
A szinkronizáció pontos formája a következő. Legyen a geometriai index-leképezés , amely az output kép minden indexéhez egy inputpozíciót ad. Ha a maszkot a kép transzformációjával azonos módon transzformáljuk, akkor a címke-annotáció ugyanarra a vizuális objektumra vonatkozik. A doboz esetében ez azt jelenti, hogy a sarkokat is a -nak megfelelően kell leképezni, figyelve a fél-nyílt intervallum konvencióra.
Példa (doboz horizontal flip). Legyen a kép szélessége . Egy doboz tükrözött alakja:
A fél-nyílt konvenciót a tükrözés is megőrzi: az feltételből következik, ami a megfelelő fél-nyílt intervallumot adja. A 4. szakasz kézi példája ezt számolja ki.
A gyakori tévedés az, hogy a képhez egy véletlen transzformációt választunk, a maszkhoz/dobozhoz pedig egy másik, tőle független véletlent. Ez hibás tanítópárt eredményez, mert a kép és az annotáció különböző geometriai kölcsönhatásnak van kitéve. A 6. szakasz F4 feladata pontosan ezt a hibát lokalizálja.
Tekintsünk egy -es, a GlyphLab-szerű generátorral készült vertical osztályú képet. A vonal a oszlopban, a függőleges irányban fut. A címke 0. A doboz, mint a vonalat befoglaló legszűkebb téglalap:
Azaz a vonal a 12. és 13. oszlopban, a 4. és 19. sorban látható (a fél-nyílt intervallum szerint már nincs benne).
Az óramutató járásával megegyező 90 fokos forgatás
(np.rot90(x, k=3)) egy
képet
képpé alakít, és a sor–oszlop indexpárt így képezi le:
Az új sorindex tehát a régi oszlopindex (), az új oszlopindex a régi sorindex tükre (). A dobozra: a régi oszloptartományból az új sortartomány lesz, ; a régi sortartományból pedig az új oszloptartomány , azaz , mert esetén , és esetén . Az xyxy sorrendben az új doboz
A szélesség és a magasság szerepet cserél, a terület változatlan: .
A példában :
Az új doboz a 12. és 13. sort és a 4–19.
oszlopot fedi: két pixel magas, 16 pixel széles
vízszintes sáv, területe
,
ugyanannyi, mint az eredeti
.
Ez éppen a vízszintes vonal; a címke most 1 kellene hogy legyen, a 0
címkét meghagyni nem szabad, mert a transzformáció a címkét
megváltoztatta. Ellenőrzés: a dobozból képzett
-es
bináris maszkot np.rot90(mask, k=3)-mal forgatva, majd a
legszűkebb dobozt újraszámolva szintén
adódik, a maszk elemszáma 32 marad.
A jelen alfejezethez a következő helyi főutat írjuk elő. A labor a
lab könyvtárban dolgozik, CPU-s NumPy-vel.
Protokoll. A gyakorlat célja: a GlyphLab train-képből válasszon ki egy vertical és egy horizontal képet, és igazolja a 90 fokos rotáció címkeváltoztató hatását.
Lépések.
python3 -c "import numpy as np; print(np.__version__)"
ellenőrzi a NumPy-verziót. A labor Python 3.10+ és NumPy 1.21+ verziót
feltételez, CPU-n.data/images.npy-ből töltődnek be:
np.load("data/images.npy"); a train indexek
metadata.csv-ből.np.rot90(x, k=3, axes=(1,2)) a C×H×W
tengelyen.Ellenőrzött jelentés helye. A
lab/conv_check_report.json a korábbi labor futásait
rögzíti; a 22.2. Címkemegőrző transzformációk
laborhoz nem állítunk előre elvégzett futást. Ha a tanuló futtat, az
eredményt a saját jegyzékébe kell feljegyezni. A laborban a seed és a
dtype: a generátor 1.0, a képek float32. A labor csak a train splitet
használja.
A 16.1. Eltolási equivariance és invariance equivariance és invariance fogalmával szemben itt a címkemegőrzésről van szó. Magyarázza el röviden a különbséget, és adja meg, hogy a 90 fokos rotáció a GlyphLab osztályozón melyik módon sérti a címkemegőrzést: a címke definícióját vagy a modell pontszámát változtatja meg?
Adott egy -es GlyphLab kép, rajta egy diagonal vonallal, amely a bal alsó sarokból a jobb felsőbe tart. A doboz . Számítsa ki a 90 fokos rotáció utáni dobozt, és ellenőrizze a fél-nyílt intervallum tartalmi értelmét.
Írjon Python-függvényt, amely egy tenzoron a vízszintes flipet hajtja végre a tengelyre. A függvény inputja a tensor, a kimenete ugyanolyan dtype; az ellenőrzéshez használjon egy bemenetet a panelre. Várt eredmény: minden sor fordított sorrendben.
A következő pszeudokód szegmentálási augmentációt próbál létrehozni. Keresse meg a hibát, és indokolja, miért keletkezik hibás tanítópár.
for x, mask in loader:
angle = np.random.uniform(0, 90)
x_aug = rotate(x, angle)
mask_aug = rotate(mask, angle + 5)
train_step(x_aug, mask_aug)
A GlyphLab orientációs feladatban a class-stratified split 240 train és 60 val képet ad. Tervezzen kísérletet annak ellenőrzésére, hogy egy kiválasztott flip-augmentáció a diagonal osztályra címkét változtat-e. Ne hajtsa végre teljes körűen; a protokollhoz írjon megfigyelési egységet, baseline-t, metrikát és a konklúzió érvényességi határát.
A címkemegőrzés a feladat címketér-leképezésére vonatkozik: a transzformált kép címkéje megegyezzen. Ezzel szemben az equivariance/invariance a modellfüggvény és a transzformáció felcserélhetőségét rögzíti. A 90 fokos rotáció a GlyphLab cél definícióját változtatja meg, mert az orientáció címkéje maga az irány; a modell viselkedése ettől független kérdés. A feladatcím már a kalibrált cél definíciójában sérül.
A diagonal doboz a 0-tól számozott rácsban a bal alsó sarkot és a jobb felső sarkot foglalja be. A 90 fokos óramutató szerinti forgatás képlete , a 4. szakasz szerint az új doboz :
A fél-nyílt intervallum most a 2–21. sort és a 4–19. oszlopot jelöli;
a doboz
-as
lett a korábbi
-os
helyett, a terület (320) változatlan. A np.rot90(mask, k=3)
után újraszámolt doboz ugyanez. Ez éppen az a diagonal, amely a bal alsó
sarokból jobb felsőbe tart; a forgatás a geometriai irányt a másik ferde
irányba vitte, így a diagonal osztály a forgatás után már nem áll fenn.
A válasz konzisztens a 3. szakasz állításával: a doboz szinkronban
transzformálódott, a címke azonban a cél definíciója miatt
megváltozott.
A teljes futtatható ellenőrzés:
import numpy as np
def horizontal_flip_nchw(X):
# X: ndarray, N x C x H x W
return X[..., ::-1].copy()
x = np.arange(24, dtype=np.float32).reshape(2, 1, 3, 4)
# A feladat panelje: [0,1,2,3], [4,5,6,7], [8,9,10,11]
x[0,0] = [[0,1,2,3],[4,5,6,7],[8,9,10,11]]
x[1,0] = [[12,13,14,15],[16,17,18,19],[20,21,22,23]]
y = horizontal_flip_nchw(x)
print(y[0,0].tolist())
# [[3,2,1,0],[7,6,5,4],[11,10,9,8]]Az ellenőrzés a dtype-ra: a .copy() nélkül a negatív
stride nézet maradna, ami a későbbi
np.ascontiguousarray-vel nem garantált. A kimenet float32,
shape
.
A tolerancia itt nincs, mert az indexcsere egzakt.
A hiba a kép és a maszk különböző szögű elforgatása.
A mask-ra angle + 5 jut, tehát a
pixelannotáció öt fokkal más pozícióba kerül. Ettől a maszk már nem a
valódi előtér, és a tanító lépés ellentmondásos párt kap. A szegmentáló
modell így csökkenteni fogja a hibát a képhez képest elcsúszott
háttérként. A javítás: a két forgatás egy közös szöggel, azonos
interpolációs konvencióval futtasson. A maszkhoz a legközelebbi szomszéd
(nearest) ajánlott, hogy a 0/1 érték ne kenődjön el; a képhez
bilineáris is lehet. A visszaellenőrzéshez ki lehet számolni a
transzformált maszk és a transzformált kép előterének átlapolását, vagy
egyszerűen egy mini batchre a feladat dobozát is szinkronban
transzformálni és konzisztenciáját ellenőrizni.
Kérdés: a horizontal flip a GlyphLab diagonal osztályon címkét változtat-e?
Megfigyelési egység: scene_id, mert a két view ugyanazon jelenetből származik; a kísérlet a train és val split 30–30 diagonal jelenetét vizsgálja.
Baseline: a nem augmentált train spliten tanított kis ConvNet, a validációra mérve, a 16.1. Eltolási equivariance és invariance és 12.4. III. ellenőrző pont: önállóan tanuló kis háló eljárásához hasonlóan. Változó tényező: a flip mint transzformáció engedélyezése a betöltő pipeline-ban.
Metrika: a per-image osztályozási pontosság, de először a címkeinvariáns ellenőrzés: a transzformált képek diagonal céljain a modell a 2-es osztályt jósolja-e. Ez utóbbi a kérdés közvetlen mérőszáma, nem csak a teljes pontosság. A cél a címkét nem változtató, azaz a 2-es osztályt megtartó diagontranszformáció.
Protokoll: a train és val splitet a scene alapján rögzítjük. A diagonal osztályra szűrt halmazban a flip előtti és utáni célok változását mérjük a címkézőfüggvény szintjén: a generátor által ismert geometriai definíció szerint a diagonal a bal alsó–jobb felső irányt jelenti. A horizontal flip a diagonal vonalat a másik irányba viszi. Ezután a megengedett transzformációt az osztályokra aszimmetrikusan definiáljuk: vertical és horizontal osztályon a horizontal flip megengedhető, diagonalon nem.
Következtetési határ: a konklúzió a GlyphLab geometriai definíciójára vonatkozik, nem általános diagonal feladatokra. A generátor seedjével, verziójával és splitjével együtt megismételhető. A pontos kísérlethez a train/val split arányok az ADATOK.md-ben szerepelnek, és a 90 fokos forgatásos állítást a 3. szakasz bizonyította; a flipre a tükrözési szimmetria hiánya analóg, így az állítás a célfüggvény-definícióból következik. A kísérleti újdonság az lenne, hogy a pipeline-léptékű ellenőrzés mutassa a hatást, nem pedig a modell pontosságán.
A megoldás rubrikája: korrekt scene-stratifikáció, a flip és rotáció címkeingatásának elkülönítése, az érvényességi határ és annak rögzítése, hogy az eredmény a cél definíciójából következik.
Tipikus tévedés. Az a feltevés, hogy az augmentáció a vizuális hasonlóságot őrzi, ezért a címkét is. Az ellenpélda a 90 fokos rotáció: vizuálisan ugyanaz a vonal látható, de a feladat iránya megváltozott. Másik gyakori hiba: a flipet minden osztályra megengedni, mert a „vízszintes tükrözés nem változtat az ábrán”. A GlyphLab diagonal osztálya irányelvű, így a flip egy másik irányt ad.
Önellenőrzés. Válasszon egy képet a trainből, és forgassa 90 fokkal. Ha a címkét megtartva adná be, a modell a képet az ellenkező irányba tartozónak tanulná. Ezt önellenőrzéshez a fenti F3 flip és F2 dobozpélda segítségével ellenőrizheti: a kép, a maszk és a doboz ugyanazt a geometriai transzformációt kapja.
Visszahívás. A 10.2. Affín réteg és aktiváció backward batch-reduction és broadcast-szabálya itt is él: ha az augmentációt a minibatch betöltésekor alkalmazzuk, a képet és a célokat együtt kell transzformálni, és a batch-művelet nem tompíthatja el a hibás párokat. A 18.2. Batch normalization train és eval módban train/eval különbség ahhoz hasonló, ahogy az augmentáció csak a train pipeline-ban futtatható, az eval csővezetékben nem, vagy csak determinisztikusan. A 21.2. Learning rate és ütemezés üteme pedig arra figyelmeztet, hogy a training adat augmentációjának mennyisége és a learning rate schedule együtt befolyásolja a tanítási pályát.
A címkemegőrző transzformáció fogalma a feladat célfüggvényéhez, nem a vizuális hasonlósághoz kötött. A crop, resize és intenzitásváltoztatás akkor megengedett, ha nem semmisíti meg a cél szempontjából szükséges tartalmat; a flip csak a feladat szimmetriái szerint címkeőrző; a 90 fokos forgatás a GlyphLab irányfeladatán a vertical és horizontal címkét felcseréli, a diagonal pedig más irányt jelöl. A kép, maszk és doboz minden geometriai transzformációjának ugyanazt az indexleképzést kell követnie; független véletlen transzformáció ellentmondásos tanítópárokat ad. Az augmentáció kizárólag a train pipeline-ban futtatható, a tesztfolyamat valós eloszlását nem szabad augmentálni.
A 22.3. Zajos és hiányos címke a zajos és hiányos címke kezelésére tér át. Az ott tárgyalt címkebizonytalanság éppen abból a pontból ered, ahol a transzformáció már nem tudja garantálni a cél hűségét; az itt tanult szinkron és címkeőrző eljárás a zajos címke kontrolljához is nélkülözhetetlen.