2017-01-18 11 views
0

MatConvNetで基本バイナリ分類でCNNを使用し始めました。私は750の航空機と地上の真実のボックスがあるという点で90の画像を持っています。グランドボックスを使用して、私はすべての航空機画像パッチを陽性サンプルとして抽出し、入力のための変数を作成しました。MatConvNetを使用したバイナリ分類のCNN

場合
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'} ; 

私は航空機(正)及び非航空機(ネガティブ)画像パッチを組み合わせた場合は、コードは次のようになります。ここではMATLABコードはありますか?

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 images.setする[すべて1すべて0]
とimages.setデータを整理します=もの(1、Npos_train )2 * ones(1、Npos_val)3 * ones(1、Npos_test)];

Q:私がここで混乱させるものは、 トレーニング用に200サンプルが必要な場合です。次に、データがimages.dataimages.labelsのように保存されている場合、CNNは自動的に正と負のサンプルを取りますか?

答えて

1

これはあなた自身で検証する必要があります。データのサンプルを取り、対応するラベルを印刷しながら画像をプロットします。

このコードが正しいかどうかは今でもわかりますが、私はデータセットにアクセスできず、コードを試すことができないため途中でできません。しかし、あなたは正しいことを学んでいることを確認するために、途中でデータを検証する必要があります。したがって、私は自分自身でそれを検証することをお勧めします。あなたの深い学習スキルを向上させるのに役立ちます。

編集:

データアレイの同じインデックスラベル配列内の同じインデックスに対応します。したがって、1機の航空機のラベルが0の場合は、それが偽であることが分かり、そうでない場合は、それが真であることが分かります。

実際にネットワークはどのラベルがどのアクションに対応しているかわからず、2つのクラスを区別することを学ぶだけです。私はmathconvnetのチュートリアル(このようなもの:http://www.robots.ox.ac.uk/~vgg/practicals/cnn/index.html)を使ってこれらの概念を理解することをお勧めします。

+0

私の答えを編集しました。 –

関連する問題