Uzante AI por trokunpremi bildojn

Uzante AI por trokunpremi bildojn
Daten-movitaj algoritmoj kiel neŭralaj retoj atakis la mondon. Ilia evoluo ŝuldiĝas al pluraj kialoj, inkluzive de malmultekostaj kaj potencaj ekipaĵoj kaj grandega kvanto da datumoj. Neŭralaj retoj estas nuntempe ĉe la avangardo de ĉio rilata al "kognaj" taskoj kiel bildrekono, naturlingva kompreno ktp. Sed ili ne devus esti limigitaj al tiaj taskoj. Ĉi tiu artikolo parolas pri kiel kunpremi bildojn per neŭralaj retoj, uzante restan lernadon. La aliro prezentita en la artikolo estas pli rapida kaj pli bona ol normaj kodekoj. Skemoj, ekvacioj kaj, kompreneble, tablo kun provoj sub la tranĉo.

Ĉi tiu artikolo baziĝas sur ĉi tio laboro. Oni supozas, ke vi konas neŭralaj retoj kaj iliaj konceptoj. konvolucio и perdo funkcio.

Kio estas bildpremado kaj kiel ĝi funkcias?

Bildkunpremo estas la procezo de konvertado de bildo tiel ke ĝi okupas malpli da spaco. Simple stoki bildojn okupus multe da spaco, tial ekzistas kodekoj kiel JPEG kaj PNG, kiuj celas redukti la grandecon de la originala bildo.

Kiel vi scias, ekzistas du specoj de bildkunpremo: neniu perdo и kun perdoj. Kiel la nomoj sugestas, senperda kunpremado povas reteni la originajn bilddatenojn, dum perda kunpremado perdas iujn datumojn dum kunpremado. ekzemple, JPG estas perdaj algoritmoj [ĉ. transl. - baze, ni ankaŭ ne forgesu pri senperda JPEG], kaj PNG estas senperda algoritmo.

Uzante AI por trokunpremi bildojn
Komparo de senperda kaj perda kunpremo

Rimarku, ke estas multaj blokitaj artefaktoj en la bildo dekstre. Ĉi tio estas perdita informo. Najbaraj pikseloj de similaj koloroj estas kunpremitaj kiel ununura areo por ŝpari spacon, sed informoj pri la realaj pikseloj estas perditaj. Kompreneble, la algoritmoj uzataj en la kodekoj JPEG, PNG, ktp estas multe pli kompleksaj, sed ĉi tio estas bona intuicia ekzemplo de perda kunpremo. Senperda kunpremado estas bona, sed senperdaj kunpremitaj dosieroj okupas multe da diskospaco. Estas pli bonaj manieroj kunpremi bildojn sen perdi multajn informojn, sed ili estas sufiĉe malrapidaj kaj multaj uzas ripetajn alirojn. Ĉi tio signifas, ke ili ne povas funkcii paralele sur multoblaj CPU aŭ GPU-kernoj. Ĉi tiu limigo faras ilin tute nepraktikaj en ĉiutaga uzo.

Konvolucia Neŭrala Reto-enigo

Se io devas esti kalkulita kaj la kalkuloj povas esti proksimumaj, aldonu neŭrala reto. La verkintoj uzis sufiĉe norman konvolucian neŭralan reton por plibonigi bildkunpremadon. La prezentita metodo ne nur agas samkiel la plej bonaj solvoj (se ne pli bone), ĝi ankaŭ povas uzi paralelan komputadon, kio kondukas al drama pliiĝo de rapideco. La kialo estas, ke Konvoluciaj Neŭralaj Retoj (CNN) tre lertas ĉerpi spacajn informojn de bildoj, kiuj tiam estas prezentitaj en pli kompakta formo (ekzemple, nur la "gravaj" pecoj de la bildo estas konservitaj). La aŭtoroj volis uzi ĉi tiun kapablon de CNN por pli bone reprezenti la bildojn.

arkitekturo

La aŭtoroj proponis duoblan reton. La unua reto prenas bildon kiel enigaĵon kaj generas kompaktan reprezentadon (ComCNN). La produktaĵo de tiu reto tiam estas prilaborita per norma kodeko (ekz. JPEG). Post estado prilaborita per la kodeko, la bildo estas pasita al dua reto, kiu "fiksas" la bildon de la kodeko en provo resendi la originan bildon. La aŭtoroj nomis ĉi tiun reton Reconstructive CNN (RecCNN). Kiel GANoj, ambaŭ retoj estas trejnitaj ripete.

Uzante AI por trokunpremi bildojn
ComCNN Compact-reprezentantaro estas pasita al norma kodeko

Uzante AI por trokunpremi bildojn
RecCNN. ComCNN-produktaĵo estas pligrandigita kaj provizita al RecCNN, kiu provos lerni la reston

La kodeka eligo estas pligrandigita kaj poste transdonita al RecCNN. RecCNN provos bildigi la bildon kiel eble plej proksime al la originalo.

Uzante AI por trokunpremi bildojn
Fin-al-fina bildkunprema kadro. Co(.) estas bildkunprema algoritmo. La aŭtoroj uzis JPEG, JPEG2000 kaj BPG

Kio estas restaĵo?

La resto povas esti opiniita de post-prilabora paŝo por "plibonigi" la bildon estantan deĉifrita per la kodeko. Havante multajn "informojn" pri la mondo, neŭrala reto povas fari kognajn decidojn pri tio, kion ripari. Ĉi tiu ideo baziĝas sur resta lernado, legu la detalojn pri kiuj vi povas tie.

Funkcioj de perdo

La du perdfunkcioj estas uzataj ĉar ni havas du neŭralaj retoj. La unua el tiuj, ComCNN, estas etikedita L1 kaj estas difinita jene:

Uzante AI por trokunpremi bildojn
Perdfunkcio por ComCNN

Klarigo

Ĉi tiu ekvacio povas ŝajni komplika, sed ĝi estas fakte la normo (radika kvadrata eraro) MSE. ||² signifas la normo de la vektoro, kiun ili enfermas.

Uzante AI por trokunpremi bildojn
Ekvacio 1.1

Cr indikas la produktadon de ComCNN. θ indikas la lerneblecon de ComCNN-parametroj, XK estas la eniga bildo

Uzante AI por trokunpremi bildojn
Ekvacio 1.2

Re() signifas RecCNN. Ĉi tiu ekvacio simple peras la signifon de ekvacio 1.1 al RecCNN. θ indikas la trejneblajn parametrojn de RecCNN (ĉapelo supre signifas, ke la parametroj estas fiksitaj).

Intuicia Difino

Ekvacio 1.0 igos ComCNN ŝanĝi siajn pezojn tiel ke kiam rekreite kun RecCNN, la fina bildo aspektas kiel eble plej simila al la eniga bildo. La dua RecCNN-perdfunkcio estas difinita jene:

Uzante AI por trokunpremi bildojn
Ekvacio 2.0

Klarigo

Denove, la funkcio povas aspekti komplika, sed ĉi tio plejparte estas norma perdo de neŭrala reto (MSE).

Uzante AI por trokunpremi bildojn
Ekvacio 2.1

Co() signifas kodekan eligon, x kun ĉapelo supre signifas ComCNN-eligon. θ2 estas RecCNN trejneblaj parametroj, res() estas nur la resta eligo de RecCNN. Indas noti, ke RecCNN estas trejnita pri la diferenco inter Co() kaj la eniga bildo, sed ne pri la eniga bildo.

Intuicia Difino

Ekvacio 2.0 igos RecCNN ŝanĝi siajn pezojn tiel ke la eligo aspektas kiel eble plej simila al la eniga bildo.

Lernadskemo

Modeloj estas trejnitaj ripete, kiel GAN. La pezoj de la unua modelo estas fiksitaj dum la pezoj de la dua modelo estas ĝisdatigitaj, tiam la pezoj de la dua modelo estas fiksitaj dum la unua modelo estas trejnita.

Provoj

La aŭtoroj komparis sian metodon kun ekzistantaj metodoj, inkluzive de simplaj kodekoj. Ilia metodo funkcias pli bone ol aliaj konservante altan rapidecon sur la taŭga aparataro. Krome, la aŭtoroj provis uzi nur unu el la du retoj kaj rimarkis malpliiĝon de rendimento.

Uzante AI por trokunpremi bildojn
Struktura Simileca Indeksa Komparo (SSIM). Altaj valoroj indikas pli bonan similecon al la originalo. Grada tipo indikas la rezulton de la laboro de la aŭtoroj

konkludo

Ni rigardis novan manieron apliki profundan lernadon al bildkunpremado, kaj parolis pri la ebleco uzi neŭralajn retojn en taskoj preter "ĝeneralaj" taskoj kiel bildklasifiko kaj lingva prilaborado. Ĉi tiu metodo ne nur ne malsuperas modernajn postulojn, sed ankaŭ permesas vin prilabori bildojn multe pli rapide.

Lernado de neŭralaj retoj fariĝis pli facila, ĉar ni faris reklaman kodon speciale por Habravchan HABR, donante plian 10% rabaton al la rabato indikita sur la standardo.

Uzante AI por trokunpremi bildojn

Pli da kursoj

Elstaraj Artikoloj

fonto: www.habr.com

Aldoni komenton