我已经开始在 MatConvNet 中使用带有基本二进制分类的 CNN。我有 90 张图像,总共有 750 个飞机和地面实况框。使用地面框,我将所有飞机图像块提取为正样本,并为输入创建变量。这是MATLAB代码:
Npos = numel(p_regions);
Npos_train = floor(0.25*Npos);
Npos_val = floor(0.25*Npos);
Npos_test = floor(0.50*Npos);
imdb.images.set =[ ones( 1, Npos_train ) 2*ones( 1, Npos_val) 3*ones( 1, Npos_test)];
for i=1:Npos
im= imresize (double(p_regions{i,:}),[50,50]);
imdb.images.data(:,:,:, i) = im;
imdb.images.labels(i) = 1;
end
imdb.meta.sets = {'train', 'val', 'test'} ;
如果我结合飞机(正面)和非飞机(负面)图像补丁,那么代码会是这样的吗?
Npos_train = floor(0.25* (Npos+Nneg));
Npos_val = floor(0.25*(Npos+Nneg));
Npos_test = floor(0.50*(Npos+Nneg));
for i=1:Npos
im= imresize (double(p_regions{i,:}),[50,50]);
imdb.images.data(:,:,:, i) = im;
imdb.images.labels(i) = 1;
end
for i=1:Nneg
im= imresize (double(n_regions{i,:}),[50,50]);
imdb.images.data(:,:,:, I+Npos) = im;
imdb.images.labels(I+Npos) = 0;
end
imdb.images.set =[ ones( 1, Npos_train ) 2*ones( 1, Npos_val) 3*ones( 1, Npos_test)];
images.data
就像 [All Positives All Negatives ]
images.labels
将组织数据 [All 1's All 0's ]
和 images.set 将是 images.set =[ ones( 1, Npos_train ) 2*ones( 1, Npos_val) 3*ones( 1, Npos_test)];
问:这里让我感到困惑的是:如果我们想要 200 个样本进行训练。images.data
那么如果数据存储在和中,CNN 将如何自动获取正负样本images.labels
?