自己的数据集Google Colab

时间:2019-03-20 14:21:11

标签: python tensorflow keras google-colaboratory

我准备了数据集。 我的数据集信息:

200x200 px RGB images
Jpg files
Class num 4

如何加载和训练我的数据集?我如何像cifar100数据那样增加,分离等?

2 个答案:

答案 0 :(得分:0)

您是否尝试将其加载到您的Google驱动器,然后在colab上安装Google驱动器?

将您的数据上传到您的Google驱动器。 要将驱动器安装在colab上,请在colab笔记本中运行以下命令:

from google.colab import drive
drive.mount("/content/gdrive", force_remount=True)

然后,您可以像在本地计算机上一样使用数据。数据路径如下:/content/gdrive/My\ Drive/...

答案 1 :(得分:0)

一个简单的方法是,首先,像这样组织你自己的数据集的文件夹结构:

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 以快速、负责任地访问文件:

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 控制在应用拆分之前应用于数据的混洗。

现在您拥有自己的数据集作为深度学习模型的输入。

关于数据增强,我推荐阅读本教程,您可以从中提取一些见解: