Použití AI k překomprimování obrázků

Použití AI k překomprimování obrázků
Algoritmy řízené daty, jako jsou neuronové sítě, vzaly svět útokem. Jejich vývoj je dán několika důvody, včetně levného a výkonného vybavení a obrovského množství dat. Neuronové sítě jsou v současnosti v popředí všeho, co souvisí s „kognitivními“ úkoly, jako je rozpoznávání obrazu, porozumění přirozenému jazyku atd. Neměli by se však omezovat na takové úkoly. Tento článek hovoří o tom, jak komprimovat obrázky pomocí neuronových sítí pomocí zbytkového učení. Přístup uvedený v článku je rychlejší a lepší než standardní kodeky. Schémata, rovnice a samozřejmě tabulka s testy pod řezem.

Tento článek je založen na tohle práce. Předpokládá se, že jste obeznámeni s neuronovými sítěmi a jejich koncepty. konvoluce и ztrátová funkce.

Co je to komprese obrazu a jak funguje?

Komprese obrazu je proces převodu obrazu tak, aby zabíral méně místa. Pouhé ukládání obrázků by zabralo spoustu místa, a proto existují kodeky jako JPEG a PNG, které mají za cíl zmenšit velikost původního obrázku.

Jak víte, existují dva typy komprese obrazu: žádná ztráta и se ztrátami. Jak názvy napovídají, bezeztrátová komprese dokáže zachovat původní obrazová data, zatímco ztrátová komprese během komprese některá data ztratí. například JPG jsou ztrátové algoritmy [cca. přel. - v podstatě také nezapomínejme na bezeztrátový JPEG] a PNG je bezztrátový algoritmus.

Použití AI k překomprimování obrázků
Porovnání bezeztrátové a ztrátové komprese

Všimněte si, že na obrázku vpravo je spousta hranatých artefaktů. Toto je ztracená informace. Sousední pixely podobných barev jsou komprimovány jako jedna oblast, aby se ušetřilo místo, ale informace o skutečných pixelech jsou ztraceny. Samozřejmě, že algoritmy používané v kodecích JPEG, PNG atd. jsou mnohem složitější, ale toto je dobrý intuitivní příklad ztrátové komprese. Bezeztrátová komprese je dobrá, ale bezeztrátově komprimované soubory zabírají hodně místa na disku. Existují lepší způsoby, jak komprimovat obrázky bez ztráty mnoha informací, ale jsou poměrně pomalé a mnoho z nich používá iterativní přístupy. To znamená, že je nelze spouštět paralelně na více jádrech CPU nebo GPU. Toto omezení je činí zcela nepraktickými při každodenním používání.

Vstup konvoluční neuronové sítě

Pokud je potřeba něco spočítat a výpočty mohou být přibližné, přidejte nervová síť. Autoři pro zlepšení komprese obrazu použili celkem standardní konvoluční neuronovou síť. Prezentovaná metoda nejen funguje na stejné úrovni s nejlepšími řešeními (ne-li lépe), může také používat paralelní výpočty, což vede k dramatickému zvýšení rychlosti. Důvodem je, že konvoluční neuronové sítě (CNN) jsou velmi dobré ve získávání prostorových informací z obrázků, které jsou pak prezentovány v kompaktnější podobě (například jsou zachovány pouze „důležité“ bity obrázku). Autoři chtěli využít tuto schopnost CNN k lepší reprezentaci obrázků.

architektura

Autoři navrhli dvojitou síť. První síť bere jako vstup obrázek a generuje kompaktní reprezentaci (ComCNN). Výstup této sítě je pak zpracován standardním kodekem (např. JPEG). Po zpracování kodekem je obrázek předán druhé síti, která „opraví“ obrázek z kodeku ve snaze vrátit původní obrázek. Autoři tuto síť pojmenovali Reconstructive CNN (RecCNN). Stejně jako sítě GAN jsou obě sítě trénovány iterativně.

Použití AI k překomprimování obrázků
Reprezentace ComCNN Compact je předána standardnímu kodeku

Použití AI k překomprimování obrázků
RecCNN. Výstup ComCNN se zvětší a přivede do RecCNN, které se pokusí naučit zbytek

Výstup kodeku je zvětšen a poté předán RecCNN. RecCNN se pokusí vykreslit obrázek co nejblíže originálu.

Použití AI k překomprimování obrázků
End-to-end rámec pro kompresi obrazu. Co(.) je algoritmus pro kompresi obrazu. Autoři použili JPEG, JPEG2000 a BPG

Co je zbytek?

Zbytek lze považovat za krok následného zpracování pro "vylepšení" obrazu, který je dekódován kodekem. Díky velkému množství „informací“ o světě může neuronová síť činit kognitivní rozhodnutí o tom, co opravit. Tato myšlenka je založena na zbytkové učení, přečtěte si podrobnosti, o kterých můžete zde.

Ztrátové funkce

Dvě ztrátové funkce se používají, protože máme dvě neuronové sítě. První z nich, ComCNN, je označen L1 a je definován takto:

Použití AI k překomprimování obrázků
Ztrátová funkce pro ComCNN

Vysvětlení

Tato rovnice se může zdát komplikovaná, ale ve skutečnosti je to standardní (odmocnina s kvadratickou chybou) MSE. ||² znamená normu vektoru, který obklopují.

Použití AI k překomprimování obrázků
Rovnice 1.1

Cr označuje výstup ComCNN. θ označuje naučitelnost parametrů ComCNN, XK je vstupní obrázek

Použití AI k překomprimování obrázků
Rovnice 1.2

Re() znamená RecCNN. Tato rovnice jednoduše přenáší význam rovnice 1.1 do RecCNN. θ označuje trénovatelné parametry RecCNN (klobouk nahoře znamená, že parametry jsou pevné).

Intuitivní definice

Rovnice 1.0 způsobí, že ComCNN změní své váhy tak, že po opětovném vytvoření pomocí RecCNN bude konečný obrázek vypadat co nejpodobněji vstupnímu obrázku. Druhá funkce ztráty RecCNN je definována takto:

Použití AI k překomprimování obrázků
Rovnice 2.0

Vysvětlení

Opět, funkce může vypadat složitě, ale z větší části se jedná o standardní funkci ztráty neuronové sítě (MSE).

Použití AI k překomprimování obrázků
Rovnice 2.1

Co() znamená výstup kodeku, x s kloboukem nahoře znamená výstup ComCNN. θ2 jsou RecCNN trénovatelné parametry, res() je pouze zbytkový výstup RecCNN. Stojí za zmínku, že RecCNN je trénováno na rozdílu mezi Co() a vstupním obrázkem, ale ne na vstupním obrázku.

Intuitivní definice

Rovnice 2.0 způsobí, že RecCNN změní své váhy tak, aby výstup vypadal co nejvíce podobně jako vstupní obrázek.

Tréninkové schéma

Modely se trénují iterativně, např GAN. Váhy prvního modelu jsou fixovány, zatímco jsou aktualizovány váhy druhého modelu, poté jsou váhy druhého modelu fixovány, zatímco je trénován první model.

Testy

Autoři porovnávali svou metodu se stávajícími metodami, včetně jednoduchých kodeků. Jejich metoda funguje lépe než ostatní při zachování vysoké rychlosti na příslušném hardwaru. Autoři se navíc pokusili využít pouze jednu ze dvou sítí a zaznamenali pokles výkonu.

Použití AI k překomprimování obrázků
Porovnání indexu strukturní podobnosti (SSIM). Vysoké hodnoty naznačují lepší podobnost s originálem. Tučné písmo označuje výsledek práce autorů

Závěr

Podívali jsme se na nový způsob, jak aplikovat hluboké učení na kompresi obrazu, a hovořili jsme o možnosti použití neuronových sítí v úkolech nad rámec „obecných“ úkolů, jako je klasifikace obrázků a zpracování jazyka. Tato metoda nejenže není horší než moderní požadavky, ale také vám umožňuje zpracovávat obrázky mnohem rychleji.

Učení neuronových sítí je jednodušší, protože jsme vytvořili promo kód speciálně pro Habravchan HABR, poskytující dodatečnou slevu 10 % ke slevě uvedené na banneru.

Použití AI k překomprimování obrázků

Více kurzů

Doporučené články

Zdroj: www.habr.com

Přidat komentář