Duomenimis pagrįsti algoritmai, tokie kaip neuroniniai tinklai, užvaldė pasaulį. Jų plėtrą lemia kelios priežastys, įskaitant pigią ir galingą aparatinę įrangą bei didžiulius duomenų kiekius. Neuroniniai tinklai šiuo metu yra priešakyje visko, kas susiję su „kognityvinėmis“ užduotimis, tokiomis kaip vaizdo atpažinimas, natūralios kalbos supratimas ir kt. Tačiau jie neturėtų apsiriboti tokiomis užduotimis. Šioje medžiagoje aprašomas vaizdų suspaudimo metodas naudojant neuroninius tinklus, naudojant liekamąjį mokymąsi. Straipsnyje pateiktas metodas veikia greičiau ir geriau nei standartiniai kodekai. Schemos, lygtys ir, žinoma, lentelė su testais po pjūviu.
Šis straipsnis yra pagrįstas tai dirbti. Daroma prielaida, kad esate susipažinęs su neuroniniais tinklais ir jų sąvokomis konvoliucija и praradimo funkcija.
Kas yra vaizdo glaudinimas ir kokie jo tipai?
Vaizdo glaudinimas – tai vaizdo transformavimo procesas, kad jis užimtų mažiau vietos. Paprasčiausiai vaizdų saugojimas užimtų daug vietos, todėl yra kodekų, tokių kaip JPEG ir PNG, kuriais siekiama sumažinti pradinio vaizdo dydį.
Kaip žinote, yra dviejų tipų vaizdo glaudinimas: jokių nuostolių и su nuostoliais. Kaip rodo pavadinimai, glaudinant be nuostolių galima atkurti pradinius vaizdo duomenis, o praradus glaudinant, kai kurie duomenys prarandami glaudinant. pavyzdžiui, JPG yra nuostolingi algoritmai [apytiksliai. vertimas - iš esmės taip pat nepamirškime apie be nuostolių JPEG], o PNG yra be nuostolių algoritmas.
Nenuostolingo ir nuostolingo suspaudimo palyginimas
Atminkite, kad paveikslėlyje dešinėje yra daug blokuotų artefaktų. Tai yra prarasta informacija. Gretimi panašių spalvų pikseliai suglaudinami kaip viena sritis taupant vietą, tačiau prarandama informacija apie tikrus pikselius. Žinoma, JPEG, PNG ir kt. kodekuose naudojami algoritmai yra daug sudėtingesni, tačiau tai yra geras intuityvus nuostolingo glaudinimo pavyzdys. Suspaudimas be nuostolių yra geras, tačiau be nuostolių suspausti failai užima daug vietos diske. Yra veiksmingesnių būdų suglaudinti vaizdus neprarandant daug informacijos, tačiau jie yra gana lėti ir daugelis naudoja iteracinius metodus. Tai reiškia, kad jų negalima paleisti lygiagrečiai keliuose CPU arba GPU branduoliuose. Šis apribojimas daro juos visiškai nepraktiškus kasdieniam naudojimui.
Konvoliucinio neuroninio tinklo įvestis
Jei ką nors reikia paskaičiuoti ir skaičiavimai gali būti apytiksliai, pridėkite neuroninis tinklas. Autoriai naudojo gana standartinį konvoliucinį neuroninį tinklą, kad pagerintų vaizdo glaudinimą. Pateiktas metodas ne tik prilygsta geriausiems sprendimams (jei ne geresnis), bet ir gali naudoti lygiagretųjį skaičiavimą, todėl sparta labai padidėja. Priežastis ta, kad konvoliuciniai neuroniniai tinklai (CNN) labai gerai išgauna erdvinę informaciją iš vaizdų, kurie vėliau pateikiami kompaktiškesniu pavidalu (pavyzdžiui, išsaugomi tik „svarbūs“ vaizdo bitai). Autoriai norėjo panaudoti šią CNN funkciją, kad geriau atvaizduotų vaizdus.
Architektūra
Autoriai pasiūlė dvigubą tinklą. Pirmasis tinklas paima vaizdą kaip įvestį ir sukuria kompaktišką vaizdą (ComCNN). Tada šio tinklo išvestis apdorojama standartiniu kodeku (pvz., JPEG). Apdorojus kodeku, vaizdas siunčiamas į antrą tinklą, kuris „pataiso“ vaizdą iš kodeko, bandydamas grąžinti pradinį vaizdą. Autoriai šį tinklą pavadino rekonstrukcijos CNN (RecCNN). Kaip ir GAN, abu tinklai yra treniruojami iteratyviai.
ComCNN Kompaktiškas vaizdas perkeltas į standartinį kodeką
RecCNN. ComCNN išvestis padidinama ir perduodama RecCNN, kuri bandys išmokti likusią dalį
Kodeko išvestis padidinama ir perduodama į RecCNN. RecCNN bandys išvesti vaizdą, kuris būtų kuo panašesnis į originalą.
Nuo galo iki galo vaizdo glaudinimo sistema. Co(.) yra vaizdo glaudinimo algoritmas. Autoriai naudojo JPEG, JPEG2000 ir BPG
Kas yra likusi dalis?
Likusią dalį galima įsivaizduoti kaip papildomo apdorojimo žingsnį, skirtą „patobulinti“ kodeko iššifruojamą vaizdą. Turėdamas daug „informacijos“ apie pasaulį, neuroninis tinklas gali priimti pažintinius sprendimus, ką taisyti. Ši idėja pagrįsta likęs mokymas, perskaitykite išsamią informaciją, apie kurią galite čia.
Praradimo funkcijos
Naudojamos dvi praradimo funkcijos, nes turime du neuroninius tinklus. Pirmasis iš jų, ComCNN, pažymėtas L1 ir apibrėžiamas taip:
„ComCNN“ praradimo funkcija
Paaiškinimas
Ši lygtis gali atrodyti sudėtinga, tačiau iš tikrųjų ji yra standartinė (vidutinė kvadrato paklaida) MSE. ||² reiškia vektoriaus, kurį jie apima, normą.
1.1 lygtis
Cr reiškia ComCNN išvestį. θ reiškia ComCNN parametrų apmokomumą, XK yra įvesties vaizdas
1.2 lygtis
Re() reiškia RecCNN. Ši lygtis tiesiog perduoda 1.1 lygties reikšmę RecCNN. θ žymi treniruojamus RecCNN parametrus (viršuje esantis dangtelis reiškia, kad parametrai yra fiksuoti).
Intuityvus apibrėžimas
1.0 lygtis privers ComCNN pakeisti savo svorį taip, kad atkūrus naudojant RecCNN galutinis vaizdas atrodytų kuo panašesnis į įvesties vaizdą. Antroji RecCNN praradimo funkcija apibrėžiama taip:
2.0 lygtis
Paaiškinimas
Vėlgi, funkcija gali atrodyti sudėtinga, tačiau dažniausiai tai yra standartinė neuroninio tinklo praradimo funkcija (MSE).
2.1 lygtis
Co() reiškia kodeko išvestį, x su dangteliu viršuje reiškia ComCNN išvestį. θ2 yra mokomi RecCNN parametrai, res() yra tiesiog likutinė RecCNN išvestis. Verta paminėti, kad RecCNN yra apmokytas skirtumu tarp Co () ir įvesties vaizdo, bet ne įvesties vaizdo.
Intuityvus apibrėžimas
2.0 lygtis privers RecCNN pakeisti savo svorį, kad išvestis atrodytų kuo panašesnė į įvesties vaizdą.
Mokymosi schema
Modeliai treniruojami iteratyviai, panašiai kaip GAN. Pirmojo modelio svoriai fiksuojami, o antrojo modelio svoriai atnaujinami, tada antrojo modelio svoriai fiksuojami, kol pirmasis modelis treniruojamas.
Testai
Autoriai palygino savo metodą su esamais metodais, įskaitant paprastus kodekus. Jų metodas veikia geriau nei kiti, išlaikant didelį atitinkamos aparatinės įrangos greitį. Be to, autoriai bandė naudoti tik vieną iš dviejų tinklų ir pastebėjo našumo sumažėjimą.
Struktūrinio panašumo indekso (SSIM) palyginimas. Didelės vertės rodo didesnį panašumą į originalą. Autorių darbo rezultatai paryškinti pusjuodžiu šriftu.
išvada
Mes pažvelgėme į naują būdą, kaip naudoti gilųjį mokymąsi vaizdų glaudinimui, ir kalbėjome apie galimybę naudoti neuroninius tinklus ne tik „bendrosiose“ užduotyse, tokiose kaip vaizdų klasifikavimas ir kalbos apdorojimas. Šis metodas ne tik nenusileidžia šiuolaikiniams reikalavimams, bet ir leidžia daug greičiau apdoroti vaizdus.
Tyrinėti neuroninius tinklus tapo lengviau, nes specialiai Chabros gyventojams sukūrėme reklaminį kodą RAGAŠAS, suteikiant papildomą 10% nuolaidą reklamjuoste nurodytai nuolaidai.