Uporaba AI za prekomerno stiskanje slik

Uporaba AI za prekomerno stiskanje slik
Algoritmi, ki temeljijo na podatkih, kot so nevronske mreže, so prevzeli svet. Njihov razvoj vodi več razlogov, vključno s poceni in zmogljivo strojno opremo ter ogromnimi količinami podatkov. Nevronske mreže so trenutno v ospredju vsega, kar je povezano s "kognitivnimi" nalogami, kot so prepoznavanje slik, razumevanje naravnega jezika itd. Vendar ne bi smeli biti omejeni na takšne naloge. To gradivo opisuje metodo za stiskanje slik z uporabo nevronskih mrež z uporabo preostalega učenja. Pristop, predstavljen v članku, deluje hitreje in bolje kot standardni kodeki. Sheme, enačbe in seveda tabela s testi pod krojem.

Ta članek temelji na to delo. Predpostavlja se, da ste seznanjeni z nevronskimi mrežami in njihovimi koncepti konvolucija и funkcija izgube.

Kaj je stiskanje slike in kakšne vrste je?

Stiskanje slike je postopek preoblikovanja slike, tako da zavzame manj prostora. Preprosto shranjevanje slik bi zavzelo veliko prostora, zato obstajajo kodeki, kot sta JPEG in PNG, katerih namen je zmanjšati velikost izvirne slike.

Kot veste, obstajata dve vrsti stiskanja slike: brez izgub и z izgubami. Kot pove že ime, lahko stiskanje brez izgub obnovi izvirne slikovne podatke, medtem ko stiskanje z izgubo med stiskanjem izgubi nekaj podatkov. na primer, JPG so algoritmi z izgubo [pribl. prevod - v bistvu ne pozabimo tudi na JPEG brez izgub], PNG pa je algoritem brez izgub.

Uporaba AI za prekomerno stiskanje slik
Primerjava kompresije brez izgube in kompresije z izgubo

Upoštevajte, da ima slika na desni veliko kockastih artefaktov. To je izgubljena informacija. Sosednje slikovne pike podobnih barv so stisnjene kot eno območje, da prihranijo prostor, vendar se informacije o dejanskih slikovnih pikah izgubijo. Seveda so algoritmi, uporabljeni v kodekih JPEG, PNG itd., veliko bolj zapleteni, vendar je to dober intuitiven primer stiskanja z izgubo. Stiskanje brez izgub je dobro, vendar stisnjene datoteke brez izgub zasedejo veliko prostora na disku. Obstajajo učinkovitejši načini za stiskanje slik, ne da bi pri tem izgubili veliko informacij, vendar so precej počasni in mnogi uporabljajo iterativne pristope. To pomeni, da jih ni mogoče izvajati vzporedno na več jedrih CPU ali GPE. Zaradi te omejitve so popolnoma nepraktični za vsakodnevno uporabo.

Konvolucijski vnos nevronske mreže

Če je treba kaj izračunati in so izračuni morda približni, dodajte zivcno omrezje. Avtorji so za izboljšanje kompresije slike uporabili dokaj standardno konvolucijsko nevronsko mrežo. Predstavljena metoda ne deluje samo enako kot najboljše rešitve (če ne celo boljša), lahko uporablja tudi vzporedno računalništvo, kar ima za posledico dramatično povečanje hitrosti. Razlog je v tem, da so konvolucijske nevronske mreže (CNN) zelo dobre pri pridobivanju prostorskih informacij iz slik, ki so nato predstavljene v bolj kompaktni obliki (ohranijo se na primer samo "pomembni" deli slike). Avtorji so želeli uporabiti to funkcijo CNN za boljšo predstavitev slik.

arhitektura

Avtorji so predlagali dvojno mrežo. Prvo omrežje sprejme sliko kot vhod in ustvari kompaktno predstavitev (ComCNN). Izhod tega omrežja nato obdela standardni kodek (kot je JPEG). Ko jo kodek obdela, se slika pošlje drugemu omrežju, ki "popravi" sliko iz kodeka in poskuša vrniti izvirno sliko. Avtorji so to mrežo poimenovali rekonstrukcija CNN (RecCNN). Tako kot GAN se obe omrežji usposabljata iterativno.

Uporaba AI za prekomerno stiskanje slik
ComCNN Compact predstavitev prenesena na standardni kodek

Uporaba AI za prekomerno stiskanje slik
RecCNN. Izhod ComCNN se poveča in posreduje RecCNN, ki se bo poskušal naučiti preostanka

Izhod kodeka se poveča in nato posreduje RecCNN. RecCNN bo poskušal prikazati sliko, ki bo čim bolj podobna izvirniku.

Uporaba AI za prekomerno stiskanje slik
Ogrodje za stiskanje slik od konca do konca. Co(.) je algoritem za stiskanje slike. Avtorji so uporabili JPEG, JPEG2000 in BPG

Kaj je ostanek?

Preostanek si lahko predstavljamo kot korak naknadne obdelave za "izboljšanje" slike, ki jo dekodira kodek. Z veliko "informacijami" o svetu lahko nevronska mreža sprejema kognitivne odločitve o tem, kaj popraviti. Ta ideja temelji na preostalo usposabljanje, si preberite podrobnosti o katerih lahko tukaj.

Funkcije izgube

Uporabljeni sta dve funkciji izgube, ker imamo dve nevronski mreži. Prvi od njih, ComCNN, je označen z L1 in je definiran na naslednji način:

Uporaba AI za prekomerno stiskanje slik
Funkcija izgube za ComCNN

Pojasnilo

Ta enačba se morda zdi zapletena, vendar je pravzaprav standardna (srednja kvadratna napaka) MSE. ||² pomeni normo vektorja, ki ga zajemajo.

Uporaba AI za prekomerno stiskanje slik
Enačba 1.1

Cr označuje izhod ComCNN. θ označuje možnost usposabljanja parametrov ComCNN, XK je vhodna slika

Uporaba AI za prekomerno stiskanje slik
Enačba 1.2

Re() pomeni RecCNN. Ta enačba preprosto posreduje vrednost enačbe 1.1 v RecCNN. θ označuje parametre RecCNN, ki jih je mogoče učiti (pokrovček na vrhu pomeni, da so parametri fiksni).

Intuitivna definicija

Enačba 1.0 bo prisilila ComCNN, da spremeni svoje uteži tako, da bo končna slika pri rekonstrukciji z uporabo RecCNN čim bolj podobna vhodni sliki. Druga funkcija izgube RecCNN je definirana na naslednji način:

Uporaba AI za prekomerno stiskanje slik
Enačba 2.0

Pojasnilo

Funkcija je spet morda videti zapletena, vendar je večinoma standardna funkcija izgube nevronske mreže (MSE).

Uporaba AI za prekomerno stiskanje slik
Enačba 2.1

Co() pomeni izhod kodeka, x s kapico na vrhu pomeni izhod ComCNN. θ2 so parametri RecCNN, ki jih je mogoče učiti, res() je preprosto preostali rezultat RecCNN. Omeniti velja, da je RecCNN usposobljen za razliko med Co() in vhodno sliko, ne pa tudi na vhodni sliki.

Intuitivna definicija

Enačba 2.0 bo prisilila RecCNN, da spremeni svoje uteži, tako da bo izhod čim bolj podoben vhodni sliki.

Shema usposabljanja

Modeli se učijo iterativno, podobno kot GAN. Uteži prvega modela so določene, medtem ko so uteži drugega modela posodobljene, nato pa so uteži drugega modela določene, medtem ko se prvi model uri.

Testi

Avtorji so svojo metodo primerjali z obstoječimi metodami, vključno s preprostimi kodeki. Njihova metoda deluje bolje kot druge, hkrati pa ohranja visoko hitrost na ustrezni strojni opremi. Poleg tega so avtorji poskusili uporabiti samo eno od obeh omrežij in opazili padec zmogljivosti.

Uporaba AI za prekomerno stiskanje slik
Primerjava indeksa strukturne podobnosti (SSIM). Visoke vrednosti kažejo na večjo podobnost z izvirnikom. Rezultati dela avtorjev so označeni s krepkim tiskom.

Zaključek

Ogledali smo si nov način uporabe globokega učenja za stiskanje slik in govorili o možnostih uporabe nevronskih mrež pri opravilih, ki presegajo »splošna«, kot sta klasifikacija slik in obdelava jezika. Ta metoda ne le ni slabša od sodobnih zahtev, ampak vam omogoča tudi veliko hitrejšo obdelavo slik.

Preučevanje nevronskih mrež je postalo lažje, saj smo posebej za prebivalce Khabre ustvarili promocijsko kodo HABR, kar daje dodatnih 10% popusta na popust, naveden na pasici.

Uporaba AI za prekomerno stiskanje slik

Več tečajev

Predstavljeni članki

Vir: www.habr.com

Dodaj komentar