最近在学习机器学习图像训练,因此从网上找了ILSVRC2012的训练图像,总大小130多G,下了半个多月才下来,下载链接如下:

magnet:?xt=urn:btih:A306397CCF9C2EAD27155983C254227C0FD938E2

由于我是用matlab进行图像训练,下面把训练前的一些预处理操作和matlab源码贴出,以备有需要的。

1、批量修改文件夹名称
ILSVRC2012_img_train.tar压缩包解压后里面有1000个子压缩包,每个压缩包对应一种物体类别的图像文件夹,在matlab训练图像时,可以用文件夹的名称作为类别名称。

ILSVRC2012_img_train.tar 子压缩包
上图看出,子文件夹的文件名称是随机的数字,因此需要先批量修改文件夹名称,在网上搜了一下没找到matlab批量修改文件的方法(本人matlab也是小白),但是找到了用python修改文件夹名称的方法,代码如下,下面的代码将文件夹的名称按照数字顺序命名.

import os

l=os.listdir(‘H:\ILSVRC2012_img_train’)

os.chdir(‘H:\ILSVRC2012_img_train’)

n=1

for i in l:

filename=str(n)

os.rename(i,filename)

n=n+1

代码运行后文件夹名称变为如下:

2、批量修改图片尺寸
下面需要将所有文件中的图片都修改为统一的大小2272273,采用matlab源码如下:

clear;

clc;

close all;

for k=999 :1 :1001

ka=num2str(k);imagePath = ['H:\ILSVRC2012_img_train\',a,'\'];imageFiles = dir(imagePath);numFiles = length(imageFiles);parfor i=3:numFiles j = i-2;imageFile = strcat(imagePath,imageFiles(i).name);A = imread(imageFile);B = imresize(A,[227 227]);imwrite(B,imageFile);end

end

运行上面的代码的时候matlab在运行到某些图片文件的时候会提示 遇到不支持CMKY空间的JPEG图像 而程序终止,为什么这些图像不支持CMKY空间我现在也没弄明白,索性把不支持的图片都删掉,由于上面代码是for并行运行的,不太好直接看出是哪张图片的问题,但是能看出是哪一个文件夹里的图片,因此用另一个matlab代码运行看是哪个图片错误,代码如下:

clear;

clc;

close all;

imagePath = 'H:\ILSVRC2012_img_train\1\'imageFiles = dir(imagePath);numFiles = length(imageFiles);for i=3:numFilesimageFile = strcat(imagePath,imageFiles(i).name);[m,n,p]=size(imread(imageFile))A = imread(imageFile);B = imresize(A,[227 227]);imwrite(B,imageFile);end

修改上面代码中的’H:\ILSVRC2012_img_train\1’的数字1为出错的文件夹,然后运行程序,出错后,通过命令imageFiles(i).name查看问题图片,然后删掉即可。

3、删除黑白图像
进行完上面的操作之后,发现另外一个问题,就是ILSVRC2012中有很多黑白图像,而我此次训练打算用RGB图像,因此还需要删掉所有RGB图像,删除的matlab源码如下:

clear;

clc;

close all;

for k=1 :1 :1000

ka=num2str(k);imagePath = ['H:\ILSVRC2012_img_train\',a,'\'];imageFiles = dir(imagePath);numFiles = length(imageFiles);parfor i=3:numFiles j = i-2;imageFile = strcat(imagePath,imageFiles(i).name);[m,n,p]=size(imread(imageFile));if(m~= 227 || n ~= 227 || p~=3)delete(imageFile);i;endend

end

此代码是检查图像的尺寸,删掉所有不是2272273尺寸的图像

4、计算所有文件夹中图片数量的最小值
由于所采用的matlab神经网络训练程序需要每个类别的图像训练数目一样,但是ILSVRC2012中每个类别的图像数量相差不少,因此需要知道每个类别拥有图片数量的最小值,下面是matlab源码:

min= 1300 ;

for k=1 :1 :1000

a=num2str(k);imagePath = ['H:\ILSVRC2012_img_train\',a,'\'];imageFiles = dir(imagePath);numFiles = length(imageFiles);if(numFiles < min)min = numFiles ;endmin

end

上面的代码运行后,会实时打印当前计算出的最小值,最终计算出的最小值为700多,因此下面的训练实例中用600张作为训练,100张作为验证。

5、matlab 机器学习训练实例
clc;clear;

digitDatasetPath = ‘H:\ILSVRC2012_img_train’;

imds = imageDatastore(digitDatasetPath, …

'IncludeSubfolders',true,'LabelSource','foldernames');

labelCount = countEachLabel(imds);

numTrainFiles = 600;

[imdsTrain,imdsValidation_temp] = splitEachLabel(imds,numTrainFiles,‘randomize’);

[imdsValidation,imdsValidation_temp2] = splitEachLabel(imdsValidation_temp,100,‘randomize’);

imageAugmenter = imageDataAugmenter( …

'RandRotation',[-90,90], ...'RandXTranslation',[-30 30], ...'RandYTranslation',[-30 30]);

%imageSize = [227 227 3];

%augimds = augmentedImageDatastore(imageSize,‘DataAugmentation’,imageAugmenter);

layers = [

imageInputLayer([227 227 3]) convolution2dLayer(6,256,'Padding','same')batchNormalizationLayerreluLayer   maxPooling2dLayer(6,'Stride',3) convolution2dLayer(6,256,'Padding','same')batchNormalizationLayerreluLayer maxPooling2dLayer(6,'Stride',3) convolution2dLayer(6,256,'Padding','same')batchNormalizationLayerreluLayer maxPooling2dLayer(6,'Stride',3)convolution2dLayer(6,64,'Padding','same')batchNormalizationLayerreluLayerfullyConnectedLayer(3000)reluLayerdropoutLayer fullyConnectedLayer(3000)reluLayerdropoutLayerfullyConnectedLayer(1000)softmaxLayerclassificationLayer];

options = trainingOptions(‘sgdm’, …

'InitialLearnRate',0.001, ...'MiniBatchSize',5,...'MaxEpochs',50, ...'ValidationPatience',5000,...'ExecutionEnvironment','gpu', ...'Shuffle','every-epoch', ...'ValidationData',imdsValidation, ...'ValidationFrequency',5, ...'Verbose',true, ...'Plots','training-progress');

net = trainNetwork(imdsTrain,layers,options);

YPred = classify(net,imdsValidation);

YValidation = imdsValidation.Labels;

accuracy = sum(YPred == YValidation)/numel(YValidation)

上面的代码是matlab训练卷积神经网络的,里面从每个文件夹中获取600张图片作为训练用,100张作为验证用,训练采用GPU

ILSVRC2012神经网络训练图像预处理相关推荐

  1. 训练图像预处理函数功能(paddle)

    简 介: 尽管我们可以通过 下面命令获得paddle.vision.transforms中的所有的函数.那么这些函数的具体使用说明如何能够获得呢? 关键词: 数据预处理,paddle,vision,t ...

  2. 论文翻译:基于端到端的可训练神经网络基于图像的序列识别及其在场景文本识别中的应用

    An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Application to S ...

  3. darknet训练图像分类图像预处理random_distort_image研究

    更多darknet训练图像分类图像预处理 random_distort_image() void random_distort_image(image im, float hue, float sat ...

  4. 基于深度卷积神经网络的图像网络分类

    摘要 我们训练了一个大型的.深层的卷积神经网络,将ImageNet lsvrc-2010比赛中的120万张高分辨率图像分类为1000个不同的类别.在测试数据上,我们实现了前1位和前5位错误率分别为37 ...

  5. opencv ocr字符识别_OCR深度实践系列:图像预处理

    近一个半月时间没更了,在这段时间里针对OCR业务进行了深入研究,业务也已上线,谨以此篇作为OCR系列的开篇. 目前NLP+OCR的落地应用在市场上愈加火热,如金融领域的研报分析.司法领域的合同审核甚至 ...

  6. parallels desktop网络初始化失败_秘籍在手,训练不愁!特斯拉AI负责人Karpathy的超全神经网络训练套路...

    大数据文摘出品 编译:周素云.宋欣仪.熊琰.ZoeY.顾晨波 训练神经网络到底有诀窍和套路吗? Andrej Karpathy认为,还的确有. 这位特斯拉的人工智能研究负责人.李飞飞的斯坦福高徒刚刚难 ...

  7. 卷积神经网络训练准确率突然下降_详解卷积神经网络:手把手教你训练一个新项目...

    作者:Tirmidzi Aflahi 原文链接:https://thedatamage.com/convolutional-neural-network-explained/Tirmidzi Afla ...

  8. python神经网络构建图_如何用卷积神经网络构建图像?

    原标题:如何用卷积神经网络构建图像? 原标题 |Everything you need to know to master Convolutional Neural Networks 作者 | Tir ...

  9. 【神经网络与深度学习】CIFAR10数据集介绍,并使用卷积神经网络训练图像分类模型——[附完整训练代码]

    [神经网络与深度学习]CIFAR-10数据集介绍,并使用卷积神经网络训练模型--[附完整代码] 一.CIFAR-10数据集介绍 1.1 CIFAR-10数据集的内容 1.2 CIFAR-10数据集的结 ...

  10. 神经网络的三种训练方法,神经网络训练过程详解

    如何训练神经网络 1.先别着急写代码训练神经网络前,别管代码,先从预处理数据集开始.我们先花几个小时的时间,了解数据的分布并找出其中的规律. Andrej有一次在整理数据时发现了重复的样本,还有一次发 ...

最新文章

  1. JasperMES.cn JasperMES.com.cn 我的MES网站
  2. 前端学习(2009)vue之电商管理系统电商系统之渲染商品属性的结构
  3. Php获取id并提交表单,提交表单后 PHP获取提交内容的实现方法
  4. Mouse Detected Problem
  5. 鼠标悬浮缩放--鼠标悬浮图片上图片进行放大突出
  6. iOS原生APP和H5交互-delegate和第三方
  7. Python数据分析、挖掘常用工具
  8. ecshop 实现购物车退出不清空
  9. bootstrap必填红心_bootstrap如何设置表单必填
  10. 一个高速公路交警的救命忠告
  11. 面向对象:只愿得一人心,白首不分离
  12. NYOJ 题目772 数独
  13. Android 属性动画使用(二)
  14. Linux-tar打包与解压命令
  15. 通过matlab和simulink实现BSC二进制对称信道的仿真
  16. 乱七八糟的普元(GoCom)网站
  17. 单位及主管部门同意报考证明单位不同意怎么办
  18. 我所理解的代码整洁之道(一)
  19. 一文讲透研发,SRE,运维,DevOps 的区别
  20. 双时滞四维捕食网络的分析【基于matlab的动力学模型学习笔记_6】

热门文章

  1. 高德地图-根据IP定位显示当前所在城市
  2. Java web 在线预览--参考二
  3. Exploring Simple Siamese Representation Learning阅读笔记
  4. IPv4 + IPv6 = IPv10?是的,IPv10就是IPV4 + IPv6!
  5. mongodb 数据库迁移
  6. coturn NAT穿透服务器搭建
  7. VOCALOID笔记
  8. dxp全称_Protel DXP 2004 分立元件库元件名称中英对照表
  9. android cardview,安卓 CardView 妙用
  10. 微信小程序蓝牙打印开发心得