Создание LMDB для Caffe

Я пытаюсь построить модель глубокого обучения для анализа значимости с помощью caffe (я использую оболочку python). Но я не могу понять, как создать структуру данных lmdb для этой цели. Я прошел через примеры Imagenet и mnist, и я понимаю, что я должен генерировать метки в формате

my_test_dir/picture-foo.jpg 0

но в моем случае я буду обозначать каждый пиксель 0 или 1, указывая, является ли этот пиксель заметным или нет. Это не будет единственным лейблом для изображение.

Как генерировать файлы lmdb для маркировки на основе пикселей ?

3 ответов


вы можете подойти к этой проблеме двумя способами:

1. использование слоя данных HDF5 вместо LMDB. HDF5 является более гибким и может поддерживать метки размера изображения. Вы можете видеть ответ для примера построения и использования входного слоя данных HDF5.

2. вы можете иметь два входных слоя LMDB: один для изображения и один для метки. Обратите внимание, что при построении LMDB необходимо не использовать 'shuffle' опция для синхронизации изображений и их меток.

обновление: недавно я дал более подробный ответ здесь.


проверьте это:http://deepdish.io/2015/04/28/creating-lmdb-in-python/

просто загрузите все изображения в X и соответствующие метки в Y.


в caffe как lmdb, так и hdf5 поддерживают несколько меток на изображение, матрицы, если хотите, см. Эту тему:

https://github.com/BVLC/caffe/issues/1698#issue-53768814

см. этот учебник о том, как создать набор данных с несколькими метками (lmdb здесь) для caffe с кодом python:

http://www.kostyaev.me/article/Multilabel%20Dataset/

EDIT: например, для меток он использует функцию caffe-python, которая преобразует 3-мерный массив в datum, найденный в caffe/python/caffe.io.py: array_to_datum (arr, label=None):