Как автоматически сохранять изображения из Colab в Gdrive в отдельные папки, имена которых совпадают с метками соответствующих изображений?

Вопрос или проблема

У меня всего 30 000 изображений. Они распределены по 32 классам. Я хочу сохранить эти изображения из Google Colab на свой диск с именами папок в качестве названий их меток. Это возможно сделать с помощью кода на Python? В противном случае это будет утомительная задача. Любые предложения будут полезны для меня. Заранее благодарен.

Например, я создал это.

введите описание изображения здесь

Это мои метки.

from matplotlib import pyplot as plt
for i in range(len(unique_arr)):
  ab = plt.imshow(final[i], interpolation='nearest')
  plt.savefig(f"label{unique_arr[i]}.png")
  plt.show()

Это те три изображения

введите описание изображения здесь

И изображения сохраняются как label{}.png

введите описание изображения здесь

Похоже, вы уже подключили свой Google Диск. Функция savefig может принимать путь и имя изображения в качестве входных аргументов.

    images_dir="/content/gdrive/My Drive/Images"
    plt.savefig(f"{images_dir}/label{unique_arr[i]}.png")

В цикле for вы также можете изменить этот каталог изображений для каждой метки, где имя метки ‘/label’ добавляется к пути каталога изображений, и вы сможете классифицировать каждое изображение в папку в зависимости от его метки.

Ответ или решение

Для автоматического сохранения изображений из Google Colab в Google Диск с разделением по папкам в зависимости от их меток, вы можете использовать следующий подход. Этот метод позволяет вывести на экран изображения и сохранить их в соответствующие папки, имена которых будут соответствовать меткам изображений.

Подготовительный этап

Первым делом важно убедиться, что ваш Google Диск смонтирован в Google Colab. Это можно сделать с помощью следующего кода:

from google.colab import drive
drive.mount('/content/gdrive')

После этого вы сможете обращаться к вашему Google Диску как к файловой системе.

Создание структуры папок

Перед тем как сохранить изображения, создадим структуру папок по меткам:

import os

# укажите путь к директории на вашем Google Диске
base_dir = "/content/gdrive/My Drive/Images"
# Пример: уникальные метки для классификации изображений
unique_labels = ['cat', 'dog', 'bird', ..., 'labelN']  # замените на ваши метки

# Создаем папки для каждой метки, если они еще не существуют
for label in unique_labels:
    os.makedirs(os.path.join(base_dir, label), exist_ok=True)

Сохранение изображений

Теперь, когда у нас есть папки, можно сохранить соответствующие изображения:

import matplotlib.pyplot as plt

# Предположим, у вас есть массивы images и labels
# images - массив изображений, labels - метки для каждого изображения
images = [...]  # замените на ваш массив изображений
labels = [...]  # замените на массив меток для соответствующих изображений

for i in range(len(images)):
    plt.imshow(images[i], interpolation='nearest')
    # Определяем директорию для сохранения
    image_path = os.path.join(base_dir, labels[i], f"{labels[i]}_{i}.png")
    plt.savefig(image_path)
    plt.close()  # Закрываем текущее изображение, чтобы освободить память

Объяснение кода:

  1. Монтирование Google Диска: Мы используем drive.mount, чтобы подключить Google Диск.
  2. Создание папок: С помощью os.makedirs создаем папки для каждой метки, если они еще не существуют.
  3. Сохранение изображений:
    • В цикле for мы проходим по списку изображений и соответствующих меток.
    • Для каждого изображения мы используем plt.imshow для отображения его.
    • Затем сохраняем изображение в соответствующую папку с именем, включающим метку и индекс изображения, чтобы избежать конфликтов имен.
    • Используем plt.close(), чтобы закрыть текущее изображение и освободить память.

Заключение

Этот метод позволяет вам автоматизировать процесс сохранения 30,000 изображений по классам в отдельные папки на Google Диске. Вы можете адаптировать код под свои нужды, например, изменив формат имени файла или местоположение сохранения. Использование таких простых и эффективных подходов с Python делает задачу управления изображениями менее трудоемкой и более организованной.

Оцените материал
Добавить комментарий

Капча загружается...