caffe︱ImageData层、DummyData层作为原始数据导入的应用

Part1:caffe的ImageData层

ImageData是一个图像输入层,该层的好处是,直接输入原始图像信息就可以导入分析。 在案例中利用ImageData层进行数据转化,得到了一批数据。 但是笔者现在还有几个问题,

  • 这个ImageData只能显示一个batch的图像信息,不能在同一案例循环使用的是吧?
  • L.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包含了一些参数:

  • 1、mean_file,数据均值文件存放地
  • 2、source,train_txt的txt文件,其中不论是训练集还是测试集最好有标签,没有标签可以随便标啊,有了这个是为了避免程序出错,每个文档的格式最好都如下(/caffe/data/flickr_style):
/caffe/data/flickr_style/images/8483553476_79bae22144.jpg 1
/caffe/data/flickr_style/images/11801337354_7bf2aa44b4.jpg 0
  • 3、new_height、new_width(可有可无,但是有了之后就会对图片进行resize)如果new_height or new_width 不等于0,则会resize图像,最好new_height、new_width、crop_size 三个都标同一数值。 同时crop_size,new_height,new_width 一定要和论文中给出的一致(经验来源于博客:Caffe C++API 提取任意一张图片的特征系列一—-ImageData
  • 4、★crop_size 修剪上限,超过227的就会进行修剪,一般height和width与crop_size一致就对了,从原图随机crop的尺寸,crop就是截图,利用crop_size这种方式可以剪裁中心关注点和边角特征 其中crop_size 在训练集与验证集中也不尽相同,如果我们输入的图片尺寸大于crop_size,那么图片会被裁剪。当 phase模式为 TRAIN 时,裁剪是随机进行裁剪,而当为TEST 模式时,其裁剪方式则只是裁剪图像的中间区域。 caffe中提供了过采样的方法(oversample),详见/caffe/python/caffe/io.py,裁剪的是图片中央、4个角以及镜像共10张图片。(该部分见博客:caffe中使用crop_size剪裁训练图片
  • 5、mirror:false,1表示开启镜像,0表示关闭,也可用ture和false来表示,是否要对输入图像采用随机水平镜像,mirror可以产生镜像,弥补小数据集的不足
  • 6、batch_size,就是每一次载入的数量,多了就放不下了
  • 7、shuffle(可有可无,最好打乱) 每一个 epoch是否打乱数据.

该层输入上述参数后,返回:图像修整、载入过的图像特征。 同时,另外一点:mirror+crop_size 代表着对 images 进行水平镜像处理或者随机裁剪处理,这两个操作都可以看做是简单的数据增强操作。(来源于:Caffe官方教程中译本_CaffeCN社区翻译(caffecn.cn)) . .

二、用ImageData进行原始图像数据导入

对于ImageData使用方式,我总结的不知道对不对:

  • 1、设置transform_param参数

其中包括:均值文件目录、是否修整mirror、crop_size修整上限

  • 2、ImageData引擎 设置batch_size,height*width图像尺寸,按照框架要求,source代表数据集txt文件
  • 3、扔入框架构建caffenet的框架文件
  style_net(train=False, subset='train')

不知道这个步骤中,L.ImageData之后的数据,可以直接用于框架的输入数据吗?(待尝试)

  • 4、构建预测引擎
    caffe.Net(style_net(train=False, subset='train'),weights, caffe.TEST)  
  • 5、前馈
untrained_style_net.forward()
  • 6、拿出图像
style_data_batch = untrained_style_net.blobs['data'].data.copy()

ImageData层源码解读博客: caffe源码之ImageDataLayer解析 caffe层解读系列——Data以及ImageData层用法

. .

Part2:caffe中DummyData层的使用

DummyData:虚拟数据,可以用这一层模拟预测过程.在官方案例中,借用DummyData层来较快完成预测任务。使用流程:

  • 利用DummyData设置备选图框,给新来的图像留个坑
  dummy_data=L.DummyData(shape=dict(dim=[1, 3, 227, 227]))  

不同框架size不一致

  • 构建框架文件deploy.prototxt,用caffenet
caffenet(data=dummy_data, train=False) 
  • 设置预测引擎
net=caffe.Net(imagenet_net_filename, weights, caffe.TEST)
 其中需要加载框架权值
  • 单张预测
disp_imagenet_preds(net, image)  

其中image是图像的信息,可以是之前ImageData层,也可以是其他转化过的图像特征信息。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏人工智能头条

TensorFlow 发布新版本v1.9(附应用实践教程)

【人工智能头条导读】TensorFlow 是一个开放源代码软件库,用于进行高性能数值计算。借助灵活的架构,用户可以轻松地将计算工作部署到多种平台(CPU、GPU...

573
来自专栏机器之心

GPU捉襟见肘还想训练大批量模型?谁说不可以

2018 年的大部分时间我都在试图训练神经网络时克服 GPU 极限。无论是在含有 1.5 亿个参数的语言模型(如 OpenAI 的大型生成预训练 Transfo...

1273
来自专栏北京马哥教育

Python破解验证码,只要15分钟就够了!

让我们一起攻破世界上最流行的WordPress的验证码插件 每个人都讨厌验证码——在你被允许访问一个网站之前,你总被要求输入那些烦人的图像中所包含的文本。 验...

3816
来自专栏机器之心

资源 | 一张速查表实现Apache MXNet深度学习框架五大特征的开发利用

选自AWS blog 机器之心编译 参与:Smith Apache MXNet 是一个功能全面,且具有高度可扩展性的深度学习框架,可支持创建和训练最新型的深度学...

2766
来自专栏量子位

零基础可上手 | 手把手教你用Cloud AutoML做毒蜘蛛分类器

近日,一名叫Matt Fraser的小哥用Cloud AutoML制作了一个分类器,能识别分类澳大利亚的各种毒蜘蛛。

1046
来自专栏编程

Python那些事——15分钟用Python破解验证码系统!

让我们一起攻破世界上最流行的WordPress的验证码插件 每个人都讨厌验证码——在你被允许访问一个网站之前,你总被要求输入那些烦人的图像中所包含的文本。 验证...

2569
来自专栏新智元

【10大深度学习框架实验对比】Caffe2最优,TensorFlow排第6

【新智元导读】微软数据科学家Ilia Karmanov做了一个项目,使用高级API测试8种常用深度学习框架的性能(因为Keras有TF,CNTK和Theano,...

3747
来自专栏CDA数据分析师

案例 | 5步掌握Python数据分析挖掘基础应用

许许多多的人都非常容易爱上Python这门语言。自从1991年诞生以来,Python现在已经成为最受欢迎的动态编程语言之一,尤其进入21世纪以来,Python在...

2079
来自专栏懒人开发

(6.4)James Stewart Calculus 5th Edition:Work

牛顿第二定律: F = ma (这里 dv = ds/dt, da=dv/dt) 于是有

892
来自专栏软件

可视化你的BLAST结果

人类已经使用数据可视化技术很长一段时间了,图像和图表已被证明是一种有效的方法来进行新信息的传达与教学。有研究表明,80%的人还记得他们所看到的,但只有20%的人...

26710

扫码关注云+社区