Görüntüleri aşırı sıkıştırmak için AI kullanma

Görüntüleri aşırı sıkıştırmak için AI kullanma
Sinir ağları gibi veriye dayalı algoritmalar dünyayı kasıp kavurdu. Gelişmeleri, ucuz ve güçlü donanım ve büyük miktarda veri dahil olmak üzere çeşitli nedenlerden kaynaklanmaktadır. Sinir ağları şu anda görüntü tanıma, doğal dil anlama vb. gibi “bilişsel” görevlerle ilgili her şeyin ön saflarında yer alıyor. Ancak bu tür görevlerle sınırlı kalmamalılar. Bu materyal, artık öğrenmeyi kullanarak sinir ağlarını kullanarak görüntüleri sıkıştırmaya yönelik bir yöntemi açıklamaktadır. Makalede sunulan yaklaşım standart codec bileşenlerinden daha hızlı ve daha iyi çalışmaktadır. Şemalar, denklemler ve tabii ki kesim altında testlerin bulunduğu bir tablo.

Bu makale şuna dayanmaktadır: bu iş. Sinir ağlarına ve kavramlarına aşina olduğunuz varsayılmaktadır. evrişim и kayıp fonksiyonu.

Görüntü sıkıştırma nedir ve hangi türleri vardır?

Görüntü sıkıştırma, bir görüntüyü daha az yer kaplayacak şekilde dönüştürme işlemidir. Yalnızca görüntülerin saklanması çok fazla yer kaplayacağından, orijinal görüntünün boyutunu küçültmeyi amaçlayan JPEG ve PNG gibi codec'ler vardır.

Bildiğiniz gibi iki tür görüntü sıkıştırma vardır: kayıpsız и kayıplarla. İsimlerinden de anlaşılacağı gibi, kayıpsız sıkıştırma orijinal görüntü verilerini kurtarabilirken, kayıplı sıkıştırma, sıkıştırma sırasında bazı verileri kaybeder. örneğin, JPG kayıplı algoritmalardır [yaklaşık. tercüme - temel olarak kayıpsız JPEG'i de unutmayalım] ve PNG, kayıpsız bir algoritmadır.

Görüntüleri aşırı sıkıştırmak için AI kullanma
Kayıpsız ve kayıplı sıkıştırmanın karşılaştırılması

Sağdaki resimde çok sayıda bloklu yapı bulunduğunu unutmayın. Bu kayıp bilgidir. Benzer renkteki bitişik pikseller, yerden tasarruf etmek için tek bir alan olarak sıkıştırılır, ancak gerçek piksellerle ilgili bilgiler kaybolur. Elbette JPEG, PNG vb. codec bileşenlerinde kullanılan algoritmalar çok daha karmaşıktır ancak bu, kayıplı sıkıştırmanın iyi bir sezgisel örneğidir. Kayıpsız sıkıştırma iyidir, ancak kayıpsız sıkıştırılmış dosyalar çok fazla disk alanı kaplar. Çok fazla bilgi kaybetmeden görüntüleri sıkıştırmanın daha etkili yolları vardır, ancak bunlar oldukça yavaştır ve birçoğu yinelemeli yaklaşımlar kullanır. Bu, birden fazla CPU veya GPU çekirdeğinde paralel olarak çalıştırılamayacakları anlamına gelir. Bu sınırlama onları günlük kullanım için tamamen kullanışsız hale getirir.

Evrişimsel Sinir Ağı Girişi

Bir şeyin hesaplanması gerekiyorsa ve hesaplamalar yaklaşık olabilirse, şunu ekleyin: sinir ağı. Yazarlar, görüntü sıkıştırmayı geliştirmek için oldukça standart bir evrişimli sinir ağı kullandılar. Sunulan yöntem yalnızca en iyi çözümlerle (daha iyi olmasa da) aynı performansı göstermekle kalmıyor, aynı zamanda paralel hesaplamayı kullanarak hızda önemli bir artışa neden olabiliyor. Bunun nedeni, evrişimli sinir ağlarının (CNN'ler), daha sonra daha kompakt bir biçimde temsil edilen görüntülerden uzamsal bilgi çıkarmada çok iyi olmasıdır (örneğin, görüntünün yalnızca "önemli" bitleri korunur). Yazarlar, görüntüleri daha iyi temsil etmek için CNN'in bu özelliğini kullanmak istediler.

Mimari

Yazarlar ikili bir ağ önerdiler. İlk ağ, girdi olarak bir görüntüyü alır ve kompakt bir gösterim (ComCNN) oluşturur. Bu ağın çıktısı daha sonra standart bir kodlayıcı (JPEG gibi) tarafından işlenir. Görüntü codec tarafından işlendikten sonra ikinci bir ağa gönderilir ve bu ağ, orijinal görüntüyü geri döndürmek amacıyla görüntüyü codec'ten "düzeltir". Yazarlar bu ağı yeniden yapılanma CNN'si (RecCNN) olarak adlandırdı. GAN'lar gibi her iki ağ da yinelemeli olarak eğitilir.

Görüntüleri aşırı sıkıştırmak için AI kullanma
ComCNN Compact gösterimi standart codec'e aktarıldı

Görüntüleri aşırı sıkıştırmak için AI kullanma
RecCNN. ComCNN çıktısı yükseltilir ve geri kalanı öğrenmeye çalışacak olan RecCNN'ye beslenir.

Codec çıktısı yükseltilir ve ardından RecCNN'ye beslenir. RecCNN, orijinaline mümkün olduğunca benzer bir görüntü çıkarmaya çalışacaktır.

Görüntüleri aşırı sıkıştırmak için AI kullanma
Uçtan uca görüntü sıkıştırma çerçevesi. Co(.) bir görüntü sıkıştırma algoritmasıdır. Yazarlar JPEG, JPEG2000 ve BPG kullandılar

Geriye kalan nedir?

Geri kalan kısım, codec tarafından kodu çözülen görüntüyü "geliştirmeye" yönelik bir işlem sonrası adım olarak düşünülebilir. Dünya hakkında çok fazla "bilgi" bulunan bir sinir ağı, neyin düzeltileceği konusunda bilişsel kararlar verebilir. Bu fikir dayanmaktadır kalan eğitim, yapabileceğiniz ayrıntıları okuyun burada.

Kayıp fonksiyonları

İki sinir ağımız olduğu için iki kayıp fonksiyonu kullanılıyor. Bunlardan ilki olan ComCNN, L1 olarak etiketlenmiştir ve şu şekilde tanımlanmıştır:

Görüntüleri aşırı sıkıştırmak için AI kullanma
ComCNN için kayıp fonksiyonu

açıklama

Bu denklem karmaşık görünebilir ama aslında standarttır (ortalama karesel hata) MSE. ||² çevreledikleri vektörün normu anlamına gelir.

Görüntüleri aşırı sıkıştırmak için AI kullanma
Denklem 1.1

Cr, ComCNN'in çıktısını belirtir. θ, ComCNN parametrelerinin eğitilebilirliğini belirtir, XK ise giriş görüntüsüdür

Görüntüleri aşırı sıkıştırmak için AI kullanma
Denklem 1.2

Re() RecCNN'nin kısaltmasıdır. Bu denklem basitçe denklem 1.1'in değerini RecCNN'ye aktarır. θ, RecCNN'nin eğitilebilir parametrelerini belirtir (üstteki başlık, parametrelerin sabit olduğu anlamına gelir).

Sezgisel tanım

Denklem 1.0, ComCNN'i, RecCNN kullanılarak yeniden yapılandırıldığında son görüntünün giriş görüntüsüne mümkün olduğunca benzer görünmesini sağlayacak şekilde ağırlıklarını değiştirmeye zorlayacaktır. İkinci RecCNN kayıp fonksiyonu şu şekilde tanımlanır:

Görüntüleri aşırı sıkıştırmak için AI kullanma
Denklem 2.0

açıklama

İşlev yine karmaşık görünebilir, ancak çoğunlukla standart bir sinir ağı kaybı işlevidir (MSE).

Görüntüleri aşırı sıkıştırmak için AI kullanma
Denklem 2.1

Co() codec çıkışı anlamına gelir; üstte kapak bulunan x, ComCNN çıkışı anlamına gelir. θ2 RecCNN'nin eğitilebilir parametreleridir, res() basitçe RecCNN'nin artık çıktısıdır. RecCNN'in Co() ile giriş görüntüsü arasındaki fark konusunda eğitildiğini ancak giriş görüntüsü üzerinde eğitilmediğini belirtmekte fayda var.

Sezgisel tanım

Denklem 2.0, çıktının giriş görüntüsüne mümkün olduğunca benzer görünmesi için RecCNN'yi ağırlıklarını değiştirmeye zorlayacaktır.

Eğitim Planı

Modeller yinelemeli olarak eğitilir; GAN. İkinci modelin ağırlıkları güncellenirken ilk modelin ağırlıkları sabitlenir, ardından ilk model eğitilirken ikinci modelin ağırlıkları sabitlenir.

Testler

Yazarlar yöntemlerini basit codec bileşenleri de dahil olmak üzere mevcut yöntemlerle karşılaştırdılar. Yöntemleri, uygun donanımda yüksek hızı korurken diğerlerinden daha iyi çalışır. Ayrıca yazarlar iki ağdan yalnızca birini kullanmayı denediler ve performansta bir düşüş olduğunu fark ettiler.

Görüntüleri aşırı sıkıştırmak için AI kullanma
Yapısal benzerlik indeksi (SSIM) karşılaştırması. Yüksek değerler orijinale daha iyi benzerliği gösterir. Yazarların çalışmalarının sonuçları kalın harflerle vurgulanmıştır.

Sonuç

Görüntü sıkıştırma için derin öğrenmeyi kullanmanın yeni bir yolunu araştırdık ve sinir ağlarını, görüntü sınıflandırma ve dil işleme gibi "genel" görevlerin ötesindeki görevlerde kullanma olasılığından bahsettik. Bu yöntem yalnızca modern gereksinimlerden daha düşük olmakla kalmaz, aynı zamanda görüntüleri çok daha hızlı işlemenize de olanak tanır.

Sinir ağlarını incelemek daha kolay hale geldi çünkü özellikle Khabra sakinleri için bir promosyon kodu oluşturduk HABR, banner'da belirtilen indirime %10 ek indirim vererek.

Görüntüleri aşırı sıkıştırmak için AI kullanma

Daha fazla kurs

Seçme Makaleler

Kaynak: habr.com

Yorum ekle