코딩

Colab에서 oxflower17 데이터셋 불러오기(구글 드라이브 이용)

eunslog 2023. 10. 6. 17:46
import tflearn.datasets.oxflower17 as oxflower17
x, y = oxflower17.load_data(one_hot=True)

원래는 이렇게 import해서 진행하려고 했는데, 보안 정책 때문인건지 Colab에서는 oxflower17 데이터셋이 안불러와져서 google drvie에 넣은 다음 진행했습니다.

 

다음은 제 코드입니다.

import keras,os
from keras.models import Sequential
from keras.layers import Dense, Conv2D, MaxPool2D , Flatten, BatchNormalization, Dropout
from keras.preprocessing.image import ImageDataGenerator
import numpy as np
np.random.seed(1000)

data = np.load('/content/drive/MyDrive/oxflower17.npz')
x = data['X']
y = data['Y']

model = Sequential()
model.add(Conv2D(input_shape=(224,224,3),filters=64,kernel_size=(3,3),padding="same",
activation="relu"))
model.add(Conv2D(filters=64,kernel_size=(3,3),padding="same", activation="relu"))
model.add(MaxPool2D(pool_size=(2,2),strides=(2,2)))
model.add(Conv2D(filters=128, kernel_size=(3,3), padding="same", activation="relu"))
model.add(Conv2D(filters=128, kernel_size=(3,3), padding="same", activation="relu"))
model.add(MaxPool2D(pool_size=(2,2),strides=(2,2)))
model.add(Conv2D(filters=256, kernel_size=(3,3), padding="same", activation="relu"))
model.add(Conv2D(filters=256, kernel_size=(3,3), padding="same", activation="relu"))
model.add(Conv2D(filters=256, kernel_size=(3,3), padding="same", activation="relu"))
model.add(MaxPool2D(pool_size=(2,2),strides=(2,2)))
model.add(Conv2D(filters=512, kernel_size=(3,3), padding="same", activation="relu"))
model.add(Conv2D(filters=512, kernel_size=(3,3), padding="same", activation="relu"))
model.add(Conv2D(filters=512, kernel_size=(3,3), padding="same", activation="relu"))
model.add(MaxPool2D(pool_size=(2,2),strides=(2,2)))
model.add(Conv2D(filters=512, kernel_size=(3,3), padding="same", activation="relu"))
model.add(Conv2D(filters=512, kernel_size=(3,3), padding="same", activation="relu"))
model.add(Conv2D(filters=512, kernel_size=(3,3), padding="same", activation="relu"))
model.add(MaxPool2D(pool_size=(2,2),strides=(2,2)))
model.add(Flatten())
model.add(BatchNormalization())
model.add(Dense(units=4096,activation="relu"))
model.add(Dropout(0.5))
model.add(BatchNormalization())
model.add(Dense(units=4096,activation="relu"))
model.add(Dropout(0.5))
model.add(BatchNormalization())
model.add(Dense(units=1000,activation="relu"))
model.add(Dropout(0.5))
model.add(BatchNormalization())
model.add(Dense(units=17, activation="softmax"))
model.summary()
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
model.fit(x, y, batch_size=64, epochs=100, verbose=1, validation_split=0.2, shuffle=True)

 

1. oxflower dataset 다운로드

https://bit.ly/36QytdH 

이 사이트에 들어가서 oxflower17.npz를 다운받습니다.

 

2. google drive 연결

먼저, 왼쪽 사이드바에서 파일을 클릭하고 드라이브 마운트를 클릭합니다.

저는 이미 연결해서 안 뜨는 걸 수도 있는데 먼저 구글 계정을 연결하라고 뜬 다음, 액세스 허용 메시지가 뜨는데 원하는 계정에 로그인한 후 연결을 눌러줍니다.

그러면 content 밑에 이런식으로 drive가 뜹니다. 그럼 정상적으로 google drive와 연결된 것입니다.

 

3. 구글드라이브에 데이터셋 넣기

구글드라이브 안의 원하는 폴더에 데이터셋을 넣고, 경로 복사를 누릅니다.

코드에서 data = np.load('/content/drive/MyDrive/oxflower17.npz') 여기 괄호 안에 복사한 경로를 넣어줍니다.

 

이렇게 한 후, 실행시키면 잘 동작합니다!

 

 

혹시 BadZipFile error가 발생한다면, oxflower를 다시 다운받으시거나, 경로를 다시 확인해보시기 바랍니다.

MyDrive 폴더에 바로 파일을 넣으니 잘 실행되었습니다!