Ich habe angefangen, CNN in MatConvNet mit grundlegenden binären Klassifizierung zu verwenden. Ich habe 90 Bilder darin, dass es insgesamt 750 Flugzeuge und Bodenwahrheitskästen gibt. Unter Verwendung von Bodenkästen habe ich alle Flugzeugbildflecken als positive Proben extrahiert und die Variablen für die Eingabe erstellt. hier ist der MATLAB-Code:CNN für binäre Klassifizierung mit 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'} ;
Im Fall, wenn ich Flugzeuge verbinden (positiv) und nicht-Flugzeugen (negativ) Bild Patches dann Code so sein?
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
wird wie [Alle Positiv Alle Negatives]
images.labels
werden die Daten [Alle 1 All 0'en]
und images.set organisieren werden images.set = [Einsen (1, Npos_train) 2 * Einsen (1, Npos_val) 3 * Einsen (1, Npos_test)];
Q: Die Sache, die mich hier verwirrt, ist: , wenn wir 200 Proben für das Training wollen. Dann, wie CNN wird automatisch positive und negative Proben, wenn die Daten wie in images.data
und images.labels
gespeichert werden?
Redigiert meine Antwort. –