Обучение классификаторов изображений

Глубокое обучение на PyTorch: средний уровень

Michal Oleszak

Machine Learning Engineer

Аугментация данных: повторение

Изображение кошки.

Глубокое обучение на PyTorch: средний уровень

Аугментация данных: повторение

Изображение кошки, отражённое по горизонтали и повёрнутое.

Глубокое обучение на PyTorch: средний уровень

Что не следует аугментировать

Жёлтый лимон и зелёный лайм выглядят одинаково — различаются только цветом.

Глубокое обучение на PyTorch: средний уровень

Что не следует аугментировать

Жёлтый лимон и зелёный лайм выглядят одинаково — различаются только цветом.

Глубокое обучение на PyTorch: средний уровень

Что не следует аугментировать

Буква «W» после вертикального отражения становится похожа на букву «M».

  • Аугментации могут изменять метку
  • Насколько это критично — зависит от задачи
  • Всегда подбирайте аугментации с учётом данных и задачи!
Глубокое обучение на PyTorch: средний уровень

Аугментации для классификации облаков

Примеры снимков облаков.

  • Случайный поворот: знакомит модель с различными углами облачных formations
  • Горизонтальное отражение: имитирует разные ракурсы неба
  • Автоматическая регулировка контраста: имитирует разные условия освещения
train_transforms = transforms.Compose([
    transforms.RandomHorizontalFlip(),
    transforms.RandomRotation(45),
    transforms.RandomAutocontrast(),
    transforms.ToTensor(),
    transforms.Resize((128, 128))
])
Глубокое обучение на PyTorch: средний уровень

Функция потерь кросс-энтропии

  • Бинарная классификация: функция потерь бинарной кросс-энтропии (BCE)
  • Многоклассовая классификация: функция потерь кросс-энтропии
  • criterion = nn.CrossEntropyLoss()
Глубокое обучение на PyTorch: средний уровень

Цикл обучения классификатора изображений

net = Net(num_classes=7)

criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(net.parameters(), lr=0.001)


for epoch in range(10): for images, labels in dataloader_train: optimizer.zero_grad() outputs = net(images) loss = criterion(outputs, labels) loss.backward() optimizer.step()
Глубокое обучение на PyTorch: средний уровень

Давайте потренируемся!

Глубокое обучение на PyTorch: средний уровень

Preparing Video For Download...