Używanie sztucznej inteligencji do nadmiernej kompresji obrazów

Używanie sztucznej inteligencji do nadmiernej kompresji obrazów
Algorytmy oparte na danych, takie jak sieci neuronowe, podbiły świat. Ich rozwój wynika z kilku powodów, w tym taniego i wydajnego sprzętu oraz ogromnej ilości danych. Sieci neuronowe przodują obecnie we wszystkim, co dotyczy zadań „poznawczych”, takich jak rozpoznawanie obrazów, rozumienie języka naturalnego itp. Nie należy ich jednak ograniczać do takich zadań. Ten artykuł mówi o tym, jak kompresować obrazy za pomocą sieci neuronowych, wykorzystując uczenie szczątkowe. Podejście przedstawione w artykule jest szybsze i lepsze od standardowych kodeków. Schematy, równania i oczywiście tabela z testami pod wycięciem.

Ten artykuł jest oparty na to praca. Zakłada się, że jesteś zaznajomiony z sieciami neuronowymi i ich koncepcjami. skręt и funkcja straty.

Co to jest kompresja obrazu i jak działa?

Kompresja obrazu to proces przekształcania obrazu w taki sposób, aby zajmował mniej miejsca. Samo przechowywanie obrazów zajęłoby dużo miejsca, dlatego istnieją kodeki, takie jak JPEG i PNG, które mają na celu zmniejszenie rozmiaru oryginalnego obrazu.

Jak wiesz, istnieją dwa rodzaje kompresji obrazu: bez strat и ze stratami. Jak sugerują nazwy, kompresja bezstratna może zachować oryginalne dane obrazu, podczas gdy kompresja stratna powoduje utratę niektórych danych podczas kompresji. na przykład JPG to algorytmy stratne [ok. tłumacz. - w zasadzie nie zapominajmy też o bezstratnym JPEG], a PNG to algorytm bezstratny.

Używanie sztucznej inteligencji do nadmiernej kompresji obrazów
Porównanie kompresji bezstratnej i stratnej

Zauważ, że na obrazku po prawej stronie znajduje się wiele blokowych artefaktów. To są utracone informacje. Sąsiednie piksele o podobnych kolorach są kompresowane jako pojedynczy obszar, aby zaoszczędzić miejsce, ale informacje o rzeczywistych pikselach są tracone. Oczywiście algorytmy używane w kodekach JPEG, PNG itp. są znacznie bardziej złożone, ale jest to dobry intuicyjny przykład kompresji stratnej. Bezstratna kompresja jest dobra, ale bezstratne skompresowane pliki zajmują dużo miejsca na dysku. Istnieją lepsze sposoby kompresji obrazów bez utraty dużej ilości informacji, ale są one dość powolne i wiele z nich stosuje podejścia iteracyjne. Oznacza to, że nie można ich uruchamiać równolegle na wielu rdzeniach procesora lub karty graficznej. To ograniczenie czyni je zupełnie niepraktycznymi w codziennym użytkowaniu.

Wejście konwolucyjnej sieci neuronowej

Jeśli coś trzeba obliczyć, a obliczenia mogą być przybliżone, dodaj sieć neuronowa. Autorzy wykorzystali dość standardową konwolucyjną sieć neuronową, aby poprawić kompresję obrazu. Przedstawiona metoda nie tylko dorównuje najlepszym rozwiązaniom (jeśli nie lepszymi), ale może również wykorzystywać obliczenia równoległe, co prowadzi do dramatycznego wzrostu szybkości. Powodem jest to, że konwolucyjne sieci neuronowe (CNN) bardzo dobrze wydobywają informacje przestrzenne z obrazów, które są następnie prezentowane w bardziej zwartej formie (na przykład zachowywane są tylko „ważne” fragmenty obrazu). Autorzy chcieli wykorzystać tę funkcję CNN do lepszego przedstawienia obrazów.

Architektura

Autorzy zaproponowali podwójną sieć. Pierwsza sieć pobiera obraz jako dane wejściowe i generuje zwartą reprezentację (ComCNN). Dane wyjściowe tej sieci są następnie przetwarzane przez standardowy kodek (np. JPEG). Po przetworzeniu przez kodek obraz jest przekazywany do drugiej sieci, która „naprawia” obraz z kodeka, próbując przywrócić obraz oryginalny. Autorzy nazwali tę sieć Reconstructive CNN (RecCNN). Podobnie jak sieci GAN, obie sieci są szkolone iteracyjnie.

Używanie sztucznej inteligencji do nadmiernej kompresji obrazów
Reprezentacja ComCNN Compact jest przekazywana do standardowego kodeka

Używanie sztucznej inteligencji do nadmiernej kompresji obrazów
RecCNN. Wyjście ComCNN jest skalowane w górę i przekazywane do RecCNN, które spróbuje nauczyć się reszty

Dane wyjściowe kodeka są skalowane w górę, a następnie przekazywane do RecCNN. RecCNN spróbuje renderować obraz jak najbardziej zbliżony do oryginału.

Używanie sztucznej inteligencji do nadmiernej kompresji obrazów
Kompleksowa struktura kompresji obrazu. Co(.) to algorytm kompresji obrazu. Autorzy wykorzystali JPEG, JPEG2000 i BPG

Co to jest reszta?

Pozostałą część można traktować jako etap przetwarzania końcowego mający na celu „ulepszenie” obrazu dekodowanego przez kodek. Dysponując dużą ilością „informacji” o świecie, sieć neuronowa może podejmować kognitywne decyzje dotyczące tego, co należy naprawić. Pomysł ten opiera się na pozostałości nauki, przeczytaj szczegóły, o których możesz tutaj.

Funkcje strat

Dwie funkcje strat są używane, ponieważ mamy dwie sieci neuronowe. Pierwszy z nich, ComCNN, jest oznaczony jako L1 i jest zdefiniowany w następujący sposób:

Używanie sztucznej inteligencji do nadmiernej kompresji obrazów
Funkcja straty dla ComCNN

Wyjaśnienie

To równanie może wydawać się skomplikowane, ale w rzeczywistości jest to standard (średni błąd kwadratowy) MSE. ||² oznacza normę wektora, który zawierają.

Używanie sztucznej inteligencji do nadmiernej kompresji obrazów
Równanie 1.1

Cr oznacza dane wyjściowe ComCNN. θ oznacza zdolność uczenia się parametrów ComCNN, XK to obraz wejściowy

Używanie sztucznej inteligencji do nadmiernej kompresji obrazów
Równanie 1.2

Re() oznacza RecCNN. To równanie po prostu przekazuje znaczenie równania 1.1 do RecCNN. θ oznacza parametry, które można wytrenować w RecCNN (kapelusz na górze oznacza, że ​​parametry są stałe).

Intuicyjna definicja

Równanie 1.0 spowoduje, że ComCNN zmieni swoje wagi, tak aby po odtworzeniu za pomocą RecCNN końcowy obraz wyglądał jak najbardziej podobnie do obrazu wejściowego. Druga funkcja strat RecCNN jest zdefiniowana następująco:

Używanie sztucznej inteligencji do nadmiernej kompresji obrazów
Równanie 2.0

Wyjaśnienie

Ponownie, funkcja może wyglądać na skomplikowaną, ale jest to w większości standardowa funkcja utraty sieci neuronowej (MSE).

Używanie sztucznej inteligencji do nadmiernej kompresji obrazów
Równanie 2.1

Co() oznacza wyjście kodeka, x z kapeluszem na górze oznacza wyjście ComCNN. θ2 to parametry możliwe do wytrenowania przez RecCNN, res() to tylko pozostała produkcja RecCNN. Warto zauważyć, że RecCNN jest szkolony w zakresie różnicy między Co() a obrazem wejściowym, ale nie w zakresie obrazu wejściowego.

Intuicyjna definicja

Równanie 2.0 spowoduje, że RecCNN zmieni swoje wagi, tak aby dane wyjściowe wyglądały jak najbardziej podobnie do obrazu wejściowego.

Program szkolenia

Modele są szkolone iteracyjnie, np GAN. Wagi pierwszego modelu są ustalane podczas aktualizacji wag drugiego modelu, następnie wagi drugiego modelu są ustalane podczas trenowania pierwszego modelu.

Testy

Autorzy porównali swoją metodę z istniejącymi metodami, w tym prostymi kodekami. Ich metoda działa lepiej niż inne, zachowując wysoką prędkość na odpowiednim sprzęcie. Ponadto autorzy próbowali korzystać tylko z jednej z dwóch sieci i odnotowali spadek wydajności.

Używanie sztucznej inteligencji do nadmiernej kompresji obrazów
Porównanie indeksu podobieństwa strukturalnego (SSIM). Wysokie wartości wskazują na większe podobieństwo do oryginału. Pogrubiona czcionka wskazuje na wynik pracy autorów

wniosek

Przyjrzeliśmy się nowemu sposobowi zastosowania głębokiego uczenia się do kompresji obrazu i rozmawialiśmy o możliwości wykorzystania sieci neuronowych w zadaniach wykraczających poza „ogólne” zadania, takie jak klasyfikacja obrazu i przetwarzanie języka. Ta metoda nie tylko nie ustępuje współczesnym wymaganiom, ale także pozwala znacznie szybciej przetwarzać obrazy.

Nauka sieci neuronowych stała się łatwiejsza, ponieważ stworzyliśmy kod promocyjny specjalnie dla Habravchan Habr., dając dodatkowo 10% rabatu do rabatu wskazanego na banerze.

Używanie sztucznej inteligencji do nadmiernej kompresji obrazów

Więcej kursów

Polecane artykuły

Źródło: www.habr.com

Dodaj komentarz