处理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. python文件打包格式,pip包管理

    1..whl是python文件的一种打包格式, 在有些情况下,可以将文件的后缀名改为.zip并解压 2.cmd中,提示pip版本太低,先升级pip   pip install --upgrade pi ...

  2. UIButton 点击后变灰

    +(UIButton *)getBlueButtonWithTitle:(NSString *)aTitle{ UIButton *button = [UIButton buttonWithType: ...

  3. C#基础之程序集(一)

    一.什么是程序集? 程序集 其实就是bin目录的.exe 文件或者.dll文件. 二.原理 三.程序集分类 1.系统程序集 路径:C:\Windows\assembly 2.源代码生成的程序集 使用V ...

  4. JAVA调用系统命令或可执行程序--返回一个Runtime运行时对象,然后启动另外一个进程来执行命令

    通过 java.lang.Runtime 类可以方便的调用操作系统命令,或者一个可执行程序,下面的小例子我在windows和linux分别测试过,都通过.基本原理是,首先通过 Runtime.getR ...

  5. jQuery之load、unload、onunload和onbeforeunload

    1.load:jQuery load() 方法是简单但强大的 AJAX 方法.load() 方法从服务器加载数据,并把返回的数据放入被选元素中. 语法:$(selector).load(URL,dat ...

  6. 12-27cell常用的属性

    1.创建cell //    创建一个cell并且设置cell的风格 UITableViewCell *cell  = [[UITableViewCell alloc]initWithStyle:UI ...

  7. php大力力 [001节]2015-08-21.php在百度文库的几个基础教程新手上路日记 大力力php 大力同学 2015-08-21 15:28

    php大力力 [001节]2015-08-21.php在百度文库的几个基础教程新手上路日记 大力力php 大力同学 2015-08-21 15:28 话说,嗯嗯,就是我自己说,做事认真要用表格,学习技 ...

  8. 20145210 《Java程序设计》第08周学习总结

    第十四章 NIO与NIO2 14.1 认识NIO •NIO概述 •NIO使用频道来衔接数据结点 •在处理数据时,NIO可以让你设定缓冲区容量 •Channel架构与操作 •isOpen():确认Cha ...

  9. PAT (Basic Level) Practise:1008. 数组元素循环右移问题

    [题目连接] 一个数组A中存有N(N>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(M>=0)个位置,即将A中的数据由(A0A1……AN-1)变换为(AN-M …… A ...

  10. Core Java Volume I — 3.1. A Simple Java Program

    Let’s look more closely at one of the simplest Java programs you can have—one that simply prints a m ...