Makine Öğrenmesi
CNN nedir?
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ık
Tipik 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 -> kenar
CNN'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.
Örnek çözümü göster
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)
Kendini test et
-
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
- Daha çok parametre
- Etiket gerektirmemesi
Cevabı göster
Ağırlık paylaşımı: az parametre ve konumdan bağımsız desen tanıma — Aynı filtre tüm konumlarda kullanılır.
-
Bölge ile filtrenin eleman bazlı çarpımını topla.
deger = (bolge ____ filtre).sum()
Cevabı göster
deger = (bolge * filtre).sum()
-
Kavramları eşleştir.
- 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ı
Sıradaki ders: Conv2d