Я начал использовать CNN в MatConvNet с базовой двоичной классификацией. У меня есть 90 изображений, в которых есть всего 750 самолетов и наземных коробок истины. Используя наземные ящики, я извлек все патчи изображения самолета как положительные образцы и сделаю переменные для ввода. вот MATLAB КОД:CNN для двоичной классификации с использованием MatConvNet
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
будет как [Все Положительных Все негативов]
images.labels
организует данные [все 1 все 0]
и images.set будет images.set = [те (1, Npos_train) 2 * ones (1, Npos_val) 3 * ones (1, Npos_test)];
В: Что меня путает: если мы хотим 200 образцов для обучения. Затем, как CNN автоматически будет принимать положительные и отрицательные образцы, если данные хранятся как в images.data
и images.labels
?
Отредактировал свой ответ. –