本文是系列文章的补充教程,适用人群:利用NYU-V2数据集进行深度学习,数据集过大内存溢出。
由于原始数据集超出大小,序列化后内存溢出,电脑配置8g内存可能不够,因此把数据集删减来试试代码是否可以继续运行。
-
之前的尝试:表明擅自把基础代码改了后面的代码还是会出现问题,而且连锁反应,bug更大,在不太懂的时候这么做很害怕。
-
解决方式
极简数据集,先用14个照片组成一组mat来测试
代码如下:
先把2.8g的mat切了
good.mat 现在20m左右,真舒服
原本1449张图片,现在截取前14张的(目标是只要depths)
因为rawdepth这块, 这个数据集有问题
问题如下:应该是size有误或者??
官方也说了,这有问题,于是用D代替RD
-
然后函数把depths图像提取出来,批处理为png格式文件,下面代码刚还可以用,现在不行了,反正已经处理了50张,先试试效果
nyufile = fullfile('nyu_depth_v2_labeled.mat');
outDir = fullfile('output/', 'sgupta', 'datasets', 'nyud2', 'datacopy');
mkdir(fullfile(outDir, 'rawdepth'));
mkdir(fullfile(outDir, 'depth'));
mkdir(fullfile(outDir, 'images'));
dt = load(nyufile, 'rawDepths');
for i = 1:14,
imwrite(uint16((dt.rawDepths(:,:,i))*1000), fullfile(outDir, 'rawdepth', sprintf('img_%04d.png', i + 5000)));
end
dt = load(nyufile, 'depths');
for i = 1:14,
imwrite(uint16((dt.depths(:,:,i))*1000), fullfile(outDir, 'depth', sprintf('img_%04d.png', i + 5000)));
end
dt = load(nyufile, 'images');
for i = 1:14,
imwrite(uint8((dt.images(:,:,:,i))), fullfile(outDir, 'images', sprintf('img_%04d.png', i + 5000)));
end
-
用函数把depth+depth格式编码为hha
图为正在运行hha的test.m代码
clc;
addpath('./utils/nyu-hooks');
addpath('./utils/depth_features');
% matrix_filename = 'camera_rotations_NYU.txt';
depth_image_root = './test/depth' % dir where depth and raw depth images are in.
% camera_matrix = textread(matrix_filename); % import matrix data
C = getCameraParam('color');
for i=1447:1449
i
matrix = C; %camera_matrix(1+(i-1)*3:i*3,:); % matrix of this image, 3*3
D = imread(fullfile(depth_image_root, '/', ['img_',mat2str(i+5000),'.png']));
% here, RD is the same as D, because there is some problem about NYU Depth V2 raw-depth-images
RD = imread(fullfile(depth_image_root, '/', ['img_',mat2str(i+5000),'.png']));
D = double(D)/10000;
missingMask = RD==0;
[pc, N, yDir, h, pcRot, NRot] = processDepthImage(D*100, missingMask, C);
[X, Y, Z] = getPointCloudFromZ(D*100, C, 1);
fid = fopen('demo-data/pd.txt', 'w');
for ii=1:size(X, 1)
for jj = 1:size(X, 2)
fprintf(fid,'%f\t%f\t%f\n',X(ii, jj), Y(ii, jj), Z(ii, jj));
end
end
hha = saveHHA([mat2str(i), '_hha'], matrix, depth_image_root, D, RD);
end
-
展示最后数据
彩色是hha,黑色是depths。
通过depth->hha + good.mat,再试试内存会不会溢出