Andmepõhised algoritmid, nagu närvivõrgud, on vallutanud maailma tormiliselt. Nende arendamise taga on mitu põhjust, sealhulgas odav ja võimas varustus ning tohutu andmemaht. Närvivõrgud on praegu esirinnas kõiges, mis on seotud "kognitiivsete" ülesannetega nagu pildituvastus, loomuliku keele mõistmine jne. Kuid need ei tohiks piirduda selliste ülesannetega. See artikkel räägib piltide tihendamisest närvivõrkude abil, kasutades jääkõpet. Artiklis esitatud lähenemisviis on kiirem ja parem kui tavalised koodekid. Skeemid, võrrandid ja loomulikult tabel katsetega lõike all.
See artikkel põhineb see tööd. Eeldatakse, et tunnete närvivõrke ja nende mõisteid. keerdumist и kaotusfunktsioon.
Mis on pildi tihendamine ja kuidas see toimib?
Pildi tihendamine on protsess, mille käigus pilt teisendatakse nii, et see võtab vähem ruumi. Lihtsalt piltide salvestamine võtaks palju ruumi, mistõttu on olemas koodekeid, nagu JPEG ja PNG, mille eesmärk on vähendada algse pildi suurust.
Nagu teate, on piltide tihendamist kahte tüüpi: kaotust pole и kaotustega. Nagu nimed viitavad, võib kadudeta pakkimine säilitada algsed pildiandmed, samas kui kadudeta pakkimine kaotab tihendamise ajal osa andmeid. näiteks JPG on kadudega algoritmid [umbes. tõlge - põhimõtteliselt ärgem unustagem ka kadudeta JPEG-d] ja PNG on kadudeta algoritm.
Kadudeta ja kadudeta tihendamise võrdlus
Pange tähele, et parempoolsel pildil on palju blokeeritud esemeid. See on kadunud teave. Sarnaste värvidega naaberpikslid tihendatakse ruumi säästmiseks ühe alana, kuid teave tegelike pikslite kohta läheb kaotsi. Muidugi on JPEG-, PNG- jne koodekites kasutatavad algoritmid palju keerukamad, kuid see on hea intuitiivne näide kadudega pakkimisest. Kadudeta tihendamine on hea, kuid kadudeta tihendatud failid võtavad palju kettaruumi. Piltide tihendamiseks ilma palju teavet kaotamata on paremaid viise, kuid need on üsna aeglased ja paljud kasutavad iteratiivseid lähenemisviise. See tähendab, et neid ei saa paralleelselt käivitada mitmel CPU või GPU tuumal. See piirang muudab need igapäevases kasutuses täiesti ebapraktiliseks.
Konvolutsiooniline närvivõrgu sisend
Kui midagi on vaja arvutada ja arvutused võivad olla ligikaudsed, lisage närvivõrk. Autorid kasutasid kujutise tihendamise parandamiseks üsna standardset konvolutsioonilist närvivõrku. Esitatud meetod ei toimi mitte ainult parimate lahendustega (kui mitte paremini), vaid võib kasutada ka paralleelset andmetöötlust, mis suurendab kiirust järsult. Põhjus on selles, et konvolutsioonilised närvivõrgud (Convolutional Neural Networks, CNN) suudavad väga hästi eraldada piltidelt ruumilist teavet, mis seejärel kompaktsemal kujul esitatakse (näiteks säilivad pildist ainult "olulised" bitid). Autorid soovisid seda CNN-i võimalust kasutada piltide paremaks esitamiseks.
arhitektuur
Autorid pakkusid välja topeltvõrgu. Esimene võrk võtab sisendiks pildi ja genereerib kompaktse esituse (ComCNN). Selle võrgu väljundit töötleb seejärel standardkoodek (nt JPEG). Pärast kodeki poolt töötlemist edastatakse pilt teise võrku, mis "parandab" kodekist pärineva pildi, püüdes taastada algset pilti. Autorid andsid sellele võrgule nimeks Reconstructive CNN (RecCNN). Nagu GAN-id, koolitatakse mõlemat võrku iteratiivselt.
RecCNN. ComCNN-i väljundit suurendatakse ja see suunatakse RecCNN-ile, mis püüab ülejäänud osa õppida
Kodeki väljundit suurendatakse ja seejärel edastatakse RecCNN-ile. RecCNN püüab pilti renderdada võimalikult originaalilähedaselt.
Piltide täieliku tihendamise raamistik. Co(.) on pildi tihendamise algoritm. Autorid kasutasid JPEG, JPEG2000 ja BPG
Mis on jääk?
Ülejäänud osa võib pidada järeltöötlusetapiks kodeki poolt dekodeeritava pildi "parandamiseks". Omades maailma kohta palju "teavet", saab närvivõrk teha kognitiivseid otsuseid selle kohta, mida parandada. See idee põhineb jääkõpe, lugege üksikasju, mille kohta saate siin.
Kaotamise funktsioonid
Kahte kadufunktsiooni kasutatakse, kuna meil on kaks närvivõrku. Esimene neist, ComCNN, on märgistatud L1 ja on määratletud järgmiselt:
ComCNN-i kadumise funktsioon
Seletus
See võrrand võib tunduda keeruline, kuid tegelikult on see standard (ruutkeskmine viga) MSE. ||² tähendab nende ümbritsetud vektori normi.
Võrrand 1.1
Cr tähistab ComCNN-i väljundit. θ tähistab ComCNN-i parameetrite õpitavust, XK on sisendpilt
Võrrand 1.2
Re() tähistab RecCNN-i. See võrrand lihtsalt edastab võrrandi 1.1 tähenduse RecCNN-ile. θ tähistab RecCNN-i treenitavaid parameetreid (müts peal tähendab, et parameetrid on fikseeritud).
Intuitiivne definitsioon
Võrrand 1.0 paneb ComCNN-i oma kaalu muutma, nii et RecCNN-iga uuesti loomisel näeb lõplik pilt välja sisendpildiga võimalikult sarnane. Teine RecCNN-i kadufunktsioon on määratletud järgmiselt:
Võrrand 2.0
Seletus
Jällegi võib funktsioon tunduda keeruline, kuid see on enamasti tavaline närvivõrgu kadumise funktsioon (MSE).
Võrrand 2.1
Co() tähendab koodeki väljundit, x, mille peal on müts, tähendab ComCNN väljundit. θ2 on RecCNN-i treenitavad parameetrid, res() on lihtsalt RecCNNi jääkväljund. Väärib märkimist, et RecCNN on koolitatud Co() ja sisendkujutise erinevuse kohta, kuid mitte sisendkujutise osas.
Intuitiivne definitsioon
Võrrand 2.0 paneb RecCNN-i oma kaalu muutma, et väljund näeks välja sisendpildiga võimalikult sarnane.
Koolituse skeem
Mudeleid koolitatakse iteratiivselt, nagu GAN. Esimese mudeli raskused fikseeritakse teise mudeli kaalude uuendamise ajal, seejärel teise mudeli raskused fikseeritakse esimese mudeli treenimise ajal.
Testid
Autorid võrdlesid oma meetodit olemasolevate meetoditega, sealhulgas lihtsate koodekitega. Nende meetod toimib paremini kui teised, säilitades samal ajal suure kiiruse sobival riistvaral. Lisaks püüdsid autorid kasutada ainult ühte kahest võrgust ja märkisid jõudluse langust.
Struktuurilise sarnasuse indeksi võrdlus (SSIM). Kõrged väärtused näitavad paremat sarnasust originaaliga. Paks tüüp tähistab autorite töö tulemust
Järeldus
Vaatlesime uut viisi sügava õppimise rakendamiseks piltide tihendamisel ja rääkisime võimalusest kasutada närvivõrke ülesannetes, mis on lisaks "üldistele" ülesannetele, nagu piltide klassifitseerimine ja keeletöötlus. See meetod ei ole mitte ainult kaasaegsetele nõuetele madalam, vaid võimaldab ka pilte palju kiiremini töödelda.
Närvivõrkude õppimine on muutunud lihtsamaks, kuna tegime spetsiaalselt Habravchani jaoks sooduskoodi HABR, andes bänneril märgitud allahindlusele lisaks 10% allahindlust.