Про аугментации.
Я довольно давно не копался в CV. Последнее, что я помнил — albumentations лучшие в плане скорости работы и ассортимента методов в API.
С тех пор не сильно что-то изменилось, кроме того, что я успел подергать torchvision в Мете, и он мне реально понравился в плане удобства и скорости работы.
В рамках соревы все-таки задался вопросом, что сейчас происходит в аугментациях. Рассказываю.
Ну во-первых, все решили, что для foundational моделек аугментации не нужны, так как данных и так достаточно.
Дальше появились интересные решения вида kornia и NVIDIA DALI с возможностью делать аугментации прямо на GPU, за счет чего получать весомый буст в производительности.
Мне очень не нравится бенчмарк, предоставленный albumentations. Ровно потому что они:
— сравнивают отдельно по операциям;
— оценивают скорость в количестве обрабатываемых картинок в секунду.
Это логично, если мы исходим из предположения, что весь пайплайн аугментаций работает со скоростью самой медленной операции в нем. Ну и, дополнительно, из предположения, что аугментации происходят сразу после загрузки, по одной картинке за раз (то есть MixUp и CutMix выпадают).
Но кажется, что на самом деле первое утверждение не совсем корректно, так как не учитываются оверхед самого фреймворка аугментаций и вероятностная природа применения разных аугментаций в пайплайне. Дополнительно — техника развилась настолько, что уже выгоднее обрабатывать картинки батчом, а не по одной.
Уже больше нравится бенч от Kornia, но они, таким образом, просто пытаются показаться свою главную фишку — аугментации батчей прямо на GPU.
Короче, очень хочется собрать ultimate бенчмарк для аугментаций и посмотреть, кто из списка torchvision/albumentations/kornia/augmentor/solt/dali лучше, может быть вы что-нибудь подкинете из идей?
Post #16
826