进来研究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数据集的可视化](http://blog.csdn.net/zengxyuyu/article/details/53232533 “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;