怎么在colab上- 从官方来源或任何有信誉的资源库下载UCM数据集。 - 对数据集进行预处理,将其分成训练集、验证集和测试集。请分别使用80-10-10的分割方式
时间: 2024-03-19 08:42:22 浏览: 83
利用colab获取主流遥感云平台数据列表可下载
以下是在 Google Colab 上下载和预处理 UCM 数据集的步骤:
1. 下载数据集并解压缩
首先,需要从官方网站下载 UCM 数据集并解压缩。可以使用以下代码将数据集下载到 Colab 中:
```
!wget http://weegee.vision.ucmerced.edu/datasets/UCMerced_LandUse.zip
!unzip UCMerced_LandUse.zip
```
2. 分割数据集
接下来,可以使用以下代码将数据集分割成训练集、验证集和测试集:
```python
import os
import shutil
import random
# 定义分割比例
train_ratio = 0.8
val_ratio = 0.1
test_ratio = 0.1
# 定义数据集路径和类别名称
data_dir = 'UCMerced_LandUse/Images'
class_names = os.listdir(data_dir)
# 创建保存数据集的目录
os.makedirs('dataset/train')
os.makedirs('dataset/val')
os.makedirs('dataset/test')
# 遍历每个类别的图像
for class_name in class_names:
class_dir = os.path.join(data_dir, class_name)
file_names = os.listdir(class_dir)
random.shuffle(file_names) # 随机打乱顺序
num_files = len(file_names)
# 计算分割后每个子集的数量
num_train = int(num_files * train_ratio)
num_val = int(num_files * val_ratio)
num_test = num_files - num_train - num_val
# 将图像复制到对应的子集目录中
for i, file_name in enumerate(file_names):
src_path = os.path.join(class_dir, file_name)
if i < num_train:
dst_dir = 'dataset/train'
elif i < num_train + num_val:
dst_dir = 'dataset/val'
else:
dst_dir = 'dataset/test'
dst_path = os.path.join(dst_dir, class_name, file_name)
os.makedirs(os.path.dirname(dst_path), exist_ok=True)
shutil.copy(src_path, dst_path)
```
这段代码将数据集分割成了 80% 的训练集、10% 的验证集和 10% 的测试集,并将其保存在 "dataset/train"、"dataset/val" 和 "dataset/test" 目录中。
3. 对数据集进行预处理
最后,需要对数据集进行预处理,例如缩放、裁剪和标准化。可以使用 PyTorch 内置的 transforms 模块来实现预处理。以下是一个示例代码:
```python
import torch
from torchvision import transforms, datasets
# 定义数据预处理
data_transform = transforms.Compose([
transforms.RandomResizedCrop(224),
transforms.RandomHorizontalFlip(),
transforms.ToTensor(),
transforms.Normalize(mean=[0.485, 0.456, 0.406],
std=[0.229, 0.224, 0.225])
])
# 加载数据集
train_dataset = datasets.ImageFolder('dataset/train', transform=data_transform)
val_dataset = datasets.ImageFolder('dataset/val', transform=data_transform)
test_dataset = datasets.ImageFolder('dataset/test', transform=data_transform)
# 创建 DataLoader
train_loader = torch.utils.data.DataLoader(train_dataset, batch_size=32, shuffle=True)
val_loader = torch.utils.data.DataLoader(val_dataset, batch_size=32, shuffle=False)
test_loader = torch.utils.data.DataLoader(test_dataset, batch_size=32, shuffle=False)
```
这段代码将数据集进行了随机裁剪、随机水平翻转、缩放和标准化等预处理。可以根据自己的需求进行修改。
阅读全文