Şəkilləri sıxışdırmaq üçün AI-dan istifadə

Şəkilləri sıxışdırmaq üçün AI-dan istifadə
Neyron şəbəkələri kimi verilənlərə əsaslanan alqoritmlər dünyanı fırtına ilə ələ keçirdi. Onların inkişafı ucuz və güclü avadanlıq və çoxlu məlumat da daxil olmaqla bir neçə səbəblə bağlıdır. Neyron şəbəkələri hal-hazırda təsvirin tanınması, təbii dilin anlaşılması və s. Lakin onlar bu cür vəzifələrlə məhdudlaşmamalıdırlar. Bu məqalə neyron şəbəkələrdən istifadə edərək, qalıq öyrənmədən istifadə edərək şəkilləri necə sıxışdırmaqdan bəhs edir. Məqalədə təqdim olunan yanaşma standart kodeklərdən daha sürətli və daha yaxşıdır. Sxemlər, tənliklər və əlbəttə ki, kəsik altında testlər olan bir cədvəl.

Bu məqaləyə əsaslanır bu iş. Neyron şəbəkələri və onların anlayışları ilə tanış olduğunuz güman edilir. qıvrım и itki funksiyası.

Şəkil sıxılma nədir və necə işləyir?

Şəklin sıxılması şəklin daha az yer tutması üçün çevrilməsi prosesidir. Sadəcə olaraq şəkilləri saxlamaq çox yer tutacaq, buna görə də orijinal şəklin ölçüsünü azaltmaq məqsədi daşıyan JPEG və PNG kimi kodeklər var.

Bildiyiniz kimi, görüntü sıxılmanın iki növü var: itki yoxdur и itkilərlə. Adlardan göründüyü kimi, itkisiz sıxılma orijinal görüntü məlumatlarını saxlaya bilər, itkili sıxılma isə sıxılma zamanı bəzi məlumatları itirir. məsələn, JPG itkili alqoritmlərdir [təqribən. tərcümə. - əsasən, itkisiz JPEG haqqında da unutmayaq] və PNG itkisiz bir alqoritmdir.

Şəkilləri sıxışdırmaq üçün AI-dan istifadə
İtkisiz və itkili sıxılmanın müqayisəsi

Diqqət yetirin ki, sağdakı şəkildə çoxlu bloklu artefaktlar var. Bu itirilmiş məlumatdır. Oxşar rəngli qonşu piksellər yerə qənaət etmək üçün vahid sahə kimi sıxılır, lakin faktiki piksellər haqqında məlumat itirilir. Əlbəttə ki, JPEG, PNG və s. kodeklərdə istifadə olunan alqoritmlər daha mürəkkəbdir, lakin bu, itkili sıxılmanın yaxşı intuitiv nümunəsidir. İtkisiz sıxılma yaxşıdır, lakin itkisiz sıxılmış fayllar diskdə çox yer tutur. Çox məlumat itirmədən şəkilləri sıxmağın daha yaxşı yolları var, lakin onlar olduqca yavaşdır və bir çoxları iterativ yanaşmalardan istifadə edir. Bu o deməkdir ki, onlar bir neçə CPU və ya GPU nüvəsində paralel olaraq işlədilə bilməz. Bu məhdudiyyət onları gündəlik istifadədə tamamilə qeyri-mümkün edir.

Konvolutional Neyron Şəbəkə Girişi

Nəyisə hesablamaq lazımdırsa və hesablamalar təxmini ola bilərsə, əlavə edin neyron şəbəkəsi. Müəlliflər təsvirin sıxılmasını yaxşılaşdırmaq üçün kifayət qədər standart konvolyusiya neyron şəbəkəsindən istifadə ediblər. Təqdim olunan metod nəinki ən yaxşı həllər (əgər daha yaxşı deyilsə) ilə eyni səviyyədə işləyir, o, həm də sürətin kəskin artmasına səbəb olan paralel hesablamalardan istifadə edə bilər. Səbəb ondan ibarətdir ki, Convolutional Neyron Networks (CNN) sonradan daha yığcam formada təqdim olunan (məsələn, təsvirin yalnız “vacib” bitləri qorunub saxlanılır) şəkillərdən məkan məlumatlarını çox yaxşı çıxarır. Müəlliflər şəkilləri daha yaxşı təmsil etmək üçün bu CNN imkanından istifadə etmək istəyirdilər.

memarlıq

Müəlliflər ikili şəbəkə təklif etdilər. Birinci şəbəkə giriş kimi bir şəkil götürür və yığcam təqdimat yaradır (ComCNN). Bu şəbəkənin çıxışı daha sonra standart kodek (məsələn, JPEG) tərəfindən işlənir. Kodek tərəfindən emal edildikdən sonra şəkil ikinci şəbəkəyə ötürülür və bu, orijinal təsviri qaytarmaq cəhdi ilə kodekdən təsviri "sabitləşdirir". Müəlliflər bu şəbəkəni Rekonstruktiv CNN (RecCNN) adlandırıblar. GAN-lar kimi, hər iki şəbəkə iterativ şəkildə öyrədilir.

Şəkilləri sıxışdırmaq üçün AI-dan istifadə
ComCNN Compact təmsili standart kodekə ötürülür

Şəkilləri sıxışdırmaq üçün AI-dan istifadə
RecCNN. ComCNN çıxışı böyüdülür və qalanını öyrənməyə çalışacaq RecCNN-ə verilir

Kodek çıxışı böyüdülür və sonra RecCNN-ə ötürülür. RecCNN təsviri mümkün qədər orijinala yaxın göstərməyə çalışacaq.

Şəkilləri sıxışdırmaq üçün AI-dan istifadə
Başdan sona təsvir sıxılma çərçivəsi. Co(.) təsvirin sıxılma alqoritmidir. Müəlliflər JPEG, JPEG2000 və BPG-dən istifadə ediblər

Qalıq nədir?

Qalanları, kodek tərəfindən deşifrə olunan təsviri "təkmilləşdirmək" üçün sonrakı emal addımı kimi düşünülə bilər. Dünya haqqında çoxlu “məlumata” malik olan neyron şəbəkəsi nəyi düzəltmək barədə bilişsel qərarlar qəbul edə bilər. Bu fikrə əsaslanır qalıq öyrənmə, edə biləcəyiniz təfərrüatları oxuyun burada.

Zərər funksiyaları

İki itki funksiyası istifadə olunur, çünki iki neyron şəbəkəmiz var. Bunlardan birincisi, ComCNN, L1 ilə etiketlənir və aşağıdakı kimi müəyyən edilir:

Şəkilləri sıxışdırmaq üçün AI-dan istifadə
ComCNN üçün zərər funksiyası

İzahat

Bu tənlik mürəkkəb görünə bilər, lakin əslində standartdır (kök orta kvadrat xətası) MSE. ||² onların əhatə etdikləri vektorun normasını bildirir.

Şəkilləri sıxışdırmaq üçün AI-dan istifadə
Tənlik 1.1

Cr ComCNN-in çıxışını bildirir. θ ComCNN parametrlərinin öyrənilməsini, XK isə giriş şəklini bildirir

Şəkilləri sıxışdırmaq üçün AI-dan istifadə
Tənlik 1.2

Re() RecCNN üçün dayanır. Bu tənlik sadəcə olaraq 1.1 tənliyinin mənasını RecCNN-ə çatdırır. θ RecCNN öyrədilə bilən parametrlərini ifadə edir (üstdəki papaq parametrlərin sabit olduğunu bildirir).

İntuitiv tərif

Tənlik 1.0 ComCNN-nin çəkilərini dəyişdirməsinə səbəb olacaq ki, RecCNN ilə yenidən yaradıldıqda, yekun şəkil daxil edilmiş təsvirə mümkün qədər oxşar görünsün. İkinci RecCNN itkisi funksiyası aşağıdakı kimi müəyyən edilir:

Şəkilləri sıxışdırmaq üçün AI-dan istifadə
Tənlik 2.0

İzahat

Yenə də funksiya mürəkkəb görünə bilər, lakin bu, əksər hallarda standart neyron şəbəkə itkisi funksiyasıdır (MSE).

Şəkilləri sıxışdırmaq üçün AI-dan istifadə
Tənlik 2.1

Co() kodek çıxışı, üstündə şapka olan x ComCNN çıxışı deməkdir. θ2 RecCNN tərəfindən öyrədilə bilən parametrlərdir, res() yalnız RecCNN-in qalıq çıxışıdır. Qeyd etmək lazımdır ki, RecCNN Co() ilə giriş təsviri arasındakı fərqə öyrədilir, lakin giriş təsviri üzərində deyil.

İntuitiv tərif

Tənlik 2.0 RecCNN-in çəkilərini dəyişməsinə səbəb olacaq ki, çıxış giriş şəklinə mümkün qədər oxşar olsun.

Təlim sxemi

Modellər iterativ şəkildə öyrədilir, məsələn GAN. Birinci modelin çəkiləri ikinci modelin çəkiləri yenilənərkən, daha sonra ikinci modelin çəkiləri birinci model öyrədilərkən sabitlənir.

Testlər

Müəlliflər öz metodlarını mövcud metodlarla, o cümlədən sadə kodeklərlə müqayisə ediblər. Onların metodu müvafiq aparatda yüksək sürəti qoruyarkən digərlərindən daha yaxşı işləyir. Bundan əlavə, müəlliflər iki şəbəkədən yalnız birini istifadə etməyə çalışdılar və performansın aşağı düşdüyünü qeyd etdilər.

Şəkilləri sıxışdırmaq üçün AI-dan istifadə
Struktur oxşarlıq indeksinin müqayisəsi (SSIM). Yüksək dəyərlər orijinalla daha yaxşı oxşarlığı göstərir. Qalın şrift müəlliflərin işinin nəticəsini göstərir

Nəticə

Biz dərin öyrənməni təsvirin sıxılmasına tətbiq etməyin yeni üsulunu nəzərdən keçirdik və təsvirin təsnifatı və dilin işlənməsi kimi “ümumi” tapşırıqlardan kənar vəzifələrdə neyron şəbəkələrdən istifadə imkanlarından danışdıq. Bu üsul nəinki müasir tələblərdən aşağı deyil, həm də şəkilləri daha sürətli emal etməyə imkan verir.

Neyron şəbəkələri öyrənmək daha asan oldu, çünki biz xüsusi olaraq Habravchan üçün promo kod hazırladıq HABR, bannerdə göstərilən endirimə əlavə 10% endirim vermək.

Şəkilləri sıxışdırmaq üçün AI-dan istifadə

Daha çox kurslar

Tövsiyə olunan məqalələr

Mənbə: www.habr.com

Добавить комментарий