代码备份:处理 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 \n', 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 \n', 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\n ', 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\n ', 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\n ', num2str(imageLabel)) ;
end

  

时间: 2024-12-26 21:30:15

代码备份:处理 SUN397 的代码,将其分为 80% 训练数据 以及 20% 的测试数据的相关文章

sql生成(mssql对于表的delete和update做备份的触发器)代码的存储过程

GO /****** 对象: StoredProcedure [dbo].[pro_GenerateTrigger] 脚本日期: 08/13/2012 10:10:16 ******/ IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[pro_GenerateTrigger]') AND type in (N'P', N'PC')) DROP PROCEDURE [dbo].[pro_Generat

cvs提交代码会覆盖本地的代码这是为什么

问题描述 cvs提交代码会覆盖本地的代码这是为什么 我在用cvs(commit)提交代码的时候 出现了服务器会把我本地的代码给覆盖了, 这是什么情况...求高手解决啊... 解决方案 http://blog.chinaunix.net/uid-27471355-id-3701492.html 参考

CSS3网页布局实例代码:始终在网页底部代码2则

文章简介:CSS3网页布局实例代码:始终在网页底部代码2则 <!DOCTYPE HTML><html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title>始终在底部(1)</title><style>body{margin:0} html, body{height:100%}

在NetBeans IDE中从现有代码创建项目并设置代码帮助

要获取更多有关在 NetBeans IDE 中使用 C/C++ 应用程序的信息,请参见 NetBeans 网站上的 C/C++ 应用程序学习课程页. 教程需求 在继续前,请确保您重新检查了本节中的需求. 先决条件 本教程假设您已经有一些 C 和 C++ 的编程经验. 本教程所需的软件 在开始前,您需要安装 NetBeans 6.0.C/C++ 下载选项包括 NetBeans IDE 6.0 和 C/C++ 支持. 问题是什么? IDE 的一项职责就是代码模型的构建.代码模性对 IDE 功能很重要

java源码-求这段c语言的代码换成java的代码

问题描述 求这段c语言的代码换成java的代码 #include #define P 3.1415927#define toFeet(x) x/12.0#define toMiles(x) x/5280.0int main(){ double diameter;//直径 int revolutions;//转数 double time;//香蕉 double s; int count=1; while(scanf("%lf%d%lf",&diameter,&revolu

vs2010+svn1.9 提交新建代码失败,提交原有代码更新可以成功

问题描述 vs2010+svn1.9 提交新建代码失败,提交原有代码更新可以成功 问题:由于怕影响其他项目组上线,写的代码一直没有提交过,今天项目打好分支想提交一下,发现新建的文件都无法提交,但是可以正常获取,而且原有代码更新可以正常提交,很是不解.如果用vs2010提交则有乱码错误,如下图所示 于是乎便尝试直接在文件夹中提交文件,发现还是报错,提示"主机中的软件终止了一个现有连接" 而且showlog后信息如下: 一开始以为是自己建立的分支有问题,但是后来发现即使是原来的主干也有同样

c语言-C++代码改成C语言代码,没学过C++好多看不懂啊(泪奔······)求大神指点,我用的VC6.0

问题描述 C++代码改成C语言代码,没学过C++好多看不懂啊(泪奔······)求大神指点,我用的VC6.0 代码如下, #include "winsock2.h" #include "Winsnmp.h" #include 这里是string以下都要用 < 和 > 括起来(不知为何不显示=,=) #include vector #include algorithm #include iostream #pragma comment(lib,"

java 某个类的几个对象,这些对象调用类中一个函数,是各自拥有自己的函数代码还是使用同一段代码?

问题描述 1.java 某个类的几个对象,这些对象调用类中一个函数(普通的函数),是各自拥有自己的函数代码还是使用同一段代码?2.java 继承中,子类从父类得到一些普通函数,这些函数的代码,是子类自己独自拥有一份还是和父类使用同一段函数代码.3.第一次发帖,积分什么的不会搞,貌似自己也没有积分,呵呵,大家包涵! 解决方案 引用1.java 某个类的几个对象,这些对象调用类中一个函数(普通的函数),是各自拥有自己的函数代码还是使用同一段代码?这几个对象调用的当然是同一段代码了.jvm中有一个ja

c-萌妹子 求修改代码?(谢绝新代码)

问题描述 萌妹子 求修改代码?(谢绝新代码) //求修改,不要新代码 # include<stdio.h> # include<math.h> #include <string.h> int main() { char name[10]; (char*)name[10]; int i; void sort(char *name[]); for(i=0;i<10;i++) gets(name);//输入字符串 sort(name); for(i=0;i<10;