% HG  
% Tiny Conv Net of Dyni for bird 2015
% Lauron 8 mai 2015

clear all 

for train = 1:300 

clear facette
train

eval(['! ls /home/user/LIFECLEF2015_CLASSIF_DYNI/CMT_V4/CMTfinalspectro_CHECKED/TRAIN' num2str(train) '/*.jpg > /home/user/LIFECLEF2015_CLASSIF_DYNI/CMT_V4/listetrain' num2str(train) '.txt']);
eval(['! wc /home/user/LIFECLEF2015_CLASSIF_DYNI/CMT_V4/listetrain' num2str(train) '.txt | cut -f 1 > N1.txt']);
! cut -f 1 -d '/' N1.txt > N.txt

% cube conv train intra espece
% a faire aussi en inter espece
% puis PCA dessus
% => multi modele multi classe

load N.txt
N=N(1)
for i=1:N
eval(['k = lire_ligne(''/home/user/LIFECLEF2015_CLASSIF_DYNI/CMT_V4/listetrain' num2str(train) '.txt'',i)']);
eval(['facette.s' num2str(i) ' = imread(k) ;'])

% SIM F : 
eval(['spectre(train,i,:) = sum(facette.s' num2str(i) '([1:70]),2);']) ; % coupure suffit 
% max pooling intra = modele intra %
% pour dkl ? cosine ? L2 ? L1 ?
end % i

% SIM TF : 
for i= 1:N
for j= 1:N
for c= [1:70] % cut 
% max pooling intra = modele intra %
eval(['maxcnn(train,i,j,c) = max(conv(facette.s' num2str(i) '(c,:), facette.s' num2str(j) '(c,:) ));']) ;
 
% max pooling intra = modele intra %
% pour sim directement ? mean min max = simi ? std ?
% ou simplement LS dkl cos entre maxcnn intra et maxcnn (train, test) ( 7K * 22K ) a lancer ce soir
% mean sur les sample de train, conorm entre espece i et j ~ i
end % canal
end % j
end % i 

end % train

% entropy n'apporte pas je pense
% possible en deux couche avec conv de conv ?

save trainstat1_300

% PCA sur cette base ?
% permet de noter quel canal à conserver

% relancer tout à 1024 ?
% co norm / tnorm ?
