CNN nedir?
- Makine Öğrenmesi kursu
- İleri seviye
- Ders 41/78
- 5 dk
CNN (Convolutional Neural Network), görüntü işlemede başarılı bir derin öğrenme modelidir.
CNN nedir?
Evrişimli sinir ağı (CNN), görüntü gibi ızgara yapılı verilerde küçük filtreleri tüm görüntü üzerinde kaydırarak yerel desenleri (kenar, köşe, doku) yakalar. Aynı filtre her konumda kullanıldığı için parametre sayısı küçük kalır ve bir desen görüntünün neresinde olursa olsun tanınır.
# 28x28 gri görüntü, tam bağlı ilk katman (128 nöron): 784 * 128 = 100352 ağırlık
# 3x3 evrişim, 16 filtre: 3 * 3 * 16 = 144 ağırlıkTipik bir CNN, evrişim + aktivasyon + havuzlama bloklarını üst üste koyar ve sonda tam bağlı bir sınıflandırıcı kullanır.
Evrişim işlemi
Bir filtre görüntünün küçük bir bölgesiyle eleman bazlı çarpılıp toplanır; sonuç çıktı haritasında tek bir değerdir. Filtre bir adım kaydırılır ve işlem tekrarlanır. Dikey kenar bulan bir filtre:
img = torch.tensor([[0., 0., 1., 1.],
[0., 0., 1., 1.],
[0., 0., 1., 1.]])
filtre = torch.tensor([[-1., 1.],
[-1., 1.]])
# sol üst 2x2 bölge: (0·-1 + 0·1 + 0·-1 + 0·1) = 0
# orta bölge: (0·-1 + 1·1 + 0·-1 + 1·1) = 2 -> kenarCNN'ler bu filtrelerin değerlerini veriden kendileri öğrenir.
Uygulama Elle evrişim
Verilen görüntüye filtre'yi elle uygula: her geçerli konumda (adım 1, dolgu yok) 2×2 bölgeyle eleman bazlı çarpımı topla ve sonucu 2×3'lük bir listeye yaz. Sonucu yazdır.
Başlangıç kodu
import torch
from torch import nn
img = torch.tensor([[0., 0., 1., 1.], [0., 0., 1., 1.], [0., 0., 1., 1.]])
filtre = torch.tensor([[-1., 1.], [-1., 1.]])
# buraya yazÖrnek çözüm
import torch
from torch import nn
img = torch.tensor([[0., 0., 1., 1.], [0., 0., 1., 1.], [0., 0., 1., 1.]])
filtre = torch.tensor([[-1., 1.], [-1., 1.]])
sonuc = [[(img[i:i + 2, j:j + 2] * filtre).sum().item() for j in range(3)] for i in range(2)]
print(sonuc)Beklenen çıktı
[[0.0, 2.0, 0.0], [0.0, 2.0, 0.0]]
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 CNN'in görüntüde tam bağlı ağa göre temel avantajı nedir?
- Ölçekleme gerektirmemesi
- Ağırlık paylaşımı: az parametre ve konumdan bağımsız desen tanıma Doğru cevap
- Daha çok parametre
- Etiket gerektirmemesi
Açıklama: Aynı filtre tüm konumlarda kullanılır.
2 Bölge ile filtrenin eleman bazlı çarpımını topla.
deger = (bolge ____ filtre).sum()
deger = (bolge * filtre).sum()
Açıklama: Evrişim bir bölgede eleman bazlı çarpım ve toplamdır.
3 Kavramları eşleştir.
| Kavram | Anlamı |
|---|---|
filtre |
Öğrenilen küçük ağırlık matrisi |
kaydırma |
Tüm konumlarda uygulama |
ağırlık paylaşımı |
Az parametre |
özellik haritası |
Filtrenin çıktısı |