Я попробовал разные методы и, наконец, смог получить ответ (не только преобразование в tfrecords, но также обучение и само обнаружение объекта).
Если набор данных состоит только из изображений в градациях серого, только для обнаружения объектов Tensorflowнужно, чтобы количество каналов было определено как 3. Следовательно, единственное необходимое изменение - добавить 'image/channels': dataset_util.int64_feature(3)
к функциям поезда внутри кода.Абсолютно нет необходимости преобразовывать оттенки серого в RGB , используя cv2.COLOR_GRAY2BGR или tf.image.grayscale_to_rgb.
Преобразование изображений с использованием этих методов приводит к ошибкам, таким как: outofrangeerror FIFOQueue '_3_prefetch_queue' is closed and has insufficient elements (requested 1, current size 0)
или OP_REQUIRES failed at iterator_ops.cc:891 : Invalid argument: assertion failed: [Unable to decode bytes as JPEG, PNG, GIF, or BMP]
во времяобучение.
Чтобы избежать каких-либо дополнительных усилий, убедитесь, что вы используете изображения jpg.Если у вас есть другие форматы, такие как bmp, конвертируйте их в jpg.Обратите внимание, что изменение расширения файла не является преобразованием. Вы должны преобразовать их, используя любые инструменты, которые вы предпочитаете.