Я создаю формат TFrecord для обнаружения объектов.Есть два способа сделать это, когда у нас есть путь к нашему изображению:
with tf.gfile.GFile(path+filename, 'rb') as fid:
encoded_image_data = fid.read()
feat = {
'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_image_data),
'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)
}
tf_example = tf.train.Example(features=tf.train.Features(feature=feat))
Другой метод - использовать opencv вместо GFile:
img = cv2.imread(path+filename)
img = img.astype(np.uint8)
img_encoded = img.tostring()
, но я чего-то не понимаю,Фактически, когда я создавал TFrecord в формате GFile, я получал файл размером 10 Мб (это размер моего набора данных в формате .jpg).Когда я использую метод opencv, я получаю 93 МБ.Почему я получаю такую разницу?Как я могу уменьшить размер с форматом opencv?
PS: мне нужен формат opencv, потому что я хочу объединить изображения, чтобы получить 4 канала вместо 3