Matlab 导入深度学习所需图片集文件夹并按1:9比例划分测试集和训练集
时间: 2024-02-03 11:03:31 浏览: 25
你可以使用Matlab中的ImageDatastore函数来导入图片集,并使用splitEachLabel函数来按比例划分测试集和训练集。
以下是示例代码:
```matlab
% 设置图片集文件夹路径
dataFolder = 'C:\myDataFolder';
% 创建ImageDatastore对象
imds = imageDatastore(dataFolder, 'IncludeSubfolders', true, 'LabelSource', 'foldernames');
% 划分测试集和训练集比例
splitRatio = 0.1; % 测试集占比
[trainImds, testImds] = splitEachLabel(imds, splitRatio);
% 显示训练集和测试集中的图像数量
disp(['训练集中的图像数量:',num2str(numel(trainImds.Files))]);
disp(['测试集中的图像数量:',num2str(numel(testImds.Files))]);
```
这段代码将会把 `C:\myDataFolder` 中的所有子文件夹中的图片读入,将其按照子文件夹名字作为标签,然后按照指定比例划分测试集和训练集。最后,代码会输出训练集和测试集中的图像数量。
相关问题
Matlab 导入深度学习所需图片集文件夹并按1:9比例划分测试集和训练集,并修改图片尺寸为[224,224,3]
首先,我们需要将图片集文件夹中的图片读取进来,可以使用`imread`函数来实现,代码如下:
```matlab
img_folder = 'path/to/folder'; % 图片集文件夹路径
img_files = dir(fullfile(img_folder,'*.jpg')); % 获取文件夹中所有jpg格式的图片文件
num_imgs = length(img_files); % 获取图片文件数量
```
接下来,我们需要按照1:9的比例将图片划分为测试集和训练集,可以使用`randperm`函数随机打乱图片的顺序,并根据比例将图片分配到不同的集合中,代码如下:
```matlab
idx = randperm(num_imgs); % 随机打乱图片顺序
train_idx = idx(1:floor(num_imgs*0.9)); % 前90%的图片分配到训练集
test_idx = idx(floor(num_imgs*0.9)+1:end); % 后10%的图片分配到测试集
```
然后,我们需要将图片的尺寸修改为[224,224,3],可以使用`imresize`函数来实现,代码如下:
```matlab
img_size = [224,224,3]; % 修改后的图片尺寸
for i = 1:num_imgs
img = imread(fullfile(img_folder,img_files(i).name)); % 读取图片
img = imresize(img,img_size(1:2)); % 修改图片尺寸
img = repmat(img_size(3),[img_size(1:2),1]).*img; % 扩展图片通道数
if ismember(i,train_idx) % 根据索引判断图片属于训练集还是测试集
train_data(:,:,:,end+1) = img; % 添加到训练集中
else
test_data(:,:,:,end+1) = img; % 添加到测试集中
end
end
```
最终,我们可以得到修改尺寸后的训练集`train_data`和测试集`test_data`。注意,我们需要在添加图片时将图片通道数扩展为3,以便与深度学习模型的输入要求相匹配。完整代码如下:
```matlab
img_folder = 'path/to/folder'; % 图片集文件夹路径
img_files = dir(fullfile(img_folder,'*.jpg')); % 获取文件夹中所有jpg格式的图片文件
num_imgs = length(img_files); % 获取图片文件数量
idx = randperm(num_imgs); % 随机打乱图片顺序
train_idx = idx(1:floor(num_imgs*0.9)); % 前90%的图片分配到训练集
test_idx = idx(floor(num_imgs*0.9)+1:end); % 后10%的图片分配到测试集
img_size = [224,224,3]; % 修改后的图片尺寸
train_data = [];
test_data = [];
for i = 1:num_imgs
img = imread(fullfile(img_folder,img_files(i).name)); % 读取图片
img = imresize(img,img_size(1:2)); % 修改图片尺寸
img = repmat(img_size(3),[img_size(1:2),1]).*img; % 扩展图片通道数
if ismember(i,train_idx) % 根据索引判断图片属于训练集还是测试集
train_data(:,:,:,end+1) = img; % 添加到训练集中
else
test_data(:,:,:,end+1) = img; % 添加到测试集中
end
end
```
Matlab 导入数据集文件夹并按1:9比例划分测试集和训练集
假设你的数据集文件夹中包含多个数据文件,可以按照以下步骤导入数据集并按照1:9的比例划分测试集和训练集:
1. 使用 `dir` 函数获取数据集文件夹中的所有数据文件名:
```matlab
data_folder = 'your_data_folder_path';
data_files = dir(fullfile(data_folder, '*.mat'));
```
2. 随机打乱数据文件顺序:
```matlab
data_files = data_files(randperm(length(data_files)));
```
3. 计算测试集和训练集的大小:
```matlab
test_ratio = 0.1; % 测试集比例
num_data_files = length(data_files);
num_test_files = floor(num_data_files * test_ratio);
num_train_files = num_data_files - num_test_files;
```
4. 分别将测试集和训练集的数据文件名存储到两个 cell 数组中:
```matlab
test_files = {data_files(1:num_test_files).name};
train_files = {data_files(num_test_files+1:end).name};
```
5. 使用 `load` 函数读取数据文件中的数据:
```matlab
test_data = cell(1, num_test_files);
for i = 1:num_test_files
test_data{i} = load(fullfile(data_folder, test_files{i}));
end
train_data = cell(1, num_train_files);
for i = 1:num_train_files
train_data{i} = load(fullfile(data_folder, train_files{i}));
end
```
最终,`test_data` 和 `train_data` 分别是测试集和训练集的数据,其中每个元素都是一个包含数据的结构体。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)