Как использовать convert_imageset в caffe для изображений, которые не помещаются в одну папку?

Я пытаюсь обучить CNN на своем собственном наборе данных, используя структуру Caffe, и настоятельно рекомендуется преобразовать набор данных в форматы lmdb или leveldb из-за эффективности скорости. Для этого все изображения должны быть помещены в одну папку и 'list.txt' должны быть соответствующим образом подготовлены. Мой собственный набор данных настолько огромен и находится в таком количестве папок и подпапок, что было бы очень трудоемко копировать их все в одну папку. Поэтому мне интересно узнать, существует ли какой-либо альтернативный способ создания файла lmdb без необходимости копировать все изображения в одну папку.


person Saeed    schedule 28.08.2015    source источник


Ответы (2)


Есть (по крайней мере) два решения вашей проблемы.

  1. Не копируйте файлы в одну папку, просто создайте символический ссылки.

  2. Все изображения не обязательно должны находиться в одной папке. Вы можете иметь полные пути в файле 'list.txt'. Например:

/path/to/image.jpg 0
/another/path/class01.jpg 1
/yet/another/path/class0.jpg 0

И так далее...

person Shai    schedule 30.08.2015
comment
Спасибо за вашу помощь. Итак, возникает еще один вопрос: если мы поместим полный каталог в list.txt, что мы должны передать в качестве аргумента /path/to/jpegs/ в инструмент convert_imageset. См. следующую ссылку stackoverflow.com/questions/ 31427094/ - person Saeed; 30.08.2015
comment
@ user3062492 попробуйте передать корневую папку / в качестве аргумента - person Shai; 30.08.2015
comment
Конечно, я проверю. Спасибо - person Saeed; 30.08.2015
comment
@Shai, если вы используете аргумент root foder с / и файл list.txt содержит абсолютный путь для изображения при вызове convert_imageset, то результирующий путь, используемый в convert_imageset, будет //path/to/image.jpg 0. Это неправильный путь в Linux. Путь к изображению в list.txt должен быть относительным путем к / для корректной работы convert_imageset. - person Hongsoog; 13.09.2020

Для второго решения, предложенного @Shai

Если вы используете аргумент root foder с /, а файл list.txt содержит абсолютный путь к изображению при вызове convert_imageset, то результирующий путь, используемый в convert_imageset, будет начинаться с двойной косой черты (например, //path/to/image.jpg). Это неверный путь для соответствующего файла изображения в Linux.

Путь к изображению в list.txt должен содержать относительный путь к / для правильной работы convert_imageset следующим образом:

path/to/image.jpg 0
another/path/class01.jpg 1
yet/another/path/class0.jpg 0

вместо

/path/to/image.jpg 0
/another/path/class01.jpg 1
/yet/another/path/class0.jpg 0
person Hongsoog    schedule 13.09.2020