Для создания TFRecord вы должны отредактировать пример здесь:
def create_tf_example(group, path):
with tf.gfile.GFile(os.path.join(path, '{}'.format(group.filename)), 'rb') as fid:
encoded_jpg = fid.read()
encoded_jpg_io = io.BytesIO(encoded_jpg)
image = Image.open(encoded_jpg_io)
width, height = image.size
Эта часть кода загружается и открывает путь к файлу изображения;если у вас есть несколько изображений, вы должны загрузить их в разных переменных.Например, я использую что-то вроде этого:
with tf.gfile.GFile(dictionary[0], 'rb') as fid:
encoded_jpg = fid.read()
if ndata > 1:
with tf.gfile.GFile(dictionary[1], 'rb') as fid:
encoded_depth = fid.read()
encoded_inputs = encoded_depth
, где dictionary[0]
содержит путь к изображению rgb, а dictionary[1]
содержит путь к изображению глубины.
ЗатемTFRecord должен быть создан следующим образом:
tf_example = tf.train.Example(features=tf.train.Features(feature={
'image/height': dataset_util.int64_feature(height),
'image/width': dataset_util.int64_feature(width),
'image/filename': dataset_util.bytes_feature(filename),
'image/source_id': dataset_util.bytes_feature(filename),
'image/encoded': dataset_util.bytes_feature(encoded_jpg),
'image/additional_channels/encoded': dataset_util.bytes_feature(encoded_inputs),
'image/format': dataset_util.bytes_feature(image_format),
'image/object/bbox/xmin': dataset_util.float_list_feature(xmins),
'image/object/bbox/xmax': dataset_util.float_list_feature(xmaxs),
'image/object/bbox/ymin': dataset_util.float_list_feature(ymins),
'image/object/bbox/ymax': dataset_util.float_list_feature(ymaxs),
'image/object/class/text': dataset_util.bytes_list_feature(classes_text),
'image/object/class/label': dataset_util.int64_list_feature(classes),
}))
Однако скрипт для экспорта модели для вывода, похоже, не поддерживает экспорт модели таким образом, который позволяет ей принимать дополнительные каналы.
Как вы можете видеть здесь: https://github.com/tensorflow/models/blob/master/research/object_detection/exporter.py#L129
Входной тензор является только стандартным тензором изображения, а тензор_dict [fields.InputDataFields.image_additional_channels] не включен во входные данные.
Я собираюсь исправить это для своего проекта, поэтому я попытаюсь открыть запрос на получение и заставить их объединить его.
Я бы тоже хотел это знать!Мне удалось тренироваться без проблем, но я не могу использовать обученную модель, так как дополнительный канал не может быть загружен ... Вы исправили это?