如何从小批量获取图像文件名?
How to get images filenames from minibatch?
我正在编写本教程:
https://github.com/Microsoft/CNTK/blob/master/Tutorials/CNTK_201B_CIFAR-10_ImageHandsOn.ipynb
测试/训练数据文件是简单的制表符分隔文本文件,包含图像文件名和正确的标签,如下所示:
...\data\CIFAR-10\test[=10=]000.png 3
...\data\CIFAR-10\test[=10=]001.png 8
...\data\CIFAR-10\test[=10=]002.png 8
假设我像这样创建一个小批量:
test_minibatch = reader_test.next_minibatch(10)
如何找到测试数据文件第一列中的图像文件名?
我试过这个代码:
orig_features = np.asarray(test_minibatch[features_stream_info].m_data)
print(orig_features)
但是,这会导致打印图像本身的字节。
通过图像reader加载图像时文件名丢失。
一种可能的解决方案是使用复合 reader 同时加载文本格式的地图文件。我们在此处使用 BrainScript 复合 reader 示例:
https://github.com/Microsoft/CNTK/tree/master/Examples/Image/Regression
使用 Python,您可以执行以下操作:
# read images
image_source = ImageDeserializer(map_file)
image_source.ignore_labels()
image_source.map_features(features_stream_name,
[ImageDeserializer.scale(width=image_width, height=image_height, channels=num_channels,
scale_mode="pad", pad_value=114, interpolations='linear')])
# read rois and labels
roi_source = CTFDeserializer(roi_file)
roi_source.map_input(rois_stream_name, dim=rois_dim, format="dense")
label_source = CTFDeserializer(label_file)
label_source.map_input(labels_stream_name, dim=label_dim, format="dense")
# define a composite reader
rc = ReaderConfig([image_source, roi_source, label_source], epoch_size=sys.maxsize)
return rc.minibatch_source()
我正在编写本教程:
https://github.com/Microsoft/CNTK/blob/master/Tutorials/CNTK_201B_CIFAR-10_ImageHandsOn.ipynb
测试/训练数据文件是简单的制表符分隔文本文件,包含图像文件名和正确的标签,如下所示:
...\data\CIFAR-10\test[=10=]000.png 3
...\data\CIFAR-10\test[=10=]001.png 8
...\data\CIFAR-10\test[=10=]002.png 8
假设我像这样创建一个小批量:
test_minibatch = reader_test.next_minibatch(10)
如何找到测试数据文件第一列中的图像文件名?
我试过这个代码:
orig_features = np.asarray(test_minibatch[features_stream_info].m_data)
print(orig_features)
但是,这会导致打印图像本身的字节。
通过图像reader加载图像时文件名丢失。
一种可能的解决方案是使用复合 reader 同时加载文本格式的地图文件。我们在此处使用 BrainScript 复合 reader 示例: https://github.com/Microsoft/CNTK/tree/master/Examples/Image/Regression
使用 Python,您可以执行以下操作:
# read images
image_source = ImageDeserializer(map_file)
image_source.ignore_labels()
image_source.map_features(features_stream_name,
[ImageDeserializer.scale(width=image_width, height=image_height, channels=num_channels,
scale_mode="pad", pad_value=114, interpolations='linear')])
# read rois and labels
roi_source = CTFDeserializer(roi_file)
roi_source.map_input(rois_stream_name, dim=rois_dim, format="dense")
label_source = CTFDeserializer(label_file)
label_source.map_input(labels_stream_name, dim=label_dim, format="dense")
# define a composite reader
rc = ReaderConfig([image_source, roi_source, label_source], epoch_size=sys.maxsize)
return rc.minibatch_source()