Klasifikasi citra biner dan multikelas

Deep Learning untuk Gambar dengan PyTorch

Michal Oleszak

Machine Learning Engineer

Apa yang akan dipelajari dengan PyTorch?

tugas

Deep Learning untuk Gambar dengan PyTorch

Apa yang akan dipelajari dengan PyTorch?

tugas

Deep Learning untuk Gambar dengan PyTorch

Apa yang akan dipelajari dengan PyTorch?

tugas

Deep Learning untuk Gambar dengan PyTorch

Apa yang akan dipelajari dengan PyTorch?

tugas

Deep Learning untuk Gambar dengan PyTorch

Prasyarat

Deep Learning untuk Gambar dengan PyTorch

Pustaka PyTorch

torchvision

Deep Learning untuk Gambar dengan PyTorch

Pustaka PyTorch

torchvision

Deep Learning untuk Gambar dengan PyTorch

Pustaka PyTorch

torchvision

Deep Learning untuk Gambar dengan PyTorch

Pustaka PyTorch

torchvision

Deep Learning untuk Gambar dengan PyTorch

Klasifikasi citra

             Klasifikasi biner

binary

  • Dua kelas berbeda (kucing, anjing)
  • Fungsi aktivasi: Sigmoid

             Klasifikasi multikelas

multi-class

  • Banyak kelas (kapal, kereta, mobil)
  • Fungsi aktivasi: Softmax
  • Probabilitas tertinggi = prediksi
Deep Learning untuk Gambar dengan PyTorch

Model Convolutional Neural Network

  cnn

Deep Learning untuk Gambar dengan PyTorch

Model Convolutional Neural Network

  binary

Deep Learning untuk Gambar dengan PyTorch

Model Convolutional Neural Network

  binary

Deep Learning untuk Gambar dengan PyTorch

Model Convolutional Neural Network

  binary

Deep Learning untuk Gambar dengan PyTorch

Model Convolutional Neural Network

  binary

Deep Learning untuk Gambar dengan PyTorch

Dataset: label kelas

folder gambar

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}
Deep Learning untuk Gambar dengan PyTorch

Klasifikasi citra biner: lapisan konvolusi

  • Conv2d():
    • Masukan: 3 kanal RGB (merah, hijau, biru)
    • Keluaran: 16 kanal
    • Kernel: matriks 3 x 3
    • Stride = 1: kernel bergeser 1 langkah
    • Padding = 1: 1 piksel di tepi
  • ReLU():
    • Fungsi aktivasi nonlinier
  • MaxPool2d():
    • Kernel: 2x2
    • Stride: 2 langkah
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
Deep Learning untuk Gambar dengan PyTorch

Klasifikasi citra biner: lapisan fully connected

  • Flatten():
    • Tensor diratakan jadi vektor 1-D
  • Linear():
    • Masukan: feature map x tinggi x lebar
    • Keluaran: satu kelas
  • 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
Deep Learning untuk Gambar dengan PyTorch

Klasifikasi citra multikelas dengan CNN

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
Deep Learning untuk Gambar dengan PyTorch

Ayo berlatih!

Deep Learning untuk Gambar dengan PyTorch

Preparing Video For Download...