Data augmentation technikos vaizdams: pilnas praktinis gidas su pavyzdžiais
Išsamus gidas apie data augmentation technikas vaizdams: geometrinės ir fotometrinės transformacijos, pažangūs metodai (Cutout, Mixup, GAN), praktiniai patarimai ir dažniausios klaidos kuriant kompiuterinės regos modelius.

Dirbtinis intelektas ir kompiuterinė rega (angl. computer vision) pastaraisiais metais sparčiai tobulėja, tačiau aukštos kokybės modeliams reikia didelių ir įvairių duomenų rinkinių. Deja, realiame pasaulyje dažnai susiduriame su problema – turime per mažai pažymėtų vaizdų, jie nėra pakankamai įvairūs arba jų surinkimas ir anotavimas yra labai brangus. Čia į pagalbą ateina data augmentation – duomenų praplėtimo technikos, kurios leidžia iš esamų vaizdų sukurti naujas, statistiškai naudingas variacijas.
Šiame straipsnyje apžvelgsime populiariausias data augmentation technikas vaizdams, paaiškinsime, kam jos naudojamos, kokią naudą suteikia, kokių klaidų reikėtų vengti ir kaip praktiškai pritaikyti šias technikas kuriant kompiuterinės regos modelius.
Kas yra data augmentation vaizdams?
Data augmentation – tai metodų rinkinys, kuriuo iš esamų vaizdų automatiškai sukuriamos naujos jų versijos, atliekant įvairias geometrines, fotometrines ar semantines transformacijas. Svarbiausia idėja – praplėsti duomenų įvairovę nepakeičiant semantinės prasmės. Kitaip tariant, objektas vaizde turi išlikti tuo pačiu objektu, tik matomu iš kitokio rakurso, apšvietimo ar konteksto.
Data augmentation plačiai naudojamas:
- vaizdų klasifikacijoje;
- objektų detekcijoje;
- segmentacijoje;
- veidų atpažinime;
- medicininėje diagnostikoje pagal vaizdus;
- pramoninėje defektų detekcijoje ir kt.
Taikydami tinkamas data augmentation technikas, galime sumažinti overfitting riziką, pagerinti modelio generalizaciją ir pasiekti geresnių rezultatų net ir su ribotu treniravimo duomenų kiekiu.
Data augmentation nauda kompiuterinei regai
Data augmentation nėra tik „triukas“ padidinti vaizdų skaičių. Tai strateginis modelio mokymo proceso optimizavimas. Pagrindiniai privalumai:
- Mažesnė pertreniravimo (overfitting) rizika. Įvairesni vaizdai verčia neuroninį tinklą mokytis bendrų dėsningumų, o ne įsiminti konkrečias pikselių kombinacijas.
- Geresnė modelio generalizacija. Modelis tampa atsparesnis realaus pasaulio variacijoms: triukšmui, apšvietimo pokyčiams, pasukimui, masteliui ir pan.
- Balansuojamos klasės. Galima dirbtinai padidinti retesnių klasių pavyzdžių skaičių ir taip sumažinti klasės disbalanso problemą.
- Sumažinamos anotavimo sąnaudos. Vietoje tūkstančių naujų rankiniu būdu žymimų vaizdų, galima išauginti esamą duomenų rinkinį.
- Didesnis atsparumas triukšmui. Modeliai, treniruoti su augmentuotais duomenimis, dažnai geriau tvarkosi su apkarpytais, išplaukusius ar šiek tiek sugadintais vaizdais.
Vis dėlto svarbu nepamiršti, kad data augmentation turi būti prasmingas ir atitikti realias situacijas, su kuriomis modelis susidurs produkcinėje aplinkoje.
Pagrindinės geometrinės transformacijos
Geometrinės transformacijos keičia vaizdo formą, padėtį ar orientaciją. Jos ypač naudingos, kai objektas realiame pasaulyje gali būti pasuktas, paslinktas ar matomas iš skirtingų kampų.
Pasukimas (rotation)
Pasukimas – viena paprasčiausių ir dažniausiai naudojamų technikų. Vaizdas pasukamas tam tikru kampu, pavyzdžiui, nuo -15° iki +15°.
- Naudinga: kai objektas gali būti bet kokioje padėtyje, pvz., gaminių defektų detekcija, landschafto nuotraukos.
- Atsargiai: su duomenimis, kur orientacija labai svarbi – tekstas, kelių ženklai, medicininiai vaizdai.
Apvertimas (flip)
Apvertimas gali būti horizontalus arba vertikalus. Horizontalus apvertimas dažnai taikomas žmonių, objektų ir gamtos nuotraukoms.
- Horizontalus apvertimas: tinkamas daugeliui bendro pobūdžio vaizdų klasifikacijos užduočių.
- Vertikalus apvertimas: rečiau naudojamas, nes daugeliu atvejų vaizdai „aukštyn kojomis“ nėra realistiški (pvz., pastatai, veidai).
Perkėlimas (translation)
Perkėlimas reiškia vaizdo pastūmimą į šoną, viršų ar apačią. Ši technika padeda modeliams tapti mažiau jautriems objekto pozicijai kadre.
- Naudinga, kai objektai realiame pasaulyje nėra visada centre.
- Per didelis perkėlimas gali „nukirpti“ svarbias objekto dalis.
Mastelis ir ištempimas (scaling & zoom)
Mastelio keitimas ir priartinimas (zoom) leidžia modeliams tapti atsparesniems įvairiems atstumams iki objekto. Tipiška praktika – leisti šiek tiek priartinti arba atitolinti vaizdą.
- Maži mastelio pokyčiai dažniausiai yra saugūs ir realistiški.
- Per didelis priartinimas gali prarasti kontekstą, o per didelis atitolinimas – pagrindinį objektą.
Perspektyvos ir afininės transformacijos
Perspektyvos ir afininės transformacijos imituoja vaizdo žiūrėjimą iš kitokio kampo. Tai ypač naudinga, kai objektai realybėje matomi iš įvairių pozicijų, pavyzdžiui, automobilių numeriai ar prekės lentynose.
Tokio tipo transformacijos turėtų būti naudojamos atsargiai, kad vaizdas išliktų fiziškai įtikinamas ir neizkraipytų objektų formos taip, jog prarandama semantika.
Fotometrinės transformacijos
Fotometrinės transformacijos nekeičia objekto geometrijos, tačiau modifikuoja pikselių reikšmes – spalvas, ryškumą, kontrastą ir pan. Jos padeda modeliams tapti atsparesniems apšvietimo, ekspozicijos ir kameros nustatymų pokyčiams.
Ryškumas, kontrastas ir sodrumas
Dažniausiai naudojamos transformacijos:
- Ryškumo keitimas: vaizdas daromas šviesesnis arba tamsesnis.
- Kontrasto keitimas: keičiamas šviesių ir tamsių sričių skirtumas.
- Spalvų sodrumas: spalvos daromos intensyvesnės arba blankesnės.
Šios technikos ypač naudingos, kai duomenys renkami skirtingomis sąlygomis – lauke, viduje, skirtingu paros metu ar naudojant skirtingas kameras.
Triukšmo pridėjimas
Pridėjus šiek tiek atsitiktinio triukšmo, galima imitoti prastesnę vaizdo kokybę ar sensoriaus netobulumus. Tai leidžia modeliams būti mažiau jautriems smulkiems defektams.
- Galima naudoti gausinį, druskos-ir-pipirų, speklinį triukšmą.
- Triukšmo lygis turėtų būti ribotas, kad vaizdas išliktų suprantamas žmogui.
Spalvų erdvės keitimas
Kartais naudinga transformuoti vaizdus į kitą spalvų erdvę (pvz., iš RGB į HSV) ir atlikti augmentaciją būtent ten, o tada grįžti atgal. Taip galima kontroliuoti atskiras savybes, kaip atspalvis ar šviesumas.
Sudėtingesnės ir pažangios technikos
Be klasikinių, egzistuoja ir pažangesnės data augmentation technikos, kurios ypač populiarios gilesnio mokymosi projektuose.
Random Erasing / Cutout
Random Erasing arba Cutout – tai metodas, kuriuo iš vaizdo atsitiktinai „uždengiama“ stačiakampė sritis (pvz., vienoda spalva ar triukšmu). Idėja – priversti modelį nepasikliauti vienu konkrečiu regionu ir išmokti platesnį kontekstą.
- Ypač naudinga, kai objektas dažnai dalinai uždengtas realiame pasaulyje.
- Per didelis uždengtos srities plotas gali padaryti vaizdą neinformatyviu.
Mixup ir CutMix
Mixup – tai technika, kai du vaizdai yra sumaišomi tarpusavyje linijine kombinacija, o jų etiketės taip pat atitinkamai interpoliuojamos. CutMix vietoje paprasto sumaišymo iškerpa regioną iš vieno vaizdo ir įklijuoja jį į kitą, proporcingai koreguojant etiketes.
Šie metodai gali žymiai pagerinti modelio generalizaciją ir sumažinti polinkį į pertreniravimą, tačiau reikalauja atidesnio hiperparametrų parinkimo.
GAN ir sintetiniai vaizdai
Generatyvūs modeliai, tokie kaip GAN (Generative Adversarial Networks), leidžia kurti visiškai naujus, į realius panašius vaizdus. Tai galime laikyti pažangia data augmentation forma, kai sintetika papildo ribotus realius duomenis.
Šis požiūris plačiai taikomas:
- medicininėje diagnostikoje, kai realūs duomenys riboti;
- retų defektų aptikime pramonėje;
- veidų atpažinimo technologijose.
Praktiniai patarimai įgyvendinant data augmentation
Nors teoriškai data augmentation skamba paprastai, praktikoje svarbu laikytis kelių gerų praktikų, kad nepakenktume modelio kokybei.
1. Neperdėti su transformacijomis
Per agresyvus data augmentation gali padaryti duomenis nerealistiškais. Pavyzdžiui, 90° pasukimas tekstui ar rentgeno nuotraukoms gali iškreipti semantiką. Visada įsivertinkite, kokios variacijos realiai yra tikėtinos jūsų domene.
2. Laipsniškas sudėtingumo didinimas
Pradėkite nuo paprastų transformacijų (pasukimo, apvertimo, nedidelio ryškumo ir kontrasto keitimo) ir stebėkite metrikas. Jei modelis vis dar linkęs persitreniruoti, įtraukite sudėtingesnes technikas, tokias kaip Cutout, Mixup ar triukšmo pridėjimas.
3. Atskirų klasių specifika
Kai kurios klasės gali būti jautresnės tam tikroms transformacijoms. Pavyzdžiui, vertikalus apvertimas netiks klasifikuojant transporto priemonių judėjimo kryptį, tačiau bus tinkamas atpažįstant gėles ar gyvūnus. Jei įmanoma, pritaikykite skirtingas augmentacijos strategijas skirtingoms klasėms.
4. Balansuotas naudojimas mokymo metu
Dažniausiai data augmentation taikomas „on-the-fly“ – t. y. transformacijos atliekamos treniravimo metu, atsitiktinai kiekvienam mini batch. Taip užtikrinama, kad modelis kiekvieną epochą matys šiek tiek skirtingas vaizdų versijas.
5. Neaugmentuokite validacijos ir testavimo duomenų
Labai svarbu prisiminti: validacijos ir testavimo rinkiniai turi likti neaugmentuoti (arba turėti tik minimalų deterministinį apdorojimą, pavyzdžiui, centravimą ir normalizaciją). Priešingu atveju gausite iškreiptas, per daug optimistines arba tiesiog nerealias metrikas.
Naudojamos bibliotekos ir įrankiai
Įgyvendinti data augmentation nuo nulio galima, tačiau daug greičiau ir patogiau naudoti specializuotas bibliotekas, kurios integruojasi su populiariais giliojo mokymosi framework'ais.
- TensorFlow / Keras: turi įmontuotus sluoksnius, tokius kaip RandomFlip, RandomRotation, RandomZoom ir kt.
- PyTorch: torchvision.transforms siūlo platų standartinių transformacijų rinkinį ir galimybę kurti savo.
- Albumentations: populiari biblioteka, orientuota į greitį ir lankstumą, ypač mėgstama kompiuterinės regos konkursuose.
- imgaug: suteikia daug galimybių kurti sudėtingas ir atsitiktines augmentacijos sekas.
Pasirinkdami įrankį, atkreipkite dėmesį į:
- Integraciją su jūsų naudojamu framework'u.
- Reikalingų transformacijų palaikymą.
- Našumą ir galimybę naudoti GPU.
SEO ir turinio kokybės aspektai kuriant AI projektų dokumentaciją
Nors data augmentation yra techninė tema, aprašant ją dokumentacijoje, tinklaraščio straipsniuose ar vidiniuose žinių bazės puslapiuose, verta pagalvoti ir apie paieškos sistemų optimizavimą. Kokybiškas, struktūruotas turinys padeda ne tik skaitytojams, bet ir paieškos sistemoms geriau suprasti, apie ką yra puslapis.
Rekomendacijos kuriant tokio tipo turinį:
- Naudokite aiškias antraštes (heading) – atskiroms temoms žymėti.
- Struktūruokite tekstą su sąrašais, paryškinimais ir skyriais.
- Įtraukite praktinius pavyzdžius, naudos paaiškinimus ir tipines klaidas.
- Venkite pernelyg akademinio tono, jei rašote plačiajai auditorijai.
Tipinės klaidos taikant data augmentation
Net ir patyrę specialistai kartais daro klaidų taikydami data augmentation. Štai keletas dažniausių problemų, kurias verta žinoti iš anksto:
- Nerealistiškos transformacijos. Pavyzdžiui, per didelis triukšmo kiekis ar ekstremalūs spalvų pokyčiai, kurių realybėje niekada nebus.
- Nesuderinamumas su užduotimi. Teksto ar medicininių vaizdų vertikalus apvertimas, kai orientacija yra esminis semantinis požymis.
- Per mažai kontrolės. Atsitiktinės transformacijos be apribojimų gali sugadinti duomenis ar net apversti etiketes.
- Augmentuotas validacijos/testavimo rinkinys. Tai iškreipia modelio vertinimą ir apsunkina realaus veikimo prognozę.
- Per stipri augmentacija nuo pirmųjų epochų. Kartais modelis iš pradžių turėtų „pamatyti“ daugiau originalių, aiškių pavyzdžių ir tik vėliau – agresyviai augmentuotus.
Kaip pasirinkti tinkamą augmentacijos strategiją
Nėra vieno universalaus data augmentation recepto, tinkamo visiems projektams. Strategija priklauso nuo duomenų tipo, užduoties ir tikslų. Vis dėlto galima išskirti kelis žingsnius, kurie padės sukurti racionalų planą.
1. Analizuokite savo duomenis
Prieš pradedami augmentuoti, skirkite laiko duomenų analizei:
- Kokios yra pagrindinės variacijos realiame pasaulyje (apšvietimas, kampas, triukšmas)?
- Ar duomenyse yra klasės disbalanso problema?
- Ar vaizdų orientacija itin svarbi semantikai?
2. Apibrėžkite „leistinų“ transformacijų ribas
Kiekvienai transformacijų grupei nustatykite realistiškas ribas. Pavyzdžiui, pasukimas nuo -10° iki +10°, ryškumo keitimas ±20 %, triukšmo intensyvumas iki tam tikro lygio. Tai padės išvengti per agresyvios augmentacijos.
3. Testuokite ir matuokite
Įsiveskite augmentaciją palaipsniui ir stebėkite pagrindines metrikas (tikslumą, F1, IoU ir t. t.). Jei našumas blogėja, peržiūrėkite transformacijų parametrus arba pašalinkite žalingas technikas.
4. Kombinuokite paprastas ir pažangias technikas
Dažnai geriausi rezultatai pasiekiami derinant paprastas geometrines ir fotometrines transformacijas su viena ar keliomis pažangesnėmis technikomis, tokiomis kaip Cutout, Mixup ar CutMix. Svarbu, kad kombinacija išliktų logiška ir atspindėtų realaus pasaulio variacijas.
Išvada: data augmentation kaip būtina modernių CV projektų dalis
Data augmentation tapo neatsiejama šiuolaikinių kompiuterinės regos projektų dalimi. Teisingai pritaikytos technikos leidžia efektyviau išnaudoti turimus duomenis, sumažinti anotavimo sąnaudas ir pasiekti geresnių rezultatų tiek moksliniuose, tiek komerciniuose projektuose.
Pasirinkdami tinkamą strategiją, balansą tarp paprastų ir sudėtingų transformacijų bei sistemingai vertindami rezultatus, galite sukurti patikimą ir realiam pasauliui atsparų modelį. Svarbiausia – prisiminti, kad kiekvienas duomenų rinkinys ir kiekviena užduotis yra skirtingi, todėl data augmentation visada turėtų būti pritaikytas konkrečiam kontekstui, o ne taikomas aklai.


