İkili ve çok sınıflı görüntü sınıflandırma

PyTorch ile Görüntüler için Deep Learning

Michal Oleszak

Machine Learning Engineer

PyTorch ile ne öğreneceğiz?

görevler

PyTorch ile Görüntüler için Deep Learning

PyTorch ile ne öğreneceğiz?

görevler

PyTorch ile Görüntüler için Deep Learning

PyTorch ile ne öğreneceğiz?

görevler

PyTorch ile Görüntüler için Deep Learning

PyTorch ile ne öğreneceğiz?

görevler

PyTorch ile Görüntüler için Deep Learning

Önkoşullar

PyTorch ile Görüntüler için Deep Learning

PyTorch kitaplığı

torchvision

PyTorch ile Görüntüler için Deep Learning

PyTorch kitaplığı

torchvision

PyTorch ile Görüntüler için Deep Learning

PyTorch kitaplığı

torchvision

PyTorch ile Görüntüler için Deep Learning

PyTorch kitaplığı

torchvision

PyTorch ile Görüntüler için Deep Learning

Görüntü sınıflandırma

             İkili sınıflandırma

binary

  • İki ayrı sınıf (kedi, köpek)
  • Aktivasyon: Sigmoid

             Çok sınıflı sınıflandırma

multi-class

  • Birden çok sınıf (tekne, tren, araba)
  • Aktivasyon: Softmax
  • En yüksek olasılık tahmindir
PyTorch ile Görüntüler için Deep Learning

Evrişimsel Sinir Ağı modeli

  evrişimsel sinir ağı

PyTorch ile Görüntüler için Deep Learning

Evrişimsel Sinir Ağı modeli

  ikili

PyTorch ile Görüntüler için Deep Learning

Evrişimsel Sinir Ağı modeli

  ikili

PyTorch ile Görüntüler için Deep Learning

Evrişimsel Sinir Ağı modeli

  ikili

PyTorch ile Görüntüler için Deep Learning

Evrişimsel Sinir Ağı modeli

  ikili

PyTorch ile Görüntüler için Deep Learning

Veri kümeleri: sınıf etiketleri

görüntü klasörleri

from torchvision import datasets
import torchvision.transforms as transforms


train_dir = '/data/train' train_dataset = ImageFolder(root=train_dir, transform=transforms.ToTensor())
classes = train_dataset.classes
print(classes)
['cat', 'dog']
print(train_dataset.class_to_idx)
{'cat': 0, 'dog': 1}
PyTorch ile Görüntüler için Deep Learning

İkili görüntü sınıflandırma: evrişim katmanı

  • Conv2d():
    • Girdi: 3 RGB kanal (kırmızı, yeşil, mavi)
    • Çıktı: 16 kanal
    • Çekirdek: 3 x 3 matris
    • Adım = 1: çekirdek 1 adım ilerler
    • Dolgu = 1: kenarda 1 piksel
  • ReLU():
    • Doğrusal olmayan aktivasyon
  • MaxPool2d():
    • Çekirdek: 2x2
    • Adım: 2 adım
class BinaryCNN(nn.Module):
    def __init__(self):
        super(BinaryCNN, self).__init__()

self.conv1 = nn.Conv2d(3, 16, kernel_size=3, stride=1, padding=1)
self.relu = nn.ReLU()
self.pool = nn.MaxPool2d(kernel_size=2, stride=2)
def forward(self, x): return x
PyTorch ile Görüntüler için Deep Learning

İkili görüntü sınıflandırma: tam bağlantılı katman

  • Flatten():
    • Tensörleri 1B vektöre düzler
  • Linear():
    • Girdi: öznitelik haritaları x yükseklik x genişlik
    • Çıktı: tek bir sınıf
  • Sigmoid():
    • [0,1]
class BinaryCNN(nn.Module):
    def __init__(self):
        super(BinaryCNN, self).__init__()
        self.conv1 = nn.Conv2d(3, 16,
                kernel_size=3, stride=1, padding=1)
        self.relu = nn.ReLU()
        self.pool = nn.MaxPool2d(kernel_size=2, 
                     stride=2)

self.flatten = nn.Flatten()
self.fc1 = nn.Linear(16 * 112 * 112, 1)
self.sigmoid = nn.Sigmoid()
def forward(self, x):
x = self.pool(self.relu(self.conv1(x))) x = self.fc1(self.flatten(x)) x = self.sigmoid(x)]
return x
PyTorch ile Görüntüler için Deep Learning

CNN ile çok sınıflı görüntü sınıflandırma

class MultiClassCNN(nn.Module):
    def __init__(self, num_classes):
        super(MultiClassCNN, self).__init__()
        ...

self.fc = nn.Linear(16 * 112 * 112, num_classes)
self.softmax = nn.Softmax(dim=1)
def forward(self, x): ...
x = self.softmax(x)
return x
PyTorch ile Görüntüler için Deep Learning

Haydi pratik yapalım!

PyTorch ile Görüntüler için Deep Learning

Preparing Video For Download...