Создание 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):