我试图在build_imagenet_data.py中使用_convert_to_example()函数的略微变体:
def _convert_to_example(filename, image_buffer, label, bboxes, height, width):
xmin = []
ymin = []
xmax = []
ymax = []
for b in bboxes:
assert len(b) == 4
# pylint: disable=expression-not-assigned
[l.append(point) for l, point in zip([xmin, ymin, xmax, ymax], b)]
# pylint: enable=expression-not-assigned
colorspace = 'RGB'
channels = 3
image_format = 'JPEG'
example = tf.train.Example(features=tf.train.Features(feature={
'image/height': _int64_feature(height),
'image/width': _int64_feature(width),
'image/colorspace': _bytes_feature(colorspace),
'image/channels': _int64_feature(channels),
'image/class/label': _int64_feature(label),
'image/object/bbox/xmin': _float_feature(xmin),
'image/object/bbox/xmax': _float_feature(xmax),
'image/object/bbox/ymin': _float_feature(ymin),
'image/object/bbox/ymax': _float_feature(ymax),
'image/object/bbox/label': _int64_feature(label),
'image/format': _bytes_feature(image_format),
'image/filename': _bytes_feature(os.path.basename(filename)),
'image/encoded': _bytes_feature(image_buffer)}))
return example
我收到与colorspace变量相关的错误:
TypeError:'RGB'的类型为'str',但是应该是:(类'bytes',)
如果我注释掉图像/颜色空间功能,我会得到相同的图像/格式错误。同样对于图像/文件名。如果我注释掉这三个功能,该功能似乎按预期运行。我做错了什么?
答案 0 :(得分:4)
这听起来像是Python 2/3不兼容问题。您可以通过将colorspace
添加到字符串文字中,将image_format
和bytes
显式创建为b
个对象,如下所示:
colorspace = b'RGB'
# ...
image_format = b'JPEG'
答案 1 :(得分:3)
我注意到了一些额外的变化。
o #shuffled_index = range(len(filenames))
o shuffled_index = list(range(len(filenames)))
o #for i in xrange(len(spacing) - 1):
o for i in range(len(spacing) - 1):
o 'image/class/text': _bytes_feature(text.encode()),
o 'image/filename': _bytes_feature(os.path.basename(filename.encode())),
o colorspace = 'RGB'.encode()
o channels = 3
o image_format = 'JPEG'.encode()