zoukankan      html  css  js  c++  java
  • 代码备份:处理 SUN397 的代码,将其分为 80% 训练数据 以及 20% 的测试数据

     
    
    处理SUN397 的代码,将其分为80% 训练数据以及20% 的测试数据
    
    2016-07-27
    
     1 %% Code for Process SUN397 Scene Classification 
     2 %     Just the a part : 24 kinds and 6169 images total 
     3 %     used for train a initial classifier and predict the additional dataset.
     4 clc; 
     5 impath = '/home/wangxiao/Downloads/SUN397/SUN397/a/';
     6 files = dir(impath); 
     7 label = -1 ; 
     8 
     9 train_fid = fopen('/home/wangxiao/Downloads/SUN397/selected_sun/train_list.txt', 'a');
    10 test_fid   = fopen('/home/wangxiao/Downloads/SUN397/selected_sun/test_list.txt', 'a');
    11 
    12 train_im_savePath = '/home/wangxiao/Downloads/SUN397/selected_sun/train_images/' ; 
    13 test_im_savePath = '/home/wangxiao/Downloads/SUN397/selected_sun/test_images/' ; 
    14 
    15 for i = 3:size(files, 1)
    16 %     disp( [' ==> disp current ', num2str(i-2), '/', num2str(size(files, 1) - 2) , ' waiting . . . ' ]) ; 
    17     label = label + 1; 
    18     category = files(i).name ; 
    19     newPath = [impath, category, '/'] ; 
    20     images = dir([newPath, '*.jpg']) ;
    21     
    22     for j = 1:size(images, 1)
    23         disp( [' ==> deal with Class: ', num2str(i-2), '        ==> disp image:  ', num2str(j), '/', num2str(size(images, 1) - 2) , ' waiting . . . ' ]) ; 
    24         num_per_kind = size(images, 1) - 2 ; 
    25         random_num = randperm(size(images, 1)) ;
    26         
    27         num_train = round( num_per_kind * 0.8 ) ;     %% number of train data 
    28         num_test   = round ( num_per_kind * 0.2 )  ;   %% number of test data 
    29          
    30         %% train data 
    31        
    32         if j <=  num_train
    33              
    34             idx = random_num(j) ; 
    35             trainImage_name =  images(idx).name ;  
    36             im = imread([newPath, trainImage_name]);
    37             im = imresize(im, [256, 256]) ; 
    38             imwrite( im, [train_im_savePath, trainImage_name]) ; 
    39             fprintf(train_fid, '%s ' ,  num2str(trainImage_name) ) ; 
    40             fprintf(train_fid, '%s ', ' ') ; 
    41             fprintf(train_fid, '%s 
    ', num2str(label)) ; 
    42         else
    43             if j <  num_per_kind
    44                 idx2 = random_num(j) ; 
    45                 testImage_name =  images(idx2).name ;  
    46                 im2 = imread([newPath, testImage_name]);
    47                 im2 = imresize(im2, [227, 227]) ; 
    48                 imwrite( im2, [test_im_savePath, testImage_name]) ; 
    49                 fprintf(test_fid, '%s ' ,  num2str(testImage_name) ) ; 
    50                 fprintf(test_fid, '%s ', ' ') ; 
    51                 fprintf(test_fid, '%s 
    ', num2str(label)) ; 
    52             else
    53                 break; 
    54             end
    55         end 
    56         
    57         
    58  
    59         
    60   
    61         
    62     end
    63     
    64 end
     
    

      

    path = '/home/wangxiao/Downloads/SUN397/Sun-100/';
    file1 = importdata([path, 'Sun_100_Labeled_Train_0.5_.txt' ]);
    file2 = importdata([path, 'Sun_100_UnLabel_Train_0.5_.txt' ]); 
    file3 = importdata([path, 'Sun_100_Test_0.5_.txt' ]);
    
    %% return the index of searched vector.  
    [C, ia, ic] = unique(file1.data) ; 
    labelMatrix = zeros(size(file1.data)) ;     
    for i = 1:size(ia, 1)
        count = i-1; 
        index_1 = ia(i, 1) ; % start index 
        index_2 = ia(i+1, 1) ; % end index
        labelMatrix(index_1:index_2, 1) = count ;
    end
    % select 80 classes.
        select_labelMatrix = labelMatrix(1:9060) ;
    
    
    
    %% return the index of searched vector.  
    [C, ia, ic] = unique(file2.data) ; 
    labelMatrix = zeros(size(file2.data)) ;     
    for i = 1:size(ia, 1)
        count = i-1; 
        index_1 = ia(i, 1) ; % start index 
        index_2 = ia(i+1, 1) ; % end index
        labelMatrix(index_1:index_2, 1) = count ;
    end
    % select 80 classes.
         select_labelMatrix_2 = labelMatrix(1:9180) ;
    
    
    
    %% return the index of searched vector.  
    [C, ia, ic] = unique(file3.data) ; 
    labelMatrix = zeros(size(file3.data)) ;     
    for i = 1:size(ia, 1)
        count = i-1; 
        index_1 = ia(i, 1) ; % start index 
        index_2 = ia(i+1, 1) ; % end index
        labelMatrix(index_1:index_2, 1) = count ;
    end
    % select 80 classes.
        select_labelMatrix_3 = labelMatrix(1:4560) ;
    
    %% save the selected 80 classes into txt files. 
    savePath = '/home/wangxiao/Downloads/SUN397/Sun-100/';
    fid1 = fopen([savePath, 'Sun_80_50%_Labeled_data.txt'], 'a');
    fid2 = fopen([savePath, 'Sun_80_50%_Unlabeled_data.txt'], 'a');
    fid3 = fopen([savePath, 'Sun_80_50%_test_data.txt'], 'a');
    
    for i = 1:size(select_labelMatrix, 1)
        imageName = file1.textdata{i, 1} ; 
        imageLabel = select_labelMatrix(i, 1) ; 
        fprintf(fid1, '%s ', num2str(imageName)) ; 
        fprintf(fid1, '%s
     ', num2str(imageLabel)) ; 
    end
    
    for i = 1:size(select_labelMatrix_2, 1)
        imageName = file2.textdata{i, 1} ; 
        imageLabel = select_labelMatrix_2(i, 1) ; 
        fprintf(fid2, '%s ', num2str(imageName)) ; 
        fprintf(fid2, '%s
     ', num2str(imageLabel)) ; 
    end
    
    for i = 1:size(select_labelMatrix_3, 1)
        imageName = file3.textdata{i, 1} ; 
        imageLabel = select_labelMatrix_3(i, 1) ; 
        fprintf(fid3, '%s ', num2str(imageName)) ; 
        fprintf(fid3, '%s
     ', num2str(imageLabel)) ; 
    end
    

      

  • 相关阅读:
    8.Http的状态码有哪些
    6、<!DOCTYPE>声明是什么意思
    6.px和em的区别
    5、什么叫优雅降级和渐进增强
    3、简述src和href的区别;@import和link的区别
    2、行内元素有哪些?块级元素有哪些? 空(void)元素有那些?行内元素和块级元素有什么区别?
    1、盒模型理解
    requests学习(一)——get请求
    【Flutter】功能型组件之跨组件状态共享
    【Flutter】功能型组件之数据共享
  • 原文地址:https://www.cnblogs.com/wangxiaocvpr/p/5709746.html
Copyright © 2011-2022 走看看