CIFAR-10的Matlab可视化与转化

进来研究dl4j-examples里面的相关实例,经常用到例如MNIST、CIFAR等二进制图像集合。原程序用到的是二进制文件格式的读取,而如果想要看到里面数值具体的含义,需要对二进制文件进行可视化。

Matlab使用方便、编程简单,且无论在数值计算,还是在图像处理、模拟过程等方面都非常具有优势,缺点就是软件不开源、价格昂贵,因此滋生了如博主一样的广大盗版软件使用者_^_ 。

Matlab基础

1、导入数据:

load('you data path')
%获取文件名称、路径
[filename,filepath]=uigetfile()

2、读写图像:

[X, map] = imread(filename,format);%读入操作
imgray = rgb2gray(X);%转化为灰度图像
imwrite(image,filename);%图像写入文件操作

3、图像展示:

imshow(X,map);%显示图像
% 同一界面中显示多个图像
figure%假设显示四个图像
subplot(221),imshow(image1)
subplot(222),imshow(image2)
subplot(223),imshow(image3)
subplot(224),imshow(image4)

4、其它常识:

clear all%清空所有变量
close all%关闭所有Figure界面
quit/exit%退出Matlab

CIFAR-10数据集

该数据集的访问地址为http://www.cs.toronto.edu/~kriz/cifar.html,其中Python版本的图像显示可以参考python实现cifar10数据集的可视化。

Matlab版本的数据集中包含以下文件:

  • batchs.meta.mat
  • data_batch_1.mat
  • data_batch_2.mat
  • data_batch_3.mat
  • data_batch_4.mat
  • data_batch_5.mat
  • readme.html
  • test_batch.mat

其中data_batch_i(1,2,3,4,5).mat中包含10000个32 32图片,共有50000张图片;test_batch.mat为测试集数据,共有10000张图片。

Matlab代码

for j=1:5,%读取训练集数据
    %读入第j个batch的数据
    load(['data_batch_' num2str(j) '.mat'])
    for i=1:size(data,1),%循环转化并写入文件
        p=data(i,:);
        label=labels(i);

        fig=zeros(32,32,3);
        fig(:,:,1)=reshape(p(1:1024),32,32)';
        fig(:,:,2)=reshape(p(1025:2048),32,32)';
        fig(:,:,3)=reshape(p(2049:end),32,32)';

        %将数据保存为PNG格式
        imwrite(fig/256,['image/batch_' num2str(j) '_label_' num2str(label) '_' num2str(i)  '.png'])
    end;
end;

你可能感兴趣的:(机器学习)