Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >caffe︱ImageData层、DummyData层作为原始数据导入的应用

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

作者头像
悟乙己
发布于 2018-01-02 08:02:10
发布于 2018-01-02 08:02:10
2.2K00
代码可运行
举报
文章被收录于专栏:素质云笔记素质云笔记
运行总次数:0
代码可运行

Part1:caffe的ImageData层

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

  • 这个ImageData只能显示一个batch的图像信息,不能在同一案例循环使用的是吧?
  • L.ImageData之后的数据,可以直接用于框架的输入数据吗?(待尝试) .

一、官方文档中的使用

在案例《Fine-tuning a Pretrained Network for Style Recognition》官方文档中,用来作为数据导入的方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 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):
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/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的框架文件
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  style_net(train=False, subset='train')

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

  • 4、构建预测引擎
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    caffe.Net(style_net(train=False, subset='train'),weights, caffe.TEST)  
  • 5、前馈
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
untrained_style_net.forward()
  • 6、拿出图像
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
style_data_batch = untrained_style_net.blobs['data'].data.copy()

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

. .

Part2:caffe中DummyData层的使用

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

  • 利用DummyData设置备选图框,给新来的图像留个坑
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  dummy_data=L.DummyData(shape=dict(dim=[1, 3, 227, 227]))  

不同框架size不一致

  • 构建框架文件deploy.prototxt,用caffenet
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
caffenet(data=dummy_data, train=False) 
  • 设置预测引擎
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
net=caffe.Net(imagenet_net_filename, weights, caffe.TEST)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 其中需要加载框架权值
  • 单张预测
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
disp_imagenet_preds(net, image)  

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
caffe源码分析-DataTransformer
下面仅仅给出将Datum类型转化为caffe的Blob, cv::Mat的转化同理.
bear_fish
2019/02/25
6140
caffe源码分析-DataTransformer
Caffe Data层 - ImageDataLayer
Caffe Data 层 - ImageDataLayer Caffe 官方提供的直接从 image 文件读取图像数据及对应label. 1. 数据格式及 prototxt 定义 数据格式为: # train.txt 001.jpg 1 002.jpg 2 003.jpg 3 网络层定义: # train_val.prototxt layer { name: "data" type: "ImageData" top: "data" top: "label" i
AIHGF
2019/02/18
1.4K0
Caffe Data层  - ImageDataLayer
【Caffe篇】--Caffe从入门到初始及各层介绍
Caffe,全称Convolutional Architecture for Fast Feature Embedding。是一种常用的深度学习框架,主要应用在视频、图像处理方面的应用上。caffe是一个清晰,可读性高,快速的深度学习框架。作者是贾扬清,加州大学伯克利的ph.D,现就职于Facebook。caffe的官网是http://caffe.berkeleyvision.org/。
LhWorld哥陪你聊算法
2018/09/13
1.3K0
Caffe学习系列(12):训练和测试自己的图片
学习caffe的目的,不是简单的做几个练习,最终还是要用到自己的实际项目或科研中。因此,本文介绍一下,从自己的原始图片到lmdb数据,再到训练和测试模型的整个流程。
bear_fish
2018/09/19
7330
Caffe学习系列(12):训练和测试自己的图片
Caffe 实践 - 基于 ResNet101 的 Multi-label 多标签标注的训练与部署
以前曾尝试过修改 Caffe ImageDataLayer 源码的方式来读取多个 labels - ImageMultilabelDataLayer [Caffe实践 - 基于VGG16 多标签分类的训练与部署].
AIHGF
2019/02/27
1.3K0
Caffe学习系列(23):如何将别人训练好的model用到自己的数据上
http://www.cnblogs.com/denny402/p/5137534.html
bear_fish
2018/09/19
8830
Caffe学习系列(23):如何将别人训练好的model用到自己的数据上
caffe详解之数据层
数字手写体识别数据集,常用来作为Deep Learning入门的基础数据集。它有60000个训练样本集和10000个测试样本集,每个样本图像的宽高为28×28。此数据集是以二进制存储的,不能直接以图像格式查看,不过很容易找到将其转换成图像格式的工具。 数据集大小:~12MB 下载地址:http://yann.lecun.com/exdb/mnist/index.html
AI异构
2020/07/29
5440
caffe详解之数据层
caffe源码分析-DataLayer
DataLayer作为caffe训练时的数据层(以多线程的方式读取数据加速solver的训练过程),继承自BaseDataLayer/BasePrefetchingDataLayer。
bear_fish
2019/02/25
6930
caffe源码分析-DataLayer
caffe随记(二) --- 数据结构简介
TeeyoHuang
2017/12/28
8800
caffe随记(二) --- 数据结构简介
微调︱caffe中fine-tuning模型三重天(函数详解、框架简述)+微调技巧
本文介绍了如何通过修改全连接层来改变CNN模型的行为,包括用于风格转换,风格迁移,人脸检测等。作者主要介绍了两种方法:1)使用预训练网络,通过冻结训练网络并微调它以适应新任务;2)使用自编码器进行无监督学习。
悟乙己
2018/01/02
1.9K0
微调︱caffe中fine-tuning模型三重天(函数详解、框架简述)+微调技巧
Caffe实践 - 基于VGG16 多标签分类的训练与部署
假定每张图片具有 N 个标签(本文N=3),分别为 label1,label2,label3,...,labelNlabel1,label2,label3,...,labelN{label1, label2, label3,...,labelN}.
AIHGF
2019/02/18
1.5K0
Caffe实践 - 基于VGG16 多标签分类的训练与部署
Caffe源码解析(一) —— caffe.proto
caffe.proto是caffe数据结构定义的主要文件,本文主要是在caffe.proto代码的基础上加上了部分中文注释,其中的内容与caffe的prototxt文件中的结构相对应。 // synt
Tyan
2017/12/29
2.6K0
Caffe实践 - 单标签图片分类流程
主要是生成 train.txt、 val.txt 和 test.txt 文件,使其内容格式为:
AIHGF
2019/02/18
1.1K0
【caffe速成】caffe图像分类从模型自定义到测试
这一次我们讲讲 Caffe 这个主流的开源框架从训练到测试出结果的全流程。到此,我必须假设大家已经有了深度学习的基础知识并了解卷积网络的工作原理。
用户1508658
2019/07/25
5940
【caffe速成】caffe图像分类从模型自定义到测试
机器学习库初探之 Caffe
本文介绍了如何使用Caffe进行深度学习模型的训练和部署。首先介绍了Caffe的基本情况和特点,然后详细讲解了Caffe中模型训练和部署的流程和步骤。最后,探讨了如何使用Caffe进行图像分类和物体检测任务。
吕晟
2017/07/07
3.7K1
机器学习库初探之 Caffe
caffe中关于数据进行预处理的方式
caffe的数据层layer中再载入数据时,会先要对数据进行预处理.一般处理的方式有两种: 1. 使用均值处理 transform_param { mirror: true crop_size: 224 mean_file: "/media/mn_mean.binaryproto" } data_param { source: "/medi/mn_train_db" batch_size: 16 backend: LMDB } 2.采
Gxjun
2018/03/27
1.2K0
finemolds模型_yolo模型训练
复制/caffe-root/models/finetune_flickr_style文件夹下面的deploy.prototxt readme.md solver.prototxt train_val.prototxt四个文件到自己的finetune项目根目录/caffe-root/models/finetune_test/下
全栈程序员站长
2022/11/17
4890
Caffe学习笔记(四):使用pycaffe生成train.prototxt、test.prototxt文件
本文介绍了如何使用Caffe进行深度学习,主要内容包括安装Caffe、配置Caffe环境、创建LMDB数据集、训练CNN模型和测试模型。
Jack_Cui
2018/01/08
2.7K0
Caffe学习笔记(四):使用pycaffe生成train.prototxt、test.prototxt文件
论文实践学习 - Deep Metric Learning via Lifted Structured Feature Embedding
利用 code/gen_splits.m 来创建 mat 格式的 train/test 数据集分割,主要修改的地方如下:
AIHGF
2019/02/18
8020
caffe随记(七)---训练和测试自己的图片
本文介绍了如何使用Caffe进行图片分类,通过下载、转换数据、训练和测试一个模型,最后得到了一个可以用于图片分类的模型。
TeeyoHuang
2017/12/28
7050
caffe随记(七)---训练和测试自己的图片
推荐阅读
相关推荐
caffe源码分析-DataTransformer
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档