Caffe + Opencv без lmdb

При использовании caffe, для создания обучающего набора данных, содержащего изображения, нам нужно создать базу данных в специальном формате, таком как lmdb, но есть любой вариант, чтобы перейти к пакету изображений caffe, как, например, vector<cv::Mat> ?

Чтобы уточнить, я ищу решение, которое может обрабатывать большое количество изображений, которые не помещаются в память (но предположим, что одна обучающая партия (содержащая, например, 50 изображений) может быть сохранена в памяти).

6

Решение

Caffe может принимать различные типы входных данных, в зависимости от используемого нами входного слоя.
Некоторые из доступных методов ввода:

  1. Данные
  2. MemoryData
  3. HDF5Data
  4. ImageData и т. Д.

В файле модели самый первый найденный слой будет Layer type: Data, который использовал lmdb or leveldb в качестве метода ввода. Преобразование набора изображений в эти базы данных довольно просто, поскольку Caffe уже предоставляет инструменты для преобразования изображений.

Layer type: MemoryData считывает данные непосредственно из памяти, что будет чрезвычайно полезно при использовании входов камеры, которые будут передаваться как вход Caffe во время фазы тестирования. Использование этого слоя для обучения очень не рекомендуемые.

Layer type: ImageData принимает текстовый файл в качестве входных данных. Текстовый файл содержит все имена изображений, а также их полный путь и номер класса. Caffe использует OpenCV для чтения изображений в этом слое. Это также заботится обо всех преобразованиях к изображению. Таким образом, вместо использования OpenCV для считывания изображения и последующего перехода к слою MemoryData, рекомендуется использовать ImageData.

Формат .txt, из которого слой ImageData считывает изображение, должен быть:

/path/to/the/image/imageName.jpg classNumber

Настоятельно рекомендуется использовать LMDB или LevelDB, потому что ImageData может не работать должным образом, если путь к изображению или имя содержат пробелы, или когда любое из изображений повреждено.

Детали различных слоев можно узнать Вот.

Память выделяется в графическом процессоре в зависимости от модели и размера пакета. Если происходит переполнение памяти, вы можете попробовать уменьшить размер пакета. Кафе легко справился с обучением в базе данных Imagenet 1,2 миллиона изображений. Таким образом, при оптимальном размере пакета алгоритм должен работать без проблем.

7

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]