Оптимальный способ хранения / индексации / управления большими объемами данных обучения для машинного обучения? - PullRequest
0 голосов
/ 10 февраля 2019

Я понимаю, что вы, как правило, не хотите хранить изображения в базе данных.Вместо этого вы сохраняете метаданные об изображениях (владелец, дата создания, размер, формат файла и т. Д.) И ссылку на изображение (расположение S3 или путь к изображению в локальной файловой системе).Если вам нужно восстановить образ, вы можете найти путь в базе данных и прочитать его из хранилища объектов или локальной файловой системы.

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

Моя ситуация немного отличается.Я собираю большое количество помеченных изображений для обучения данных для различных алгоритмов машинного обучения.Для каждого изображения в таблице будет строка, содержащая информацию о том, откуда оно, его размер и метки, связанные с этим изображением (т. Е. Одно изображение может иметь метки: ["car", "vehicle",«седан», «honda», «civic», «blue», «2002»], другой может иметь только [«vehicle», «truck»], другой может иметь [«human», «pedestrian», «woman»]).

Моя цель состоит в том, чтобы структурировать данные таким образом, чтобы я мог произвольно создавать обучающие наборы данных из этой таблицы, если сочту нужным, в соответствии с различными группировками меток.Так что я мог бы сказать «собрать все изображения с меткой« животное »и группировать на основе меток« собака »,« кошка »,« лошадь »» (если одна из этих меток существует).Теперь из моего плоского списка обучающих данных у меня будут изображения, сгруппированные по трем категориям, из которых я могу обучить классификатор CNN.

Проблема заключается в том, что у меня могут быть миллионы изображений, поэтому еслиЯ запускаю вышеупомянутый запрос, чтобы получить все изображения с меткой «животное», мне нужно будет выполнить запрос SQL, чтобы найти все изображения с этой меткой, затем мне нужно будет сделать миллионы RPC-вызовов к S3 или локальной файловой системе, чтобына самом деле получить данные изображения мне нужно.Если я на самом деле сохраню изображения, хранящиеся в базе данных, они будут получены непосредственно из самого запроса.

Итак, в общем, каков наилучший способ хранения и индексации большого количества изображений иих метаданные для машинного обучения?С одной стороны, мы можем просто сгруппировать большое количество изображений в ZIP-файлы и сохранить ZIP-файлы в некотором хранилище объектов.Это удобно, потому что мне нужен только один дескриптор и вызов RPC для передачи всех данных обучения на любой сервер, на котором я выполняю последовательность обучения ML, но это приводит к тому, что я теряю детальную видимость моих данных обучения.С другой стороны, я могу хранить все свои данные, проиндексированные в какой-то большой таблице SQL, включая данные изображений.Это дает мне максимальную видимость моих данных, но является чрезмерно дорогостоящим и делает неудобным фактическую передачу изображений на сервер, которому нужны данные изображений для выполнения обучающей последовательности.

1 Ответ

0 голосов
/ 10 февраля 2019

Для обучения я бы предположил, что вы просто хотите прочитать все последовательно, поэтому я бы поместил все (включая изображения) в базу данных SQL или просто в один файл, который содержит нечетные строки метаданных, а четные строки -изображение (двоичный).Например,

0|meta: Car,blue,Mercedes....
1|001010100010101011111111111111000010101000..............
2|meta: motorcycle,red,yamaha.....
3|010110101010101010110101011010101010101010..............    
.
.
.

Если вы не можете прочитать весь файл сразу и хотите узнать, на какой строке остановилось ваше последнее обучение, вы также должны включить индекс в каждой строке (0 | ...,1 | ....).

На самом деле нужно преобразовать слова в числа для реальной тренировки:

0|meta: 0,101,1001....
1|001010100010101011111111111111000010101000..............
2|meta: 2,102,1002.....
3|010110101010101010110101011010101010101010..............    
.
.
.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...