28.04.2020 Views

Sách Deep Learning cơ bản

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

156 Chương 11. Transfer learning và data augmentation

from keras.applications import imagenet_utils

from keras.preprocessing.image import img_to_array

from keras.preprocessing.image import load_img

from sklearn.preprocessing import LabelEncoder

from sklearn.preprocessing import LabelBinarizer

from sklearn.model_selection import train_test_split

from keras.preprocessing.image import ImageDataGenerator

from keras.optimizers import SGD

from keras.optimizers import RMSprop

from keras.applications import VGG16

from keras.layers import Input

from keras.models import Model

from keras.layers.core import Dense

from keras.layers.core import Dropout

from keras.layers.core import Flatten

import numpy as np

import random

import os

# Lấy các đường dẫn đến ảnh.

image_path = list(paths.list_images('dataset/'))

# Đổi vị trí ngẫu nhiên các đường dẫn ảnh

random.shuffle(image_path)

# Đường dẫn ảnh sẽ là dataset/tên_loài_hoa/tên_ảnh ví dụ dataset/Bluebell/image_0241.jpg n

labels = [p.split(os.path.sep)[-2] for p in image_path]

# Chuyển tên các loài hoa thành số

le = LabelEncoder()

labels = le.fit_transform(labels)

# One-hot encoding

lb = LabelBinarizer()

labels = lb.fit_transform(labels)

# Load ảnh và resize về đúng kích thước mà VGG 16 cần là (224,224)

list_image = []

for (j, imagePath) in enumerate(image_path):

image = load_img(imagePath, target_size=(224, 224))

image = img_to_array(image)

image = np.expand_dims(image, 0)

image = imagenet_utils.preprocess_input(image)

list_image.append(image)

list_image = np.vstack(list_image)

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!