ImageData是一个图像输入层,该层的好处是,直接输入原始图像信息就可以导入分析。 在案例中利用ImageData层进行数据转化,得到了一批数据。 但是笔者现在还有几个问题,
在案例《Fine-tuning a Pretrained Network for Style Recognition》官方文档中,用来作为数据导入的方法:
transform_param = dict(mirror=train,crop_size=227,mean_file=caffe_root +'data/ilsvrc12/imagenet_mean.binaryproto')
L.ImageData(transform_param=transform_param, source=source,batch_size=50, new_height=256, new_width=256, ntop=2)
其中transform_param包含了一些参数:
/caffe/data/flickr_style/images/8483553476_79bae22144.jpg 1
/caffe/data/flickr_style/images/11801337354_7bf2aa44b4.jpg 0
该层输入上述参数后,返回:图像修整、载入过的图像特征。 同时,另外一点:mirror+crop_size 代表着对 images 进行水平镜像处理或者随机裁剪处理,这两个操作都可以看做是简单的数据增强操作。(来源于:Caffe官方教程中译本_CaffeCN社区翻译(caffecn.cn)) . .
对于ImageData使用方式,我总结的不知道对不对:
其中包括:均值文件目录、是否修整mirror、crop_size修整上限
style_net(train=False, subset='train')
不知道这个步骤中,L.ImageData之后的数据,可以直接用于框架的输入数据吗?(待尝试)
caffe.Net(style_net(train=False, subset='train'),weights, caffe.TEST)
untrained_style_net.forward()
style_data_batch = untrained_style_net.blobs['data'].data.copy()
ImageData层源码解读博客: caffe源码之ImageDataLayer解析 caffe层解读系列——Data以及ImageData层用法
. .
DummyData:虚拟数据,可以用这一层模拟预测过程.在官方案例中,借用DummyData层来较快完成预测任务。使用流程:
dummy_data=L.DummyData(shape=dict(dim=[1, 3, 227, 227]))
不同框架size不一致
caffenet(data=dummy_data, train=False)
net=caffe.Net(imagenet_net_filename, weights, caffe.TEST)
其中需要加载框架权值
disp_imagenet_preds(net, image)
其中image是图像的信息,可以是之前ImageData层,也可以是其他转化过的图像特征信息。