Fashion-MNIST — это набор данных изображений статей Zalando, состоящий из обучающего набора из 60,000 10,000 примеров и тестового набора из 28 28 примеров. Каждый пример — это изображение в оттенках серого размером 10×XNUMX, связанное с меткой из XNUMX классов. Набор данных служит прямой заменой исходного набора данных MNIST для сравнительного анализа алгоритмов машинного обучения, предоставляя более сложную альтернативу из-за его сложности и изменчивости в изображениях, связанных с модой.
Для практического использования набора данных Fashion-MNIST в AI Platform от Google Cloud необходимо выполнить несколько структурированных шагов, которые охватывают подготовку данных, обучение модели, развертывание и оценку. Каждый из этих этапов требует всестороннего понимания как набора данных, так и среды Google Cloud.
Шаг 1: Настройка облачной среды Google
Перед использованием набора данных убедитесь, что у вас есть учетная запись Google Cloud. Настройте новый проект в Google Cloud Console. Включите выставление счетов для вашего проекта и активируйте API Cloud AI Platform. Эта настройка важна, поскольку она позволяет использовать надежную инфраструктуру Google для задач машинного обучения.
1. Создайте проект Google Cloud: Перейдите в Google Cloud Console и создайте новый проект. Назначьте уникальное имя вашему проекту для легкой идентификации.
2. Включить API: Перейдите на панель управления API и службами и включите API Cloud AI Platform. Этот API необходим для развертывания моделей машинного обучения в Google Cloud.
3. Установить Cloud SDK: Загрузите и установите Google Cloud SDK на локальном компьютере. Этот SDK предоставляет инструмент командной строки `gcloud`, необходимый для взаимодействия с вашими ресурсами Google Cloud.
Шаг 2: Подготовка набора данных Fashion-MNIST
Набор данных Fashion-MNIST можно получить из различных источников, включая официальный репозиторий GitHub. Важно предварительно обработать набор данных, чтобы убедиться, что он находится в правильном формате для обучения моделей в Google Cloud.
1. Скачать набор данных: Набор данных доступен в нескольких форматах, включая массивы CSV и NumPy. Для пользователей TensorFlow он может быть напрямую загружен с помощью модуля `tensorflow.keras.datasets`.
python from tensorflow.keras.datasets import fashion_mnist (train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data()
2. Предварительная обработка данных: Нормализуйте значения пикселей изображений до диапазона [0, 1] путем деления на 255. Этот шаг важен для обеспечения эффективной сходимости модели во время обучения.
python train_images = train_images/255.0 test_images = test_images/255.0
3. Изменение формы и дополнение данных: В зависимости от архитектуры модели вам может потребоваться изменить форму данных. Кроме того, рассмотрите методы дополнения данных, такие как вращение, масштабирование и горизонтальное отражение, чтобы повысить надежность модели.
Шаг 3: Разработка модели
Разработать модель машинного обучения, подходящую для набора данных Fashion-MNIST. Сверточные нейронные сети (CNN) являются популярным выбором из-за их эффективности в задачах классификации изображений.
1. Определите архитектуру модели: Используйте TensorFlow или PyTorch для определения модели CNN. Типичная архитектура может включать несколько сверточных слоев, за которыми следуют слои максимального пула и полностью связанный плотный слой.
python model = tf.keras.Sequential([ tf.keras.layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)), tf.keras.layers.MaxPooling2D((2, 2)), tf.keras.layers.Conv2D(64, (3, 3), activation='relu'), tf.keras.layers.MaxPooling2D((2, 2)), tf.keras.layers.Flatten(), tf.keras.layers.Dense(64, activation='relu'), tf.keras.layers.Dense(10, activation='softmax') ])
2. Скомпилируйте модель: Выберите подходящий оптимизатор, функцию потерь и метрики. Для многоклассовой классификации обычно используется `sparse_categorical_crossentropy`.
python model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
3. Тренировать модель: Подгонка модели к обучающим данным. Используйте данные проверки для мониторинга производительности модели и избегания переобучения.
python model.fit(train_images, train_labels, epochs=10, validation_data=(test_images, test_labels))
Шаг 4: Развертывание модели на платформе Google Cloud AI
После обучения модели следующим шагом станет ее развертывание на платформе Google Cloud AI для масштабируемых прогнозов.
1. Сохранить модель: Экспортируйте обученную модель в формат, совместимый с Google Cloud, например TensorFlow SavedModel.
python model.save('fashion_mnist_model')
2. Загрузите модель в облачное хранилище Google: Используйте инструмент командной строки `gsutil` для загрузки модели в хранилище Google Cloud Storage.
bash gsutil cp -r fashion_mnist_model gs://your-bucket-name/
3. Создать модель на платформе ИИ: В Google Cloud Console перейдите в AI Platform > Models и создайте новую модель. Укажите имя модели и регион.
4. Развернуть версию модели: Создайте новую версию модели, указав путь к облачному хранилищу SavedModel. Настройте тип машины и параметры масштабирования в зависимости от ваших потребностей в прогнозировании.
5. Тестирование развертывания: Используйте службу прогнозирования AI Platform для тестирования развернутой модели. Вы можете отправлять HTTP-запросы с данными изображений в конечную точку модели и получать прогнозы.
python from google.cloud import aiplatform project = 'your-project-id' endpoint_id = 'your-endpoint-id' location = 'us-central1' aiplatform.init(project=project, location=location) endpoint = aiplatform.Endpoint(endpoint_id=endpoint_id) # Example prediction response = endpoint.predict(instances=[test_images[0].tolist()]) print(response)
Шаг 5: Оценка модели и итерация
После развертывания важно оценить эффективность модели и усовершенствовать ее конструкцию для повышения точности и эффективности.
1. Мониторинг производительности модели: Используйте инструменты мониторинга Google Cloud для отслеживания показателей производительности модели, таких как задержка, пропускная способность и точность прогнозирования. Эти данные бесценны для выявления узких мест и областей для улучшения.
2. А/Б Тестирование: Проведите A/B-тестирование для сравнения различных версий модели. Этот подход помогает понять влияние изменений и выбрать наиболее эффективную модель.
3. Непрерывная интеграция и развертывание (CI/CD): Внедрение практик CI/CD для автоматизации развертывания новых версий модели. Такая настройка гарантирует быструю доставку улучшений в производство.
4. Обратная связь: Установите обратную связь с конечными пользователями для сбора информации о прогнозах модели. Используйте эту обратную связь для точной настройки модели и повышения ее релевантности для реальных приложений.
5. Переобучение с использованием новых данных: Регулярно обновляйте модель новыми данными, чтобы поддерживать ее точность с течением времени. Эта практика особенно важна в индустрии моды, где тенденции и стили быстро меняются.
Набор данных Fashion-MNIST представляет собой практический пример использования для развертывания моделей классификации изображений на платформе AI от Google Cloud. Следуя изложенным шагам, можно эффективно использовать инфраструктуру Google для создания, развертывания и поддержки масштабируемых моделей машинного обучения. Этот процесс не только повышает точность и производительность модели, но и обеспечивает ее применимость к реальным сценариям в индустрии моды.
Google часто обновляет свою платформу AI (с 2024 года она превратилась в платформу Vertex AI). Если у вас возникли проблемы с этими обновлениями, вы также можете попробовать следующий код:
python import google.auth import google.auth.transport.requests import requests import json from tensorflow.keras.datasets import fashion_mnist import numpy as np # Load and preprocess Fashion MNIST data (train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data() test_images = test_images/255.0 # Add channel dimension to all test images test_images = test_images.reshape(-1, 28, 28, 1) # Prepare your model and project details project_id = 'project_id' model_name = 'modelname' model_version = 'V1' region = 'europe-west3' # AI Platform prediction endpoint URL url = f'https://{region}-ml.googleapis.com/v1/projects/{project_id}/models/{model_name}/versions/{model_version}:predict' # Authenticate and get the auth token credentials, _ = google.auth.default() auth_req = google.auth.transport.requests.Request() credentials.refresh(auth_req) auth_token = credentials.token # Set up headers for the request headers = { 'Authorization': f'Bearer {auth_token}', 'Content-Type': 'application/json' } class_labels = [ "T-shirt/top", "Trouser", "Pullover", "Dress", "Coat", "Sandal", "Shirt", "Sneaker", "Bag", "Ankle boot" ] # Loop through the first 6 test images for i in range(6): # Prepare the instance for prediction instance = test_images[i].tolist() # Make the request body data = json.dumps({"instances": [instance]}) # Send the request response = requests.post(url, headers=headers, data=data) response_json = response.json() # Extract the predictions predicted_probs = response_json['predictions'][0] # Get the index of the highest probability predicted_index = np.argmax(predicted_probs) predicted_label = class_labels[predicted_index] predicted_probability = predicted_probs[predicted_index] # Print the result in a more readable format print(response_json) print(f"Image {i + 1}: Predicted class: {predicted_label} ({predicted_index}) with probability {predicted_probability:.10f}")
Другие недавние вопросы и ответы, касающиеся EITC/AI/GCML Машинное обучение Google Cloud:
- Каковы показатели оценки эффективности модели?
- Что такое линейная регрессия?
- Можно ли объединить различные модели МО и создать мастер-ИИ?
- Какие алгоритмы наиболее распространены в машинном обучении?
- Как создать версию модели?
- Как применить 7 шагов МО в конкретном контексте?
- Как можно применить машинное обучение к данным о разрешениях на строительство?
- Почему таблицы AutoML были прекращены и что пришло им на смену?
- В чем заключается задача интерпретации рисунков, нарисованных игроками, в контексте ИИ?
- Когда в материалах для чтения говорится о «выборе правильного алгоритма», означает ли это, что в принципе все возможные алгоритмы уже существуют? Как мы узнаем, что алгоритм является «правильным» для конкретной проблемы?
Просмотреть дополнительные вопросы и ответы в EITC/AI/GCML Google Cloud Machine Learning