Поучаствовал в прошлом месяце в UBC-Ocean сореве вместе с Димой. Больше ради того, чтобы вспомнить (а где-то и узнать), что там такого в компьютерном зрении происходит.
Суть соревнования простая — есть снимки проб человеческих тканей, надо распознавать тип рака.
Но, конечно, есть несколько нюансов:
— Есть два типа картинок: WSI (whole slide images) и TMA (tissue microarrays). TMA — это 40-кратный зум среза, при этом картинки “небольшого” размера — 4к на 4к. WSI же без зума, но и размер дичайший — в среднем 40к на 40к пикселей, самая большая — 50к на 105к, 4.7 Гб в uncompressed png. Довольно часто 50% картинки просто фон, надо было еще поискать, где на картинке клетки;
— Жуткий перекос распределения типа картинок в трейне (95% WSI и 5% TMA). При этом в тесте 50/50 соответственно.
Несколько мыслей по этому поводу:
— Не используйте PNG для хранения картинок в проде. Никогда. Это зло во плоти. Дорого, тяжело по памяти, не оптимизировано под современные реалии. Хотите сжатие без потерь — возьмите лучше tiff вместо PNG. Да, возможно, больше будет диска жрать, но скорость загрузки сильно приятнее;
— Всегда задавайтесь вопросом, насколько быстро работает ваш код, пройдитесь по нему профилировщиком. Если что-то, по вашему мнению, работает медленно — выясняйте, почему.
Пара полезных ссылок:
— прекрасный рассказ от бывшего коллеги про transforms второй версии в torchvision. Пользуйтесь активнее, они вышли в стейбл, быстрее, чем первая версия, и, по моему субъективному мнению, быстрее, чем albumentations;
— хороший бенчмарк по загрузке больших картинок, разобраны jpeg и tiff, я дописал этот бенч для png формата.
Post #13
613