AI在时尚设计中的应用

随着人工智能技术的飞速发展,其在各个领域的应用也日益广泛。在时尚设计行业中,AI技术的应用可以极大地提高设计效率,帮助设计师更好地理解消费者的需求。本文将介绍一个基于AI的深度学习系统,它能够通过分析大量的时尚设计数据,辅助设计师进行创新设计。

将展示一个使用Jupyter Notebook作为集成开发环境(IDE),并结合TensorFlow2.0、NumPy和Matplotlib等库的AI系统。将使用DeepFashion数据集的一个自定义子集,以减少计算和内存的开销。

在开始之前,假设读者已经熟悉深度学习的概念,以及Jupyter Notebooks和TensorFlow的使用。如果是Jupyter Notebooks的新手,可以从这个教程开始。欢迎下载项目代码。

加载数据集

在这个项目中,将使用TensorFlow和Keras来微调VGG16,因为Keras提供了易于使用的工具来加载数据、加载预训练模型和微调。ImageDataGenerator工具将帮助加载、标准化、调整大小和重新缩放数据。

首先,让导入将需要的库:

import os import matplotlib.pyplot as plt import matplotlib.image as img import tensorflow.keras as keras import numpy as np import tensorflow as tf config = tf.compat.v1.ConfigProto() config.gpu_options.allow_growth = True tf.compat.v1.keras.backend.set_session(tf.compat.v1.Session(config=config))

现在已经准备好了基础,让导入ImageDataGenerator,添加数据目录,并开始加载训练和验证数据。验证数据将只占训练数据的10%:只需要验证数据来在训练过程中微调VGG16的超参数。在这部分代码中,可以设置批量大小。可以将其值设置为适合机器能力和内存。

datasetdir = r'C:\Users\myuser\Desktop\DeepFashion\Train' os.chdir(datasetdir) from tensorflow.keras.preprocessing.image import ImageDataGenerator batch_size = 3 def DataLoad(shape, preprocessing): imgdatagen = ImageDataGenerator( preprocessing_function = preprocessing, horizontal_flip = True, validation_split = 0.1, ) height, width = shape train_dataset = imgdatagen.flow_from_directory( os.getcwd(), target_size = (height, width), classes = [ 'Blazer', 'Blouse', 'Cardigan', 'Dress', 'Jacket', 'Jeans', 'Jumpsuit', 'Romper', 'Shorts', 'Skirts', 'Sweater', 'Sweatpants', 'Tank', 'Tee', 'Top', ], batch_size = batch_size, subset = 'training', ) val_dataset = imgdatagen.flow_from_directory( os.getcwd(), target_size = (height, width), classes = [ 'Blazer', 'Blouse', 'Cardigan', 'Dress', 'Jacket', 'Jeans', 'Jumpsuit', 'Romper', 'Shorts', 'Skirts', 'Sweater', 'Sweatpants', 'Tank', 'Tee', 'Top', ], batch_size = batch_size, subset = 'validation' ) return train_dataset, val_dataset

现在DataLoad函数已经设置好,让使用它来提取训练和验证数据,并将图片调整到适合预训练模型的形状:224 x 224 x 3。

train_dataset, val_dataset = DataLoad((224, 224), preprocessing=vgg16.preprocess_input)

可以使用ImageDataGenerator的next函数作为迭代器,按顺序加载单个数据集中的图片。使用next,将有训练图片和标签分别保存在X_train和y_train参数中。可以将相同的函数应用于验证和测试数据。

X_train, y_train = next(train_dataset)

如所见,有7,656张图片作为训练数据,属于15个不同的类别,以及842张验证图片。

从Keras加载预训练模型(VGG16)

是时候从Keras加载VGG16网络并显示其基线了:

vgg16 = keras.applications.vgg16 conv_model = vgg16.VGG16(weights='imagenet', include_top=False) conv_model.summary()

接下来,加载这个网络的ImageNet权重,以便在迁移学习中使用它们。

conv_model = vgg16.VGG16(weights='imagenet', include_top=False, input_shape=(224, 224, 3)) x = keras.layers.Flatten()(conv_model.output) x = keras.layers.Dense(100, activation='relu')(x) x = keras.layers.Dense(100, activation='relu')(x) x = keras.layers.Dense(100, activation='relu')(x) predictions = keras.layers.Dense(15, activation='softmax')(x) full_model = keras.models.Model(inputs=conv_model.input, outputs=predictions) full_model.summary()
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485