Skip to main content

Sirius SVHN Competition

Классифицируем аугментированные изображения цифр
Created on February 13|Last edited on December 19

Введение

Отчет и все эксперименты будут представлены именно здесь, потому что так удобнее и красивее. Вам понравится!
Итак, имея некоторый опыт в решении задач методами глубинного обучения, я первым делом отправился на paperswithcode. Там на страничке SVHN черным по белому написано, что SOTA - WideResNet. Сказано - сделано: на скорую руку ознакомился со статьей, с примерами практической реализации в Pytorch, изрядно воодушевился и написал свою реализацию. После непродолжительной отладки все начало работать как часы и я с головой ушел в эксперименты.

Эээээксперименты

Архитектура

Сначала было решено найти подходящую архитектуру, так как вариаций масса.
Для этого были выбраны и "зафиксированы" следующие гиперпараметры:
batch_size = 512
optimizer = torch.optim.Adam(model.parameters(), lr=4e-3)
scheduler = torch.optim.lr_scheduler.ReduceLROnPlateau(optimizer, patience=2, factor=0.6)

dropout = 0.2 # or smth around it

# Train augmentations:
transforms.Compose([
transforms.RandomCrop(32, 8),
transforms.RandomRotation(30),
transforms.ColorJitter(),
transforms.ToTensor(),
transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
])
После нескольких запусков стало понятно, что архитектура не сильно влияет на результат, скорее на скорость обучения.

Run set
5

Далее было проведено еще множество экспериментов (около 30) со всяческими гиперпараметрами, которые, впрочем, особым успехом не увенчались, и никаких неожиданных результатов не показали. По этой причине опустим их и перейдем к интересному.

SGD

Авторы статьи используют в качестве оптимизатора SGD, что я до определенного момента игнорировал. Но, как показала практика, напрасно - хоть и сходится он и дольше, но результаты показывает отличные:

Run set
5


Для сравнения - WRN-22-2 - лучший на тот момент результат.
Но более того, авторы статьи не делали аугментаций, а регуляризацию получали за счет высокого dropout'a. Этот результат воспроизвести у меня не вышло. По видимому, дело в количестве данных - в оригинальном датасете 600000 объектов в тренировочной выборке.

Run set
4



Финальное решение

Время соревнования подходило к концу и на эксперименты с аугментациями и другими более хитрыми гиперпараметрами времени не оставалось. Поэто��у было предпринято решение обучить WRN-28-2 с Adam'ом, но учитывая весь опыт предыдущих экспериментов. И ура, оно стало работать отлично, и стало моим финальным решением, которое можно найти в соответствующем ноутбуке.

Run set
3


Заключение

Много нового удалось узнать в процессе участия, много интересных экспериментов, много опыта в решения задач компьютерного зрения.
Разумеется, хотелось бы больше времени, попробовать другие подходы, псевдолейблы и многое другое. Но то что удалось сделать - удалось отлично, и это не может не радовать.