2015-11-10 5 views
7

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

my_test_dir/picture-foo.jpg 0 

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

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

+1

Текущий интерфейс 'caffe' и' lmdb' поддерживает только одну метку на изображение (подходит для задач классификации). Однако вы можете использовать интерфейс HDF5. См. [Этот ответ] (http://stackoverflow.com/a/31808324/1714410). – Shai

ответ

10

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

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

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

Обновление: Недавно я дал более подробный ответ here.

+1

Это действительно полезно. Метод HDF5 совершенно ясен. Однако из любопытства, как я могу добавить два слоя после второго метода? Я не могу это понять! – Unni

+1

@Unni это должно быть довольно просто: создайте два lmdb 'train_images_lmdb 'и' train_labels_lmdb', затем добавьте два входных слоя один с верхним «изображением» и «dummy_label_1», а другой с верхними «label_image» и «summy_label_2». – Shai

+1

О! Большое спасибо. Очень полезно :) – Unni

0

В CAFFE как lmdb и hdf5 поддерживает несколько меток для каждого изображения, матрицы, если вы хотите, видеть эту тему:

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

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

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

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

+1

Ссылки на потенциальные решения всегда приветствуются, но, пожалуйста, добавьте некоторые подробности для будущих посетителей, если ссылка больше не доступна. –

+1

Хорошо спасибо за отзыв. Теперь я подробно остановился. – Menx100

+0

Вторая ссылка мертва, есть ли у вас еще одна ссылка? Благодарю. – kollo