Paggamit ng AI para mag-overcompress ng mga larawan

Paggamit ng AI para mag-overcompress ng mga larawan
Ang mga algorithm na hinimok ng data tulad ng mga neural network ay bumagyo sa mundo. Ang kanilang pag-unlad ay hinihimok ng ilang kadahilanan, kabilang ang mura at malakas na hardware at malaking halaga ng data. Ang mga neural network ay kasalukuyang nangunguna sa lahat ng bagay na may kaugnayan sa "cognitive" na mga gawain tulad ng pagkilala sa imahe, natural na pag-unawa sa wika, atbp. Ngunit hindi sila dapat limitado sa gayong mga gawain. Inilalarawan ng materyal na ito ang isang paraan para sa pag-compress ng mga imahe gamit ang mga neural network gamit ang natitirang pag-aaral. Ang diskarte na ipinakita sa artikulo ay gumagana nang mas mabilis at mas mahusay kaysa sa mga karaniwang codec. Mga scheme, equation at, siyempre, isang talahanayan na may mga pagsubok sa ilalim ng hiwa.

Ang artikulong ito ay batay sa ito trabaho. Ipinapalagay na pamilyar ka sa mga neural network at sa kanilang mga konsepto pagkakagulo ΠΈ pagkawala ng function.

Ano ang image compression at anong mga uri nito ang pumapasok?

Ang image compression ay ang proseso ng pagbabago ng isang imahe upang ito ay tumatagal ng mas kaunting espasyo. Ang simpleng pag-iimbak ng mga larawan ay kukuha ng maraming espasyo, kaya may mga codec tulad ng JPEG at PNG na naglalayong bawasan ang laki ng orihinal na larawan.

Tulad ng alam mo, mayroong dalawang uri ng compression ng imahe: walang lugi ΠΈ may pagkalugi. Tulad ng iminumungkahi ng mga pangalan, ang lossless compression ay maaaring mabawi ang orihinal na data ng imahe, habang ang lossy compression ay nawawala ang ilang data sa panahon ng compression. halimbawa, ang JPG ay mga lossy algorithm [approx. pagsasalin - karaniwang, huwag din nating kalimutan ang tungkol sa lossless JPEG], at ang PNG ay isang lossless algorithm.

Paggamit ng AI para mag-overcompress ng mga larawan
Paghahambing ng lossless at lossy compression

Tandaan na ang larawan sa kanan ay maraming blocky artifact. Ito ay nawawalang impormasyon. Ang mga katabing pixel ng magkatulad na kulay ay na-compress bilang isang lugar upang makatipid ng espasyo, ngunit ang impormasyon tungkol sa aktwal na mga pixel ay nawala. Siyempre, ang mga algorithm na ginagamit sa JPEG, PNG, atbp. na mga codec ay mas kumplikado, ngunit ito ay isang magandang intuitive na halimbawa ng lossy compression. Ang lossless compression ay mabuti, ngunit ang losslessly compressed file ay tumatagal ng maraming espasyo sa disk. Mayroong mas mahusay na mga paraan upang i-compress ang mga imahe nang hindi nawawala ang maraming impormasyon, ngunit medyo mabagal ang mga ito at marami ang gumagamit ng mga umuulit na diskarte. Nangangahulugan ito na hindi maaaring patakbuhin ang mga ito nang magkatulad sa maraming CPU o GPU core. Ang limitasyong ito ay ginagawa silang ganap na hindi praktikal para sa pang-araw-araw na paggamit.

Convolutional Neural Network Input

Kung may kailangang kalkulahin at ang mga kalkulasyon ay maaaring tinatayang, idagdag neural network. Gumamit ang mga may-akda ng isang medyo karaniwang convolutional neural network upang mapabuti ang compression ng imahe. Ang ipinakita na pamamaraan ay hindi lamang gumaganap sa par sa mga pinakamahusay na solusyon (kung hindi mas mahusay), maaari din itong gumamit ng parallel computing, na nagreresulta sa isang dramatikong pagtaas sa bilis. Ang dahilan ay ang mga convolutional neural network (CNNs) ay napakahusay sa pagkuha ng spatial na impormasyon mula sa mga imahe, na pagkatapos ay kinakatawan sa isang mas compact na anyo (halimbawa, tanging ang "mahalaga" na mga piraso ng imahe ang pinananatili). Nais ng mga may-akda na gamitin ang tampok na ito ng CNN upang mas mahusay na kumatawan sa mga imahe.

arkitektura

Ang mga may-akda ay iminungkahi ng dalawahang network. Ang unang network ay kumukuha ng isang imahe bilang input at bumubuo ng isang compact na representasyon (ComCNN). Ang output ng network na ito ay pinoproseso ng isang karaniwang codec (tulad ng JPEG). Kapag naproseso na ng codec, ipapadala ang larawan sa pangalawang network, na "itinatama" ang larawan mula sa codec sa pagtatangkang ibalik ang orihinal na larawan. Tinawag ng mga may-akda ang network na ito na isang reconstruction CNN (RecCNN). Tulad ng mga GAN, ang parehong mga network ay sinasanay nang paulit-ulit.

Paggamit ng AI para mag-overcompress ng mga larawan
Ang ComCNN Compact na representasyon ay inilipat sa karaniwang codec

Paggamit ng AI para mag-overcompress ng mga larawan
RecCNN. Ang output ng ComCNN ay pinataas at ipinadala sa RecCNN, na susubukan na matutunan ang natitira

Ang output ng codec ay pinataas at pagkatapos ay ipinadala sa RecCNN. Susubukan ng RecCNN na mag-output ng isang imahe na katulad ng orihinal hangga't maaari.

Paggamit ng AI para mag-overcompress ng mga larawan
End-to-end na framework ng compression ng imahe. Ang Co(.) ay isang algorithm ng compression ng imahe. Gumamit ang mga may-akda ng JPEG, JPEG2000 at BPG

Ano ang natitira?

Ang natitira ay maaaring isipin bilang isang post-processing na hakbang upang "pahusayin" ang imahe na nade-decode ng codec. Sa maraming "impormasyon" tungkol sa mundo, ang isang neural network ay maaaring gumawa ng mga nagbibigay-malay na desisyon tungkol sa kung ano ang aayusin. Ang ideyang ito ay batay sa natitirang pagsasanay, basahin ang mga detalye kung saan mo magagawa dito.

Mga function ng pagkawala

Dalawang loss function ang ginagamit dahil mayroon kaming dalawang neural network. Ang una sa mga ito, ang ComCNN, ay may label na L1 at tinukoy bilang sumusunod:

Paggamit ng AI para mag-overcompress ng mga larawan
Pagkawala ng function para sa ComCNN

Paliwanag

Ang equation na ito ay maaaring mukhang kumplikado, ngunit ito ay talagang karaniwan (mean squared error) MSE. ||Β² ay nangangahulugang ang pamantayan ng vector na kanilang napapaloob.

Paggamit ng AI para mag-overcompress ng mga larawan
Equation 1.1

Tinutukoy ng Cr ang output ng ComCNN. Ang ΞΈ ay nagsasaad ng trainability ng ComCNN parameters, ang XK ay ang input image

Paggamit ng AI para mag-overcompress ng mga larawan
Equation 1.2

Re() ay kumakatawan sa RecCNN. Ipinapasa lang ng equation na ito ang value ng equation 1.1 sa RecCNN. Ang ΞΈ ay tumutukoy sa mga nasasanay na parameter ng RecCNN (ang cap sa itaas ay nangangahulugan na ang mga parameter ay naayos na).

Intuitive na kahulugan

Pipilitin ng Equation 1.0 ang ComCNN na baguhin ang mga timbang nito nang sa gayon, kapag muling itinayo gamit ang RecCNN, ang panghuling larawan ay mukhang katulad ng input na imahe hangga't maaari. Ang pangalawang function ng pagkawala ng RecCNN ay tinukoy bilang mga sumusunod:

Paggamit ng AI para mag-overcompress ng mga larawan
Equation 2.0

Paliwanag

Muli ang function ay maaaring mukhang kumplikado, ngunit ito ay para sa karamihan ng isang karaniwang neural network loss function (MSE).

Paggamit ng AI para mag-overcompress ng mga larawan
Equation 2.1

Co() nangangahulugang output ng codec, ang x na may takip sa itaas ay nangangahulugang output ng ComCNN. Ang ΞΈ2 ay ang mga nasasanay na parameter ng RecCNN, res() ay simpleng natitirang output ng RecCNN. Kapansin-pansin na ang RecCNN ay sinanay sa pagkakaiba sa pagitan ng Co() at ng input na imahe, ngunit hindi sa input na imahe.

Intuitive na kahulugan

Pipilitin ng Equation 2.0 ang RecCNN na baguhin ang mga timbang nito upang ang output ay mukhang katulad ng input na imahe hangga't maaari.

Skema ng pag-aaral

Ang mga modelo ay sinanay nang paulit-ulit, katulad ng GAN. Ang mga timbang ng unang modelo ay naayos habang ang mga timbang ng pangalawang modelo ay ina-update, pagkatapos ay ang mga timbang ng pangalawang modelo ay naayos habang ang unang modelo ay sinanay.

Mga Pagsubok

Inihambing ng mga may-akda ang kanilang pamamaraan sa mga kasalukuyang pamamaraan, kabilang ang mga simpleng codec. Ang kanilang pamamaraan ay gumagana nang mas mahusay kaysa sa iba habang pinapanatili ang mataas na bilis sa naaangkop na hardware. Bilang karagdagan, sinubukan ng mga may-akda na gumamit lamang ng isa sa dalawang network at napansin ang pagbaba sa pagganap.

Paggamit ng AI para mag-overcompress ng mga larawan
Paghahambing ng structural similarity index (SSIM). Ang mataas na halaga ay nagpapahiwatig ng mas mahusay na pagkakatulad sa orihinal. Ang mga resulta ng gawain ng mga may-akda ay naka-highlight sa bold.

Konklusyon

Tumingin kami sa isang bagong paraan upang gumamit ng malalim na pag-aaral para sa compression ng imahe, at pinag-usapan ang posibilidad ng paggamit ng mga neural network sa mga gawaing lampas sa mga "pangkalahatan", tulad ng pag-uuri ng imahe at pagproseso ng wika. Ang pamamaraang ito ay hindi lamang mas mababa sa modernong mga kinakailangan, ngunit nagbibigay-daan din sa iyo upang maproseso ang mga imahe nang mas mabilis.

Naging mas madali ang pag-aaral ng mga neural network, dahil gumawa kami ng code na pang-promosyon lalo na para sa mga residente ng Khabra HABR, na nagbibigay ng karagdagang 10% na diskwento sa diskwento na nakasaad sa banner.

Paggamit ng AI para mag-overcompress ng mga larawan

Higit pang mga kurso

Mga Itinatampok na Artikulo

Pinagmulan: www.habr.com

Magdagdag ng komento