Sirius SVHN Competition
Классифицируем аугментированные изображения цифр
Created on February 13|Last edited on December 19
Comment
Введение
Отчет и все эксперименты будут представлены именно здесь, потому что так удобнее и красивее. Вам понравится!
Итак, имея некоторый опыт в решении задач методами глубинного обучения, я первым делом отправился на paperswithcode. Там на страничке SVHN черным по белому написано, что SOTA - WideResNet. Сказано - сделано: на скорую руку ознакомился со статьей, с примерами практической реализации в Pytorch, изрядно воодушевился и написал свою реализацию. После непродолжительной отладки все начало работать как часы и я с головой ушел в эксперименты.
Эээээксперименты
Архитектура
Сначала было решено найти подходящую архитектуру, так как вариаций масса.
Для этого были выбраны и "зафиксированы" следующие гиперпараметры:
batch_size = 512optimizer = 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])])
После нескольких запусков стало понятно, что архитектура не сильно влияет на результат, скорее на скорость обучения.
Далее было проведено еще множество экспериментов (около 30) со всяческими гиперпараметрами, которые, впрочем, особым успехом не увенчались, и никаких неожиданных результатов не показали. По этой причине опустим их и перейдем к интересному.
SGD
Авторы статьи используют в качестве оптимизатора SGD, что я до определенного момента игнорировал. Но, как показала практика, напрасно - хоть и сходится он и дольше, но результаты показывает отличные:
Для сравнения - WRN-22-2 - лучший на тот момент результат.
Но более того, авторы статьи не делали аугментаций, а регуляризацию получали за счет высокого dropout'a. Этот результат воспроизвести у меня не вышло. По видимому, дело в количестве данных - в оригинальном дата��ете 600000 объектов в тренировочной выборке.
Финальное решение
Время соревнования подходило к концу и на эксперименты с аугментациями и другими более хитрыми гиперпараметрами времени не оставалось. Поэтому было предпринято решение обучить WRN-28-2 с Adam'ом, но учитывая весь опыт предыдущих экспериментов. И ура, оно стало работать отлично, и стало моим финальным решением, которое можно найти в соответствующем ноутбуке.
Заключение
Много нового удалось узнать в процессе участия, много интересных экспериментов, много опыта в решения задач компьютерного зрения.
Разумеется, хотелось бы больше времени, попробовать другие подходы, псевдолейблы и многое другое. Но то что удалось сделать - удалось отлично, и это не может не радовать.
Add a comment