Каков наилучший способ сжать мои данные в lmdb
У меня есть большой набор данных, который делает мой lmdb огромным. Для 16.000 образцов моя база данных уже 20 ГБ. Но в общей сложности у меня есть 800 000 изображений, которые в конечном итоге будут содержать огромное количество данных. Есть ли способ сжать lmdb? Или лучше использовать файлы HDF5? Я хотел бы знать, если кто-нибудь знает, возможно, лучшее решение этой проблемы.
2 ответа
Если вы посмотрите внутрь ReadImageToDatum
функция в io.cpp
он может хранить изображение в сжатом (JPG / PNG) формате или в необработанном формате. Чтобы использовать сжатый формат, вы можете сжать загруженное изображение, используя cv::imencode
, Теперь вы просто установите данные для сжатых данных и установите encoded
флаг. Затем вы можете сохранить данные в lmdb
,
Существуют различные методы для уменьшения размера ввода, но многое зависит от вашего приложения. Например, изображения набора данных ILSVRC-2012 могут быть изменены до 256x256 пикселей без вредного влияния на время обучения или точность модели. Это уменьшает набор данных с 240 ГБ до 40 ГБ. Может ли ваш набор данных потерять точность из-за простого "физического" сжатия? Как мало у вас должен быть набор данных?
Боюсь, что я недостаточно работал с файлами HDF5, чтобы иметь обоснованное мнение.