处理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

  

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

  1. python numpy 三行代码打乱训练数据

    今天发现一个用 numpy 随机化数组的技巧. 需求 我有两个数组( ndarray ):train_datasets 和 train_labels.其中,train_datasets 的每一行和 t ...

  2. 博客使用的CSS代码备份

    CSS代码备份 /*simplememory*/ #google_ad_c1, #google_ad_c2 { display: none; } .syntaxhighlighter a, .synt ...

  3. 1.svn 彻底clear时,注意代码备份 2.借助vc助手加头文件

    1.svn 彻底clear时,注意代码备份 2.不小心彻底clear可以在回收站找到 3.借助vc助手加头文件

  4. 同时将代码备份到Gitee和GitHub

    同时将代码备份到Gitee和GitHub 如何将GitHub项目一步导入Gitee 如何保持Gitee和GitHub同步更新 如何将GitHub项目一步导入Gitee 方法一: 登陆 Gitee 账号 ...

  5. 代码备份 | 博客侧边栏公告(支持HTML代码)(支持JS代码)

    博客侧边栏公告(支持HTML代码)(支持JS代码) <div id='btnList'> <a class="ivu-btn ivu-btn-primary" h ...

  6. 每周一书-编写高质量代码:改善C程序代码的125个建议

    首先说明,本周活动有效时间为2016年8月28日到2016年9月4日.本周为大家送出的书是由机械工业出版社出版,马伟编著的<编写高质量代码:改善C程序代码的125个建议>. 编辑推荐 10 ...

  7. python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例

    python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例 新浪爱彩双色球开奖数据URL:http://zst.aicai.com/ssq/openInfo/ 最终输出结果格 ...

  8. C++统计代码注释行数 & 有效代码行数 & 代码注释公共行 & 函数个数

    问题来源,在14年的暑假的一次小项目当中遇到了一个这样的问题,要求统计C++代码的注释行数,有效代码行数,代码注释公共行数,以及函数个数. 下面稍微解释一下问题, 1)注释行数:指有注释的行,包括有代 ...

  9. c代码中调用c++,c++代码中调用c代码

    注意这里的c调用c++或者c++调用c的意思是.c文件中调用.cpp文件中的代码,或者相反 集成开发环境如vc++6.0或者vs都是通过文件后缀来区别当前要编译的是C代码还是C++代码,然后采用相应的 ...

随机推荐

  1. CentOS SSH配置

    默认CentOS已经安装了OpenSSH,即使你是最小化安装也是如此.所以这里就不介绍OpenSSH的安装了. SSH配置: 1.修改vi /etc/ssh/sshd_config,根据模板将要修改的 ...

  2. WEB-INF& 绝对路径vs相对路径

    在struts2里面用XXXInput方法和springmvc里面用GET模式进入添加或者登陆输入页面,有时候会在方法里面做一下准备,比如动态读入部门信息放在select中,或者在model中加入一个 ...

  3. Jquery Table 操作

    获取行号 var rowIndex = $("#TableId").find("tr").index($("#RowId")[0]); va ...

  4. allegro si(三)

    前言:si的教程市面上是很少的,layout是台湾工程师的强项,还有就是日本人,国人爱用AD. si的教程中靠谱的还是张飞的收费课程,还有华为的资料. Cadence SI 仿真实验步骤如下: 1.熟 ...

  5. 使用sslsplit嗅探tls/ssl连接

    首先发一个从youtube弄到的sslsplit的使用教程 http://v.qq.com/page/x/k/s/x019634j4ks.html 我最近演示了如何使用mitmproxty执行中间人攻 ...

  6. python随笔

    1. 使用iter实现接收用户多行输入 stopword = '' str = '' print('请将要添加的内容输入下方,输入空白行按回车退出程序:') for line in iter(inpu ...

  7. css中的列表属性

    list-style-type设定引导列表的符号类型,可以设置多种符号类型,值为disc.circle.square等 list-style-image使用图像作为定制列表的符号 list-style ...

  8. HDOJ-三部曲-1002-Radar Installation

    Radar Installation Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 20000/10000K (Java/Other) ...

  9. Linux iptables重启后失效

    解决办法如下: 输入完iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080 后 执行iptables-s ...

  10. 动画(Animation) 、 高级动画(Core Animation)

    1 演示UIImage制作的动画 1.1 问题 UIImage动画是IOS提供的最基本的动画,通常用于制作一些小型的动画,本案例使用UIImage制作一个小狗跑动的动画,如图-1所示: 图-1 1.2 ...