在此,先要说一下,我只弄懂了怎么用自己的数据训练。但如何在训练好的模型上再继续用自己的数据训练,我还没弄懂所以,今天主要记录一下怎么来将自己的数据弄成imagenet接受的形式。下图是我的matconvnet-1.0-beta23,里面有个data文件夹,没有就自己创建一个data.


依照下图,在data文件夹中创建两个文件夹:ILSVRC2012和imagenet12-alexnet-bnorm-simplenn 。

我们先来看第一个ILSVRC2012文件夹,在此文件夹下载创建如下图所示的ILSVRC2012_devkit_t12和images两个文件夹。

这回,我们先来看看images文件夹,先看下图,在images 文件夹下再创建两个文件:train和val(可以看成就是测试数据test),可以看出,这里就是我们要放自己的图片数据的地方啦 。

我的训练数据分为3类,所以在train中,我创建了三个文件夹,n01, n02,n03,每个文件夹中分别放置类1,类2,类3的训练图片。其中,图片大小四256*256*3,格式为.JPEG。关于图片的命名,我的是如下图。前面是n0*_ ,代表类别,后面是0000…N是该图片在第* 类训练数据中的编号。关于为什么这么多0,要不要非得按照我的命明方式来,我建议还是按着来吧,毕竟我也是按照原有的ILSVRC2012数据套用的,没尝试其它命名方式行不行,反正我弄得这个可以跑通。我的训练数据有1134张,分为3类,每类378张图片。对于n01中,包含378张图片,所以我的图片名是从n01_00000001.JPEG 到 n01_00000378.JPEG;对于n02文件夹,也包含378张图片,所以我的图片名是从n02_00000001.JPEG 到 n02_00000378.JPEG;同理,n03文件夹中也包含378张图片,所以我的图片名是从n03_00000001.JPEG 到 n03_00000378.JPEG。



接下来是val文件夹中的测试数据。测试图片直接存储在val文件夹下,如下图,图片大小和格式与训练数据相同,命名为ILSVRC2012_val_000…N.JPEG,其中N是该图片在测试数据集中的编号。比如我自己的数据有756张测试图片,所以我的val中的图片命名是从ILSVRC2012_val_00000001.JPEG到ILSVRC2012_val_00000756.JPEG,按顺序存储着252张类1,252张类2,252张类3测试图片。

现在images文件夹下数据弄好了,我们来看ILSVRC2012下另一个文件夹:ILSVRC2012_devkit_t12。首先在ILSVRC2012_devkit_t12文件夹下创建一个名为data的文件夹,然后将images/val中测试图片按顺序对应的类标写在名为ILSVRC2012_validation_ground_truth的.txt文件中如下图。比如我前面说到我有756张测试图片,且分为3类,每类就有252张图,并且在val中图片ILSVRC2012_val_00000001.JPEG到ILSVRC2012_val_0000000252.JPEG都是类1的图片,图片ILSVRC2012_val_00000253.JPEG到ILSVRC2012_val_00000504.JPEG都是类2的图片,图片ILSVRC2012_val_00000505.JPEG到ILSVRC2012_val_00000756.JPEG都是类3的图片,那么在我的.txt文件中,会有252个1,252个2和252个3。


省略号

省略号

到此,我们的ILSVRC2012文件夹就准备好了,还差imagenet12-alexnet-bnorm-simplenn文件夹中的内容。下图可看到imagenet12-alexnet-bnorm-simplenn文件夹中包含两个.mat文件。先说第一个imdb.mat 。imdb.mat 下包含一个名为images的 struct,一个名为classes的struct,和一个名为imageDir的char。

(1)名为images的 struct下包含images.id (double),images.name(cell),images.set(double)和images.label(double)。

在此,为了说清楚,我来拿我自己的数据举例子。我的训练数据1134张,分为3类,每类也就是378张图片。我的测试数据756张,同样分为3类,每类252张。训练加测试一共是1890张图片。
(1.1)images.id 是一个1*1890的double,其中按顺序存储着1到1890数字。(干嘛用的我也不知道)

(1.2)images.name 是一个1*1890的cell。每一列存储的是图片的地址名,是从train和val文件开始的。比如:前1134个为 train/n01/n01_00000001.JPEG …train/n01/n01_00000378.JPEG…train/n02/n02_00000001.JPEG…train/n01/n01_00000378.JPEG…train/n03/n03_00000001.JPEG…train/n03/n03_00000378.JPEG; 同理,接在后面的是测试的,就是val/ILSVRC2012_val_00000001.JPEG到 val/ILSVRC2012_val_00000756.JPEG 。


(1.3)images.set是1*1890的double,其由数字1和2组成,训练数据集中有多少个图片,就有多少个1,测试集中有多少个图片,就有多少个2。在我的数据中,有1134个1和756个2。

(1.4)image.label是1*1890的double,存储的是文件夹n01,n02,n03和val中图片对应的类标。比如,我训练数据分为3类,每类图片数都是378;测试数据有756个,也分为3类,1—252是类1,253—504是类2,505—756是类3。那么在我的image.label中先是378个1,再是378个2,接着378个3,接着252个1,252个2,252个3。

(2)imdb.mat中classes(cell)包含两个cell,classes.name(cell)和classes.description(cell):

(2.1)classes.name是1*M的,其中M是你训练数据的类数。比如我有3个文件夹在train文件夹下,那我的classes.name如下图。

(2.2)classes.description也是1*M的,M是类数。里面就是描述你每个类的特征的。比如我的图片是表现心情的图片,分为happy ,sad ,neural 三类。

(3)imdb.mat下最后一个包含的是imageDir,里面是你存图片的地址。比如我们把我们的train和val图片存在了ILSVRC2012/images中, 我们的imageDir为 :home/your_name/data/ILSVRC2012/images .

接下来说imagenet12-alexnet-bnorm-simplenn文件夹中的另一个.mat文件:imageStats.mat,如下图:它包含内容如下:

这三个参数是根据你自己的数据生成的,这里我将生成自己的imageStats.mat的代码贴出来,读者自己改一下:创建个名为makeImageStats的函数,放在matcovnet下的examples/imagenet下,运行一下makeImageStats.m,生成自己的imagsStats.mat:

function [ output_args ] = makeImageStats( input_args )
%用来处理EEG数据,生成imagsStats.mat
load E:\matlabCode\EEG_上交\data_augmentation\3到5频带不加噪音\imdb.mat     %你自己的数据的imdb.mat的地址
train = find(images.set == 1) ;images = fullfile(imageDir, images.name(train(1:100:end))) ;
%   [averageImage, rgbMean, rgbCovariance] = getImageStats(images, ...
%                                                     'imageSize', [256 256], ...
%                                                     'numThreads', opts.numFetchThreads, ...
%                                                     'gpus', opts.train.gpus) ;[averageImage, rgbMean, rgbCovariance] = getImageStats(images, ...'imageSize', [256 256], ...  %[256 256]'numThreads', 12) ;save('E:\matlabCode\imageStats', 'averageImage', 'rgbMean', 'rgbCovariance') ; %生成的imageStats的存放地址end

按照上面说的,将自己数据对应如下图的几样东东弄好,放入matcovnet的data文件夹下。

最后,运行examples/imagenet下的cnn_imagenet.m

训练模型开始,最终生成的模型存在imagenet12-alexnet-bnorm-simplenn中。

记录:
模型训练epoch在cnn_imagnet_init.m中设置

依照ILSVRC2012在matconvnet-1.0-beta23 中用imagenet训练的情况,训练自己的数据相关推荐

  1. html 表单内容怎么获取不到,jquery中formdate一直获取不到对象中的[0]的值 包括本身也是一个空的数据怎么办?...

    jquery中formdate一直获取不到对象中的[0]的值 包括本身也是一个空的数据怎么办? 再做一个前台的ajax方法 查网上用formdate方法上传.可是进了接口之后一直在控制台获取不到for ...

  2. tensorflow2.0中valid_data的作用是在训练的过程对对比训练数据与测试数据的准确率 损失率,便于判断模型的训练效果:是过拟合还是欠拟合(过拟合)

    tensorflow2.0中valid_data的作用是在训练的过程对对比训练数据与测试数据的准确率,便于判断模型的训练效果:是过拟合还是欠拟合 过拟合:训练数据的准确率较高而测试数据的准确率较低 欠 ...

  3. pytorch加载预训练模型_Pytorch-Transformers 1.0发布,支持六个预训练框架,含27个预训练模型...

    AI 科技评论按:刚刚在Github上发布了开源 Pytorch-Transformers 1.0,该项目支持BERT, GPT, GPT-2, Transfo-XL, XLNet, XLM等,并包含 ...

  4. Keras之DNN:利用DNN算法【Input(8)→12+8(relu)→O(sigmoid)】利用糖尿病数据集训练、评估模型(利用糖尿病数据集中的八个参数特征预测一个0或1结果)

    Keras之DNN:利用DNN算法[Input(8)→12+8(relu)→O(sigmoid)]利用糖尿病数据集训练.评估模型(利用糖尿病数据集中的八个参数特征预测一个0或1结果) 目录 输出结果 ...

  5. 利用该0 day漏洞的攻击活动情况

    谷歌研究人员发现macOS漏洞利用. 谷歌研究人员在macOS系统中发现了一个安全漏洞--CVE-2021-30869.攻击者利用该漏洞可以以kernel权限执行任意代码.8月底,谷歌研究人员发现了该 ...

  6. Android 蓝牙4.0(BLE)开发实现对蓝牙的写入数据和读取数据

    由于最近学校组织了一个移动APP(安卓)设计大赛,自己也学习安卓有一段时间了,就跟同学商量一起去参加试试,一拍即合,然后我们就开始想idea,因为最近可穿戴设备比较火,我们也就想试试.经过商量,我负责 ...

  7. JEECG Framework 3.5.0 GA 新版本终于发布了,重量级功能(数据权限,国际化,多数据源),团队会努力推出新版本,希望大家多多支持!!

     JEECG Framework 3.5.0 GA 新版本终于发布了,重量级功能(数据权限,国际化,多数据源),            今年团队会努力不断推出新版本,希望大家多多支持!! 发布地址: ...

  8. python模型训练框架_Pytorch-Transformers 1.0发布,支持六个预训练框架,含27个预训练模型...

    哪些支持 PyTorch-Transformers(此前叫做pytorch-pretrained-bert)是面向自然语言处理,当前性能最高的预训练模型开源库. 该开源库现在包含了 PyTorch 实 ...

  9. 精通Web Analytics 2.0 (8) 第六章:使用定性数据解答”为什么“的谜团

    精通Web Analytics 2.0 (8) 第六章:使用定性数据解答"为什么"的谜团 精通Web Analytics 2.0 : 用户中心科学与在线统计艺术 第六章:使用定性数 ...

  10. Python中用pandas和openpyxl向Excel填入数据,不覆盖源数据和格式

    Python中用pandas和openpyxl向Excel填入数据,不覆盖源数据和格式 Python中处理Excel数据时,正常遇到需要Excel表中对几项数据统计后,填入源表对应的单元格里,平时我们 ...

最新文章

  1. 【C语言】模拟实现库函数 strcpy(复制字符串内容) 与 strlen(求字符串长度)
  2. Maven:No goals have been specified for this build. You must specify a valid lifecycle phase
  3. 正则表达式测试工具、网页版
  4. ASP.NET Core 中文文档 第四章 MVC(2.2)模型验证
  5. 解决远程连接mysql错误1130
  6. [redis设计与实现][7]基本数据结构——对象
  7. 图像处理-二值形态学运算
  8. php输出下载地址,PHP实现的文件直接输出下载
  9. 四级信息安全工程师考试大纲
  10. (1)外网映射(NATAPP快速入门)
  11. JAVA——【案例】实现计算机系信息管理系统(教师和学生信息管理)
  12. 免费高效的WhatsApp助手
  13. 【02.06-02.13】长赢计划主理人“ETF拯救世界”微博精选
  14. Minecraft 从安装到入门
  15. 轻松构建自己的Python开发环境,进入机器学习新世界
  16. 计算机考研调剂专业课,一波七折的计算机考研初试调剂经验教训贴,别放弃,太阳还在...
  17. 【倩女幽魂妖魔道】聊斋妖魔道之倩女幽魂单机版一键端源码分享
  18. 20个月积累10,000+客户诸葛io放行业“连弩”
  19. 通过Python分析2020年全年微博热搜数据
  20. Oracle ClusterwarePRCT-1011 : Failed to run oifcfg. Detailed error: null

热门文章

  1. 什么叫做私有网络VPC?
  2. 使用flask从零构建自动化运维平台系列三
  3. 【详解】MySQL分区表,分区的过程,四种分区类型
  4. 2021最新python学习视频教程
  5. balsamiq mockups 注册
  6. (附源码)流浪动物保护平台的设计与实现 毕业设计 161154
  7. python抓取google搜索结果
  8. meta标签(以京东首页为例)
  9. Excel如何批量查询手机号码归属地
  10. Pycharm 如何将背景设置成自己喜欢的图片详文