Суреттерді шамадан тыс қысу үшін AI пайдалану

Суреттерді шамадан тыс қысу үшін AI пайдалану
Нейрондық желілер сияқты деректерге негізделген алгоритмдер әлемді жаулап алды. Олардың дамуы бірнеше себептерге байланысты, соның ішінде арзан және қуатты жабдықтар мен деректердің үлкен көлемі. Қазіргі уақытта нейрондық желілер кескінді тану, табиғи тілді түсіну және т. Бірақ олар мұндай міндеттермен шектеліп қалмауы керек. Бұл мақалада қалдық оқытуды пайдалана отырып, нейрондық желілер арқылы кескіндерді сығу жолы туралы айтылады. Мақалада ұсынылған тәсіл стандартты кодектерге қарағанда жылдамырақ және жақсырақ. Схемалар, теңдеулер және, әрине, кесу астындағы сынақтары бар кесте.

Бұл мақалаға негізделген бұл жұмыс. Сіз нейрондық желілермен және олардың тұжырымдамаларымен таныссыз деп болжанады. конволюция и жоғалту функциясы.

Кескінді қысу дегеніміз не және ол қалай жұмыс істейді?

Кескінді қысу - кескінді аз орын алатындай түрлендіру процесі. Жай кескіндерді сақтау көп орын алады, сондықтан бастапқы кескіннің өлшемін азайтуға бағытталған JPEG және PNG сияқты кодектер бар.

Өздеріңіз білетіндей, кескінді қысудың екі түрі бар: шығын жоқ и шығындармен. Аттар айтып тұрғандай, жоғалтпай қысу бастапқы кескін деректерін сақтай алады, ал жоғалтатын қысу қысу кезінде кейбір деректерді жоғалтады. мысалы, JPG жоғалту алгоритмдері [шамамен. аударма - негізінен, жоғалтпайтын JPEG] туралы да ұмытпайық, ал PNG жоғалтпайтын алгоритм.

Суреттерді шамадан тыс қысу үшін AI пайдалану
Шығынсыз және шығынсыз қысуды салыстыру

Оң жақтағы суретте көптеген блокты артефактілер бар екеніне назар аударыңыз. Бұл жоғалған ақпарат. Ұқсас түстердің көршілес пикселдері кеңістікті үнемдеу үшін бір аймақ ретінде қысылады, бірақ нақты пикселдер туралы ақпарат жоғалады. Әрине, JPEG, PNG және т.б. кодектерде қолданылатын алгоритмдер әлдеқайда күрделі, бірақ бұл жоғалтатын қысудың жақсы интуитивті мысалы. Жоғалтпай қысу жақсы, бірақ жоғалтпай қысылған файлдар дискіде көп орын алады. Көптеген ақпаратты жоғалтпай кескіндерді қысудың жақсы тәсілдері бар, бірақ олар өте баяу және көбісі итеративті тәсілдерді пайдаланады. Бұл олардың бірнеше CPU немесе GPU өзектерінде параллельді іске қосылмайтынын білдіреді. Бұл шектеу оларды күнделікті қолдануда мүлдем мүмкін емес етеді.

Конволюциялық нейрондық желіні енгізу

Егер бірдеңені есептеу қажет болса және есептеулер шамамен болуы мүмкін болса, қосыңыз нейрондық желі. Авторлар кескінді қысуды жақсарту үшін жеткілікті стандартты конволюционды нейрондық желіні пайдаланды. Ұсынылған әдіс ең жақсы шешімдермен тең орындалып қана қоймайды (егер жақсы болмаса), ол сонымен қатар жылдамдықтың күрт өсуіне әкелетін параллельді есептеулерді қолдана алады. Себебі, конволюционды нейрондық желілер (CNN) кескіндерден кеңістіктік ақпаратты алуда өте жақсы, олар кейінірек ықшам түрде ұсынылады (мысалы, кескіннің «маңызды» биттері ғана сақталады). Авторлар кескіндерді жақсырақ көрсету үшін осы CNN мүмкіндігін пайдаланғысы келді.

сәулет

Авторлар қос желіні ұсынды. Бірінші желі суретті кіріс ретінде қабылдайды және ықшам көріністі (ComCNN) жасайды. Содан кейін бұл желінің шығысы стандартты кодекпен өңделеді (мысалы, JPEG). Кодек өңдегеннен кейін кескін екінші желіге жіберіледі, ол бастапқы кескінді қайтару әрекеті үшін кодектен кескінді «түзетеді». Авторлар бұл желіні Reconstructive CNN (RecCNN) деп атады. GAN сияқты, екі желі де итеративті түрде оқытылады.

Суреттерді шамадан тыс қысу үшін AI пайдалану
ComCNN Compact көрсетілімі стандартты кодекке жіберіледі

Суреттерді шамадан тыс қысу үшін AI пайдалану
RecCNN. ComCNN шығысы үлкейтіліп, қалған бөлігін үйренуге әрекеттенетін RecCNN-ге беріледі

Кодек шығысы масштабталады, содан кейін RecCNN-ге жіберіледі. RecCNN кескінді мүмкіндігінше түпнұсқаға жақын етіп көрсетуге тырысады.

Суреттерді шамадан тыс қысу үшін AI пайдалану
Кескінді қысу шеңбері. Co(.) — кескінді қысу алгоритмі. Авторлар JPEG, JPEG2000 және BPG қолданды

Қалдық дегеніміз не?

Қалғанын кодек арқылы декодталған кескінді «жақсарту» үшін кейінгі өңдеу қадамы ретінде қарастыруға болады. Әлем туралы көптеген «ақпаратқа» ие бола отырып, нейрондық желі нені түзету керектігі туралы когнитивті шешімдер қабылдай алады. Бұл идея негізделген қалдық оқыту, мүмкін болатын мәліметтерді оқыңыз осында.

Жоғалту функциялары

Екі жоғалту функциясы пайдаланылады, өйткені бізде екі нейрондық желі бар. Олардың біріншісі, ComCNN, L1 деп белгіленген және келесідей анықталған:

Суреттерді шамадан тыс қысу үшін AI пайдалану
ComCNN үшін жоғалту функциясы

Түсіндіру

Бұл теңдеу күрделі болып көрінуі мүмкін, бірақ бұл шын мәнінде стандартты (орташа квадрат қатесі) КМК. ||² олар қоршайтын вектордың нормасын білдіреді.

Суреттерді шамадан тыс қысу үшін AI пайдалану
1.1 теңдеу

Cr ComCNN шығысын білдіреді. θ ComCNN параметрлерінің үйренуге қабілеттілігін білдіреді, XK - кіріс кескіні

Суреттерді шамадан тыс қысу үшін AI пайдалану
1.2 теңдеу

Re() RecCNN дегенді білдіреді. Бұл теңдеу жай ғана RecCNN-ге 1.1 теңдеуінің мағынасын береді. θ RecCNN оқытылатын параметрлерін білдіреді (жоғарғы қалпақ параметрлердің бекітілгенін білдіреді).

Интуитивті анықтама

1.0 теңдеуі ComCNN салмағын RecCNN көмегімен қайта жасағанда соңғы кескін кіріс кескініне барынша ұқсас болып көрінетіндей етіп өзгертуіне себеп болады. Екінші RecCNN жоғалту функциясы келесідей анықталады:

Суреттерді шамадан тыс қысу үшін AI пайдалану
2.0 теңдеу

Түсіндіру

Қайтадан, функция күрделі болып көрінуі мүмкін, бірақ бұл көбінесе стандартты нейрондық желіні жоғалту функциясы (MSE).

Суреттерді шамадан тыс қысу үшін AI пайдалану
2.1 теңдеу

Co() кодек шығысын білдіреді, жоғарғы жағында қалпақ бар x ComCNN шығысын білдіреді. θ2 - RecCNN үйрететін параметрлер, res() бұл тек RecCNN қалдық шығысы. Айта кету керек, RecCNN Co() мен кіріс кескіні арасындағы айырмашылыққа үйретілген, бірақ кіріс кескінінде емес.

Интуитивті анықтама

2.0 теңдеуі RecCNN салмағын өзгертуге мүмкіндік береді, осылайша шығыс кіріс кескініне барынша ұқсас болады.

Жаттығу схемасы

Модельдер итеративті түрде оқытылады, мысалы GAN. Бірінші үлгінің салмақтары екінші үлгінің салмақтары жаңартылған кезде бекітіледі, содан кейін екінші үлгінің салмақтары бірінші үлгіні оқыту кезінде бекітіледі.

Тесттер

Авторлар өз әдісін бар әдістермен, соның ішінде қарапайым кодектермен салыстырды. Тиісті жабдықта жоғары жылдамдықты сақтай отырып, олардың әдісі басқаларға қарағанда жақсырақ жұмыс істейді. Сонымен қатар, авторлар екі желінің біреуін ғана пайдалануға тырысты және өнімділіктің төмендеуін атап өтті.

Суреттерді шамадан тыс қысу үшін AI пайдалану
Құрылымдық ұқсастық индексін салыстыру (SSIM). Жоғары мәндер түпнұсқаға жақсырақ ұқсастықты көрсетеді. Қалың шрифт авторлардың жұмысының нәтижесін көрсетеді

қорытынды

Біз кескінді қысу үшін терең оқытуды қолданудың жаңа әдісін қарастырдық және нейрондық желілерді кескіндерді жіктеу және тілді өңдеу сияқты «жалпы» тапсырмалардан тыс тапсырмаларда пайдалану мүмкіндігі туралы айттық. Бұл әдіс заманауи талаптардан кем емес, сонымен қатар кескіндерді әлдеқайда жылдам өңдеуге мүмкіндік береді.

Нейрондық желілерді үйрену оңайырақ болды, өйткені біз Habravchan үшін арнайы промокод жасадық HABR, баннерде көрсетілген жеңілдікке қосымша 10% жеңілдік беру.

Суреттерді шамадан тыс қысу үшін AI пайдалану

Қосымша курстар

Таңдаулы мақалалар

Ақпарат көзі: www.habr.com

пікір қалдыру