Beyaz kuğu, siyah kuğu, gri kuğu? Tanıma yapmak için evrişimli sinir ağını nasıl kullanacağınızı öğretin

Kaynak: Temel Okuma

Bu makale yaklaşık 3000 kelimedir , 10 dakika için önerilen okuma .

Bu makale, evrişimli sinir ağı (CNN) kavramını bir dizi kuğu resmi aracılığıyla açıklayacak ve geleneksel bir çok katmanlı algılayıcı sinir ağındaki görüntüleri işlemek için CNN'yi kullanacaktır.

Görüntü analizi

Görüntülerdeki kuğuları tanıyabilen bir sinir ağı modeli oluşturmak istediğimizi varsayalım.

Kuğular, uzun boyun, beyaz renk gibi resimde bir kuğu olup olmadığını belirlemeye yardımcı olmak için kullanılabilecek belirli özelliklere sahiptir.

Kuğular, tanımlama amacıyla kullanılabilecek belirli özelliklere sahiptir.

Bazı görüntüler için kuğu olup olmadığını belirlemek zor olabilir, lütfen aşağıdaki resme bakın.

Ayırt edilemeyen kuğu görüntüsü

Bu özellikler hala yukarıdaki resimde var, ancak yukarıda önerilen özellikleri bulmamız bizim için zor. Ek olarak, bazı daha aşırı durumlar olacaktır.

Kuğu sınıflandırmasının aşırı durumu

En azından renkler tutarlı, değil mi? hala......

Bu siyah kuğuları unutma.

Daha kötü olabilir mi? Kesinlikle.

En kötü durum

Tamam, şimdi yeterince kuğu resmi var.

Sinir ağlarından bahsedelim.

Günümüzde, temelde görüntülerdeki özellikleri çok saf bir şekilde tespit etmekten bahsediyoruz. Araştırmacılar, bu sorunlarla başa çıkmak için çeşitli bilgisayarla görme teknolojileri geliştirdiler: SIFT, FAST, SURF, Brief, vb. Bununla birlikte, benzer bir sorun ortaya çıkar: dedektörler ya çok geneldir ya da çok tasarımlıdır, bu da onları çok basit ya da genellemeyi zorlaştırır.

Algılanacak işlevi öğrenirsek ne yapmalıyız?

Temsili öğrenmeyi (veya özellik öğrenmeyi) gerçekleştirebilecek bir sisteme ihtiyacımız var.

Temsil öğrenimi, sistemin belirli bir görevin ilgili özelliklerini otomatik olarak bulmasını sağlayan bir tekniktir. Manuel işlev projesini değiştirin. Birkaç teknik var:

  • Denetimsiz (K-anlamı, PCA, ...)
  • Denetim (Sup. Sözlük öğrenme, sinir ağı!)
Geleneksel sinir ağları ile ilgili sorunlar

Multilayer Perceptron (MLP) adı verilen geleneksel sinir ağına zaten aşina olduğunuz varsayılmaktadır. Bu içeriklere aşina değilseniz, MLP'nin İnternette nasıl çalıştığına dair yüzlerce eğitim vardır. Bunlar, nöronların bağlı düğümler tarafından uyarıldığı ve yalnızca belirli bir eşiğe ulaşıldığında etkinleştirildiği insan beyninde modellenmiştir.

Standart çok katmanlı algılayıcı (geleneksel sinir ağı)

MLP'nin özellikle görüntü işlemede birçok dezavantajı vardır. MLP, her giriş için bir algılayıcı kullanır (örneğin, bir görüntüdeki pikseller, RGB durumunda 3 ile çarpılır). Büyük görüntüler için, ağırlığın manipüle edilmesi hızla zorlaşır. 3 renk kanallı 224 x 224 piksellik bir görüntü için yaklaşık 150.000 ağırlık eğitilmelidir! Sonuç olarak, eğitim sırasında ve aşırı uyum sırasında zorluklar ortaya çıkar.

Diğer bir yaygın sorun, MLP'nin girdiye (görüntü) ve onun kaydırılmış versiyonuna farklı tepki vermesidir - bunlar, çeviriye göre değişmez değildir. Örneğin bir resmin sol üst köşesinde ve başka bir resmin sağ alt köşesinde bir kedi resmi belirirse, MLP kendini düzeltmeye çalışacak ve kedinin her zaman resmin bu kısmında görüneceğini düşünecektir.

Açıkçası, MLP görüntü işleme için en iyi fikir değil. Temel sorunlardan biri, görüntü MLP'ye düzleştirildiğinde, uzamsal bilginin kaybolacağıdır. Yakın düğümler, görüntünün özelliklerini tanımlamaya yardımcı oldukları için önemlidir.

Bu nedenle, görüntü özelliklerinin (piksellerin) uzamsal korelasyonundan yararlanmak için bir yola ihtiyacımız var, böylece nerede görünürse görünsün kediyi resimde görebiliriz. Aşağıdaki şekilde artıklık fonksiyonunu öğreniyoruz. Bu yöntem sağlam değildir çünkü kedi başka bir yerde görünebilir.

MLP kullanan kedi dedektörü, kedinin konumu değiştikçe değişir.

CNN yolculuğuna başlayın

Şimdi CNN'in çoğu sorunu çözmek için nasıl kullanılabileceğini tartışmaya devam edelim.

CNN, yakındaki piksellerin uzak piksellerle daha ilişkili olduğu gerçeğinden yararlanır.

Filtre adı verilen bir şey kullanarak, yakındaki piksellerin etkisini analiz ettik. Belirtilen boyutta bir filtre kullanın (temel kural 3x3 veya 5x5'dir) ve ardından filtreyi sol üst köşeden görüntünün sağ alt köşesine taşıyın. Görüntüdeki her nokta için, filtreye dayalı değeri hesaplamak için bir evrişim işlemi kullanılır.

Filtre herhangi bir şeyle ilgili olabilir.İnsan fotoğrafları için bir filtre burnu görmeyle ilgili olabilir ve bizim burun filtremiz görüntüdeki burnun yoğunluğunu, kaç defa ve içinde görmemizi sağlar. durum. MLP ile karşılaştırıldığında bu, sinir ağının öğrenmesi gereken ağırlıkların sayısını azaltır ve aynı zamanda bu özelliklerin konumu değiştiğinde sinir ağını terk etmeyeceği anlamına gelir.

Evrişim işlemi

Ağ üzerinden farklı işlevleri nasıl öğreneceğinizi ve ağın aynı işlevi öğrenmesinin mümkün olup olmadığını öğrenmek istiyorsanız (10 baş filtresi biraz gereksiz olacaktır), bu temelde olmayacaktır. Ağı oluştururken, filtrenin değerini rastgele belirliyoruz ve ardından ağ eğitimi sırasında sürekli olarak güncelliyoruz. Seçilen filtrelerin sayısı çok fazla olmadıkça, iki özdeş filtre üretme olasılığı çok çok azdır.

Aşağıda filtre veya çekirdek adı verilen bir örnek verilmiştir.

CNN'nin çekirdek filtresi örneği

Filtreler görüntüden geçtikten sonra, her filtre için bir özellik haritası oluşturulur. Daha sonra bu işlevler, etkinleştirme işlevi aracılığıyla elde edilir ve etkinleştirme işlevi, görüntüde belirli bir konumda belirli bir özelliğin olup olmadığını belirler. Daha sonra daha fazla filtre katmanı eklemek ve daha fazla özellik haritası oluşturmak gibi birçok şey yapabiliriz.

Daha derin CNN'ler oluşturdukça, bu eşlemeler gittikçe daha soyut hale geliyor. Özellik haritasındaki maksimum değerleri seçmek ve bunları sonraki katmanlar için girdi olarak kullanmak için havuzlanmış katmanları da kullanabiliriz. Teorik olarak, havuz katmanında her türlü işlem yapılabilir, ancak gerçekte sadece maksimum havuz kullanılır, çünkü aşırı değerler bulmak istiyoruz - bu, ağımız bu özelliği gördüğünde!

Örnek CNN, görüntünün son sınıflandırmasına birkaç kategoriden biri olarak karar veren iki evrişimli katmana, iki birleştirilmiş katmana ve tamamen bağlantılı bir katmana sahiptir.

Şimdiye kadar bulduğumuz şeyi tekrarlamak için. MLP'yi biliyoruz:

  • Görüntüyü iyi ölçeklendirmiyor
  • Piksel konumu ve komşu ilişkilendirmesinin getirdiği bilgileri yoksay
  • Çeviri işlenemiyor

CNN'in genel düşüncesi, görüntünün niteliklerine akıllıca uyum sağlamaktır:

  • Piksel konumu ve mahallenin semantik anlamı vardır
  • İlgi unsurları görüntünün herhangi bir yerinde görünebilir

MLP ve CNN'nin mimari karşılaştırması

CNN de katmanlardan oluşur, ancak bu katmanlar tam olarak bağlantılı değildir: Görüntü boyunca uygulanan filtreler, küp şeklinde ağırlık setleri vardır. Filtrenin her 2B dilimi bir çekirdek olarak adlandırılır. Bu filtreler, çeviri değişmezliğini ve parametre paylaşımını sağlar. Nasıl uygulanıyor? Tabii ki evrişimdir!

Bu örnek, bir çekirdek filtresi kullanarak bir görüntüye evrişimin nasıl uygulanacağını gösterir.

Şimdi bir soru var: Görüntünün kenarlarına ne olacak? Normal bir görüntüye evrişim uygularsak, sonuç filtrenin boyutuna göre altörneklenir. Ya bunun olmasını istemiyorsak? Dolgu kullanabilirsiniz.

dolgu

Bu görüntü, CNN'e tam dolgu ve aynı dolgunun nasıl uygulanacağını gösterir

Doldurma, esasen filtre çekirdeği tarafından oluşturulan özellik haritasını orijinal görüntü ile aynı boyutta yapar. Bu, derin CNN'ler için çok kullanışlıdır çünkü çıktıyı azaltmak istemiyoruz, bu nedenle sonucu tahmin etmek için ağın sonunda sadece 2x2'lik bir alan bırakıyoruz.

Filtreleri nasıl bağlarız?

Çok sayıda özellik haritamız varsa, nihai sonucu almamıza yardımcı olmak için bu özellikler ağda nasıl birleştirilebilir?

Her bir filtrenin tüm 3B giriş küpüyle birleştiği, ancak bir 2B özellik haritası oluşturacağı açık olmalıdır.

  • Birden fazla filtremiz olduğundan, bir 3B çıktı elde ederiz: her filtre için bir 2B özellik haritası.
  • Özellik eşlem boyutu, bir evrişimli katmandan diğerine büyük ölçüde değişebilir: 32x32x16 giriş katmanı girin, katmanda 128 filtre varsa, 32x32x128 çıktıdan çıkın.
  • Bir görüntünün bir filtreyle çevrilmesi, görüntüdeki belirli bir öğenin varlığını vurgulayan bir özellik haritası oluşturur.

Evrişimli katmanda, temelde farklı özellikleri çıkarmak için görüntüye birden çok filtre uygularız. Ama en önemlisi, bu filtreleri öğreniyoruz! Kaçırdığımız tek şey doğrusal olmamaktır.

Doğrusal Düzeltme Fonksiyonuna (ReLU) Giriş

CNN'nin en başarılı doğrusal olmama durumu, sigmoidlerdeki kaybolan gradyan problemini çözebilen doğrusal düzeltme fonksiyonudur (ReLU). ReLU'nun hesaplanması daha kolaydır ve seyreklik üretir (her zaman yararlı değildir).

Farklı katmanların karşılaştırılması

Evrişimli sinir ağlarında üç tür katman vardır: evrişimli katmanlar, havuz katmanları ve tam bağlantılı katmanlar. Bu katmanların her biri, optimize edilebilen ve giriş verileri üzerinde farklı görevler gerçekleştiren farklı parametrelere sahiptir.

Evrişimli tabakanın özellikleri

Evrişimli katman, orijinal görüntüye veya derin CNN'deki diğer özellik haritalarına filtreler uygulayan bir katmandır. Bu, ağdaki çoğu kullanıcı tanımlı parametrenin konumudur. En önemli parametreler çekirdek sayısı ve çekirdek boyutudur.

Havuz katmanının özellikleri

Havuzlama katmanları, evrişimli katmanlara benzer, ancak belirli bir filtreleme alanında maksimum değeri alan maksimum havuzlama veya filtreleme alanındaki ortalama değeri alan ortalama havuzlama gibi belirli işlevleri gerçekleştirirler. Bunlar genellikle ağın boyutsallığını azaltmak için kullanılır.

Tamamen bağlı katman işlevleri

Tamamen bağlı katmanlar, CNN'nin sınıflandırma çıktısının önüne yerleştirilir ve sınıflandırmadan önce sonuçları düzleştirmek için kullanılır. Bu, MLP'nin çıktı katmanına benzer.

Standart CNN mimarisi CNN katmanı ne öğrenir?
  • Her CNN katmanı giderek daha karmaşık filtreler öğrenir.
  • İlk katman, temel özellik algılama filtrelerini öğrenir: kenarlar, köşeler vb.
  • Orta katman, nesnenin bir bölümünü algılamak için filtreleri öğrenir. Yüzler için gözlere, buruna vb. Tepki vermeyi öğrenebilirler.
  • Son katmanın daha yüksek bir temsili vardır: farklı şekil ve konumdaki tüm nesneleri tanımayı öğrenirler.
  • CNN'lerin örnekleri, belirli nesneleri ve bunların ortaya çıkan özellik haritalarını tanımak için eğitilir

    İlgili Bağlantılar:

    https://towardsdatascience.com/simple-introduction-to-convolutional-neural-networks-cdf8d3077bac editör: Huang Jiyan redaksiyon: Lin Yilin - Bitiş -

    Tsinghua-Qingdao Veri Bilimi Enstitüsü'nün resmi WeChat kamu platformunu takip edin " THU Veri Pastası "Ve kız kardeş numarası" Veri Pastası THU "Daha fazla ders avantajı ve kaliteli içerik elde edin.

    Afrika kıyılarında, yüzeyden 50.000 kat daha yüksek rezervlerle nadir metal yatakları keşfedildi.
    önceki
    0-5 trajedi! Wang Shuang'ın Paris'i 19 dakika içinde çöktü ve sezonun üçüncü tacını kaybetti.
    Sonraki
    Yine Shandong Dahan! 4 yaşındaki kız demiryolu raylarına düştü ve Shandong öğretmeni vurdu!
    Tsinghua Üniversitesi, Peking Üniversitesi ve Zhejiang Üniversitesi'nin bilgisayar kursu kaynak koleksiyonlarının tümü burada (bağlantı ile)
    "AI Truman World" den nasıl kaçılır (kaynaklarla)
    Büyük üzüntü! Serie A küme düşme takımı Juventus'u 2-1 tersine çevirdi + 62 yıllık rekoru kırdı, 37 yaşındaki kıdemli oyuncu kutlamak için ayrıldı
    Doktor, prematüre bebeklerin ebeveynlerine bir teşekkür mektubu yazdı Biyolojik ebeveynler ve geçici ebeveynler birlikte mucizeler yarattı
    Beiqing Rehabilitasyon Bölümü'nün lideri olan Şangay Jiaotong Üniversitesi, yeni bir AI lisans bölümü kurmak için onaylandı ("Şangay Jiaotong Bölümü" envanteriyle)
    Jindo Group: "Pazarlama gücü", küçük, orta ve mikro işletmelerin yüksek kaliteli gelişimi için temel itici güçtür
    Sanya: Yılbaşında Yalong Körfezi'ndeki turistik otellerin ortalama fiyatı 3660 yuan.
    Alipay, anti-sky cep telefonunu piyasaya sürdü: üç katlanabilir ekran, AI dolandırıcılık önleme, çalınan otomatik olarak iade edilebilir!
    Sözlü Tarih · Sichuan Zhuqin Xie Huiren oğlu, Sichuan Zhuqin'den geçmek için mantoyu miras alıyor
    Yaklaşık 10.000 Python açık kaynak projesinden sizin için Top34'ü seçiyorum! (Ekli bağlantı)
    Premier Lig'in en zayıf oyuncusu 0-4 yenildi! Sırt çizgisi bir kişi tarafından tamamen uçuruldu ve 144 saniyede çöktü
    To Top