2017-01-18 3 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

직접 확인해야합니다. 데이터 샘플을 가져 와서 해당 레이블을 인쇄하면서 이미지를 그립니다.

데이터 세트에 액세스 할 수 없어 코드를 시험 할 수 없어이 코드가 올바른지 여부를 알려 주더라도 저는이 방법을 사용할 수 없습니다. 그러나 당신은 옳은 일을 배우고 있는지 확인하기 위해 어쨌든 데이터를 검증 할 수 있어야합니다. 그러므로 나는 너 자신을 확인해 줄 것을 권할 것이다. 깊은 학습 기술을 향상시키는 데 도움이됩니다.

편집 :

데이터 배열에 대해 동일한 인덱스 라벨 배열 동일한 인덱스에 대응한다. 따라서 한 항공기에 대한 레이블이 0 인 경우 항공기는 거짓임을 알며 그렇지 않은 경우 항공기는 사실임을 알고 있습니다.

네트워크는 실제로 어떤 레이블이 어떤 작업에 해당하는지 알지 못하며 두 클래스를 구별하는 것을 배우게됩니다. 이 개념을 이해하려면 mathconvnet 튜토리얼 (이 중 하나 : http://www.robots.ox.ac.uk/~vgg/practicals/cnn/index.html)을 사용해 보시기 바랍니다.

+0

편집 내 대답. –