И ещё раз про базы данных

Краткий обзор вещей по датасетам на которые я наталкивался в последний год.

Я думаю, что все прекрасно понимают, что в нормальной работе по ComputerVision 80% работы может занимать взаимодействие с базой (картинку с заглавия утащил отсюда).  Создание базы, разметка, выбор критериев, создание загрузки, модели зашумления, и.т.д. Конечно, я видел случаи, когда это и 95% занимает (медицина), и 20%(использование открытых датасетов). Всякое бывает.
Решил запечатлеть несколько вещей, на которые я натыкался в последний год.


Генерация данных. Этот подход ужасно стар. Его основная мысль: если дешевле генерировать базу – генерите! В реальности, чаще всего базу дешевле не генерить, а размечать. Мало кто это понимает и оценивает. Написать генератор  – это может быть задача на несколько месяцев для эксперта. Но не забывайте, что по цене одного DS-специалиста, или по цене одного Unity-специалиста вы можете нанять 6-10 человек, которые протыкают вам все ваши картинки с качеством на порядок выше генератора. При использовании Толоки/MechanicalTurk – 10-30 человек. Это целая армия!
Один из примеров – вот.  Ребята, конечно, хайповые. Гордятся движком… Только время на программирование и обслуживание топовых прогеров уходит сравнимо со временем когда два человека с зарплатой в 30 тысяч всё разметят.
Где генерация может быть осмысленнее:
1) Очень сложно записывать сэмплы. Например динамика. Мы как-то арендовали студию с актёрами:


А из полученных десятков съёмок сделали миллионы сэмплов.

2) Очень дорого размечать. Требуются эксперты высокого класса, сравнимые с стоимостью создания базы. Обычно, в таких ситуациях и модель сделать очень сложно. В живую такого ни разу не видел, но подозреваю что иногда может быть.
3) События не происходят в реальной жизни. Обычно это связано с системами безопасности. Там где можно 1-2 случая сделать для теста, но всё остальное необходимо генерировать

GAN. Отдельно для генерации стоит упомянуть Ганы и иже с ними. Тема опять же модная. Но ни разу я не видел успешного внедрения в продакшн. Хотя статьи интересные бывают.

Реально сложная разметка. Писал в одном из прошлых постов. Опять же, натыкались в последний год. Хорошая разметка для медицины очень сложная. Получить высокое качество там можно только в мног этапов. Иногда для её организации нужно привлечь больше специалистов чем в DS. И выстроить куда более глубокую и интересную систему труда, чем сеточки, которые будут обучаться.

Автоматическая доразметка людьми. Когда-то давно считалось, что софт можно написать один раз, а потом использовать. Потом почти все программы стали периодически выпускать новые версии. Жизненный цикл мог составлять пару лет. Но в итоге Continuous Integration победила всё. Посмотрите на текущую винду. Регулярные апдейты, повышающие качество самого продукта встроены непосредственно в систему. Возможность изменчивости прошита с самых низов.
Вы правда думаете, что любая система на нейронных сетях должна быть устроена как-то иначе? Нужен постоянный цикл данных через контрольные гейты, нужна постоянная оценка качества текущего распознавания. Нужно привлечение доразметчиков и динамический пайплайн. Вася куда более подробно писал про такие подходы. За последний год мы внедрили такую штуку уже в 3-4 различных проекта.

Грабя интернет. Проще всего делать прототипы на базе того что есть в интернетах. Количество датасетов в последние годы растёт по экспоненте. Да, они низкого качества, да, зачастую не подходят под ваши задачи. Но, реально, если у вас цель в сборе прототипа и показе его инвестору – лучше не придумаешь. Главное вовремя завязать и начать собирать датасеты.

Это краткий обзор того на что приходиться натыкаться в последний год из странных решений по базам данных.