Yazar: PRATEEK JOSHI
Çeviri: Cheng Chao
Düzeltme: Feng Yu
Bu makale hakkında 2200 kelime , Okumanız tavsiye edilir 9 dakika
Bu makale önce sinir ağlarına dayalı bir otomatik kodlayıcı tanıtmakta ve ardından bulanık görüntüleri geliştirmek için bir otomatik kodlayıcının nasıl kullanılacağını tanıtmaktadır.
Etiket: Computer Vision
Film kameraları dönemini hatırlıyor musunuz? Fotoğraf geliştirmek gizemli bir süreçtir ve yalnızca fotoğrafçılar ve profesyoneller bu konuda ustalaşabilir. Çoğu insanın yalnızca loş kırmızı ışıkla dolu karanlık bir odası vardır. Kısaca fotoğraf geliştirmek zaman alan bir süreçtir.
Sonra dijital kamera devrimi başladı ve geçmiş dönem sonsuza dek gitti! Artık fotoğraf basmak bile istemiyoruz - çoğu kişinin fotoğrafları akıllı telefonlarda, dizüstü bilgisayarlarda veya bulutta saklanıyor.
karanlık oda
Şimdi bile (fareye tıkladığınızda) bulanık, pikselli ve bulanık resimlerle karşılaşacağız. Bu konuda kendimi suçlu hissediyorum, birçok insan mükemmel resmi sunmaya çalışıyor. Derin öğrenme ve otomatik kodlayıcıların devreye girdiği yer burasıdır.
Aşağıda otomatik kodlayıcının ne olduğu ve çalışma prensibi açıklanacaktır. Ardından, Python'daki otomatik kodlayıcıya dayalı olarak görüntünün çözünürlüğünü iyileştirmek için pratik bir durum vereceğiz.
Önkoşullar: Keras'a aşina, sinir ağlarına ve evrişimli katmanlara dayalı görüntü sınıflandırması. Bu kavramları gözden geçirmeniz gerekirse, aşağıdakilere başvurabilirsiniz:
1. Otomatik kodlayıcı nedir
2. Görüntü denoising otomatik kodlayıcı hakkında
Üç, sorun açıklaması - görüntü çözünürlüğünü iyileştirmek için otomatik kodlayıcı kullanın
Dördüncü olarak, otomatik kodlayıcıyı uygulamak için Python kullanın
Pulkit Sharma yazıda şu tanımı verdi:
"Otomatik kodlayıcı, esas olarak, giriş verilerinin düşük boyutlu özellik temsilini öğrenen bir sinir ağı yapısıdır."
Otomatik kodlayıcı, birbirine bağlı iki ağdan oluşur: bir kodlayıcı ve bir kod çözücü. Kodlayıcının amacı, bir girdi (x) almak ve bir özellik haritası (z) oluşturmaktır:
Bu özellik haritasının (z) boyutu veya uzunluğu genellikle x'ten daha küçüktür. Neden böyle?
Yalnızca z'nin girdi verilerini tanımlayabilen anlamlı değişim faktörlerini yakalamasını istediğimiz için, z'nin şekli genellikle x'ten daha küçüktür.
Şimdi, soru bu özellik temsilini (z) nasıl elde ederiz? Bu modeli nasıl eğitiyoruz? Bu amaçla, çıkarılan özelliklerin üstüne bir dekoder ağı ekleyebilir ve ardından modeli eğitebiliriz:
Bu makalede çözeceğimiz sorun, görüntü denoising otomatik kodlayıcının işlevi ile ilgilidir. Aşağıda, görüntüdeki gürültüyü ortadan kaldırmak için otomatik kodlayıcının nasıl kullanılacağını ayrıntılı olarak sunuyoruz.
Elimizde bir dizi el yazısı dijital resim olduğunu ve bunların bir kısmı bozuk olduğunu varsayalım. İşte parazitli (bozulma) bazı resimler:
Bu gürültünün görüntüden uzaklaştırılmasına görüntü denoising problemi denir. İstenen çıktı, aşağıda gösterildiği gibi gürültünün çoğu kaldırılmış temiz bir görüntüdür:
Ancak otomatik kodlayıcı bu gürültüyü görüntüden nasıl kaldırır?
Önceki bölümde gördüğümüz gibi, otomatik kodlayıcı giriş verilerini yeniden yapılandırmaya çalışır. Bu nedenle, giriş olarak bozuk bir görüntüyü alırsak, otomatik kodlayıcı gürültülü bir görüntüyü yeniden oluşturmaya çalışacaktır.
Yani ne yapmalıyız? Yapıyı değiştirmek mi? cevap olumsuz!
Burada gerekli olan küçük bir ayarlamadır. Kaybı hesaplamak için girdi ve yeniden yapılandırılmış çıktı kullanmak yerine orijinal görüntü ve yeniden yapılandırılmış görüntüyü kullanarak kaybı hesaplayabiliriz. Aşağıdaki şekil benim düşüncemi gösteriyor:
Görüntü denoising otomatik kodlayıcı
Artık denoising otomatik kodlayıcının işlevine aşina olduğumuza göre, çözmek için otomatik kodlayıcıyı kullanmayı beklediğimiz soruna dönelim.
Bu soruna aşina olacağına inanıyorum. Çoğumuz bulanık görüntülerle karşılaştığımızda depresyondayız ve hepimiz görüntülerin daha net olmasını umuyoruz. Daha sonra bu sorunu çözmek için bir otomatik kodlayıcı kullanacağız!
Bir dizi düşük çözünürlüklü yüz resmimiz olduğunu varsayalım. Görevimiz bu görüntülerin çözünürlüğünü iyileştirmektir. Bu, Photoshop gibi fotoğraf düzenleme araçlarının yardımıyla yapılabilir. Bununla birlikte, elimizde binlerce görsel olduğunda, bu görevi gerçekleştirmek için daha akıllı bir yola ihtiyacımız var.
İşte bazı örnek resimler ve orijinal resimleri:
Juyter Defterimizi açalım ve gerekli kitaplıkları içeri aktaralım:
Araştırmamız, popüler "Labeled Faces in the Wild" veri kümesine dayanmaktadır. Kısıtlanmamış yüz tanıma problemlerini incelemek için tasarlanmıştır. Ancak, buradaki amacımız yüz tanıma değil, görüntü çözünürlüğünü iyileştirmek için bir model oluşturmaktır.
Veri setini indirip çıkaralım:
# veri kümesini indirin! wget veri kümesini ayıklayın! tar -xvzf lfw.tgzBu veri seti birden çok klasöre çıkarılacaktır. Bu nedenle, tüm görüntüleri yakalamak için dosya yolu çok önemlidir. Bunu glob kütüphanesinin yardımıyla kolayca yapabiliriz.
#capture imagesface_images = glob.glob ('lfw / ** / *. jpg')Görüntünün orijinal boyutu 250 × 250 pikseldir. Ancak, bu görüntülerin genel olarak yapılandırılmış bir sistemde işlenmesi, önemli bilgi işlem kaynakları gerektirir. Bu nedenle, tüm görsellerin boyutunu kırpmamız gerekiyor.
Daha sonra, veri setini (resim) eğitim ve doğrulama olmak üzere iki gruba ayırıyoruz. Modelimizi eğitmek için eğitim setini ve modelin performansını değerlendirmek için doğrulama setini kullanacağız:
Veri kümesindeki resimlere bir göz atalım:
Bu durumun fikri, gürültü azaltıcı otomatik kodlayıcıya çok benzer.
Giriş görüntüsünde bazı değişiklikler yapacağız ve kaybı hesaplamak için orijinal görüntüyü kullanacağız. Çözünürlüğü artırmanın bir görevi olarak, orijinal görüntünün çözünürlüğünü düşürüp modele giriyoruz.
Aşağıdaki işlenmiş giriş resmidir:
Tüm görüntülerin çözünürlüğünü azaltmak ve ayrı bir düşük çözünürlüklü görüntü seti oluşturmak için aşağıdaki işlevi kullanacağız.
Eğitim seti ve doğrulama seti dahil tüm görüntülerin çözünürlüğünü azaltın.
Modelin yapısı şu şekilde tanımlanmıştır:
Yapı gerektiği gibi değiştirilebilir. Katman sayısını değiştirebilir, katman türlerini değiştirebilir, düzenlileştirmeyi kullanabilir ve diğer birçok parametreyi kullanabilirsiniz. Şu an için bu yapıyı kullanmaya devam ediyoruz.
Model yapısının görselleştirilmesi, hata ayıklama için çok yararlıdır (hata oluşursa). Keras'ta uygulanması kolaydır, sadece yürütülmesi gerekir < model adı > .Summary () işlevi şunlar olabilir:
autoencoder.summary ()Sonunda modelimizi eğitebiliriz:
Bu eğitici, otomatik kodlayıcıyı açıklar, görüntü çözünürlüğünün iyileştirilmesini, görüntü denoize etme fikrine dayanarak gerçekleştirdik. Bunu başka birçok yere genişletebiliriz.
Örneğin, bu tekniği düşük çözünürlüklü videoların kalitesini artırmak için de kullanabiliriz. Bu nedenle, görüntü etiketlenmemiş olsa bile görüntü verilerini işleyebilir ve bazı pratik problemleri çözebiliriz. Denetimsiz öğrenmeye dayalı başka görüntü işleme vakalarınız veya teknikleriniz varsa, lütfen bunları aşağıdaki yorumlar bölümünde paylaşın.
Orjinal başlık:
Otomatik Kodlayıcılar Bulanık Görüntüyü Otomatik Kodlayıcı Kullanarak Nasıl İyileştireceğinizi Öğrenin!
Orijinal bağlantı:
https://www.analyticsvidhya.com/blog/2020/02/what-is-autoencoder-enhance-image-resolution/
Editör: Huang Jiyan
Redaksiyon: Lin Yilin
Çevirmen Profili
Cheng Chao , Çin İnşaat Bankası Büyük Veri Merkezi, Güneydoğu Üniversitesi Yüksek Lisansı. DSP geliştirme, QT geliştirme, veri madenciliği, veri ürünleri ve mevcut veri güvenliği çalışmalarına kadar ilgili iş daha karmaşıktır. Kendinizi veri bilimi alanında tam donanımlı bir bilim insanı olarak konumlandırın. Boş zamanlarımda, daha ileri veri bilimi bilgisi ve kavramları eklemeyi ve sizinle daha fazlasını paylaşıp öğrenmeyi umuyorum.
-Bitiş-
Tsinghua-Qingdao Veri Bilimi Enstitüsü'nün resmi WeChat kamu platformunu takip edin " AI Veri Pastası "Ve kız kardeş numarası" Veri Pastası THU "Daha fazla ders avantajı ve kaliteli içerik elde edin.