一个简单的方法是,首先,像这样组织你自己的数据集的文件夹结构:
Dataset/
---- 0/
-------- img1.jpg
-------- img2.jpg
-------- ...
---- 1/
-------- img3.jpg
-------- img4.jpg
-------- ...
---- 2/
-------- img5.jpg
-------- img6.jpg
-------- ...
---- 3/
-------- img7.jpg
-------- img8.jpg
-------- ...
其中'0 /'、'1 /'、'2 /' 和'3 /' 是您的 4 个类的名称。
将 Dataset 文件夹压缩为 .zip 格式,然后将 Dataset.zip 文件上传到您的 Google Drive。
现在,在 Google Colab 中的 .ipynb 文件中:
导入一些库:
import zipfile
from google.colab import output
from google.colab import drive
import os
import cv2 as cv
import numpy as np
from sklearn.model_selection import train_test_split
安装 Google 云端硬盘以快速、负责任地访问文件:
drive.mount('/content/gdrive')
解压缩 Dataset.zip:
DATASET_PATH = '/content/gdrive/My Drive/Dataset.zip'
zip_object = zipfile.ZipFile(file = DATASET_PATH,mode = 'r')
zip_object.extractall('./')
zip_object.close
选择您的源文件夹以加载数据集并设置维度:
DATASET = 'Dataset/'
IMAGE_HEIGHT = 200
IMAGE_WIDTH = 200
实现帮助功能以从文件夹创建数据集:
def create_dataset(DATASET_PATH):
img_data_array = []
class_name = []
for directory in os.listdir(DATASET_PATH):
for file in os.listdir(os.path.join(DATASET_PATH, directory)):
image_path = os.path.join(DATASET_PATH, directory, file)
image = cv.imread(image_path, cv.COLOR_BGR2RGB)
image = cv.resize(image, (IMAGE_HEIGHT, IMAGE_WIDTH), interpolation = cv.INTER_AREA)
image = np.array(image)
image = image.astype('float32')
image /= 255
img_data_array.append(image)
class_name.append(directory)
return img_data_array, class_name
调用帮助函数:
DATA_IMAGES, DATA_LABELS = create_dataset(DATASET)
为类的所有唯一值创建字典:
target_dict = {k: v for v, k in enumerate(np.unique(DATA_LABELS))}
根据字典转换为各自的数值:
DATA_LABELS = [target_dict_train[DATA_LABELS[i]] for i in range(len(DATA_LABELS))]
PS:从本教程中提取的帮助功能:
使用train_test_split 将数据集拆分为随机训练集和测试集:
X_train, X_test, y_train, y_test = train_test_split(DATA_IMAGES,
DATA_LABELS,
test_size = 0.15,
random_state = 41)
其中test_size 表示要包含在测试拆分中的数据集的比例,random_state 控制在应用拆分之前应用于数据的混洗。
现在您拥有自己的数据集作为深度学习模型的输入。
关于数据增强我推荐阅读本教程,在这里您可以提取一些见解: