Классификация изображений - это форма контролируемого обучения, когда модель обучена идентифицировать и классифицировать объекты в изображениях. Autotrain упрощает процесс, позволяя вам обучить современную модель классификации изображений, просто загрузив помеченные примеры.

Регрессия/оценка изображений - это форма контролируемого обучения, в которой модель обучена прогнозировать оценку или значение для изображения. Autotrain упрощает процесс, позволяя вам обучить современную модель оценки изображения, просто загрузив помеченные примеры.

Подготовка ваших данных

Чтобы ваша модель классификации изображений работала эффективно, следуйте этим рекомендациям по подготовке данных:

Организация Изображений Для Классификации Изображений

Подготовьте zip-файл, содержащий изображения, распределенные по категориям. Каждая категория должна иметь свою собственную подпапку, названную в честь класса, который она представляет. Например, чтобы отличить "кошек" от "собак", структура вашего zip-файла должна выглядеть следующим образом:

cats_and_dogs.zip
├── cats
│ ├── cat.1.jpg
│ ├── cat.2.jpg
│ ├── cat.3.jpg
│ └── ...
└── dogs
   ├── dog.1.jpg
   ├── dog.2.jpg
   ├── dog.3.jpg
   └── ...

Вы также можете использовать набор данных из Hugbing Face Hub. Пример набора данных из Hugging Face Hub: truepositive/hotdog_nothotdog.

Организация изображений для регрессии/оценки изображений

Приготовьте zip -файл, содержащий ваши изображения и метаданные.jsonl.

Archive.zip
├── 0001.png
├── 0002.png
├── 0003.png
├── .
├── .
├── .
└── metadata.jsonl

Пример для metadata.jsonl:

{"file_name": "0001.png", "target": 0.5}
{"file_name": "0002.png", "target": 0.7}
{"file_name": "0003.png", "target": 0.3}

Обратите внимание, что Metadata.jsonl должен содержать значения  file_name и target для каждого изображения.

Вы также можете использовать набор данных из Hugging Face Hub. Пример набора данных из Hugging Face Hub:: abhishek/img-quality-full.

Требования к изображению

  • Формат: Убедитесь, что все изображения выполнены в формате JPEG, JPG или PNG.
  • Количество: Включите не менее 5 изображений в каждый класс, чтобы предоставить модели достаточное количество примеров для изучения.
  • Эксклюзивность: zip-файл должен содержать только папки, названные в честь классов, и в этих папках должны содержаться только соответствующие изображения. Не следует включать дополнительные файлы или вложенные папки.

Дополнительные советы

  • Однородность: хотя это и не требуется, наличие изображений одинакового размера и разрешения может помочь повысить производительность модели.
  • Вариативность: Включите различные изображения для каждого класса, чтобы охватить диапазон появлений и контекстов, с которыми модель может столкнуться в реальных сценариях.

Некоторые моменты, которые следует иметь в виду:

  • ZIP-файл должен содержать несколько папок (классов), каждая папка должна содержать изображения одного класса.
  • Имя папки должно совпадать с именем класса.
  • Изображения должны быть в формате jpeg, jpg или png.
  • В каждом классе должно быть не менее 5 изображений.
  • В zip-файле не должно быть никаких других файлов.
  • Внутри zip-папки не должно быть никаких других папок.

При распаковке train.zip создаются две папки: "cats" и "dogs". это две категории для классификации. Изображения для обеих категорий находятся в соответствующих папках. У вас может быть столько категорий, сколько вы хотите.

Сопоставление столбцов

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

data:
  .
  .
  .
  column_mapping:
    image_column: image
    target_column: label

Для регрессии изображения сопоставление столбцов должно быть следующим:

data:
  .
  .
  .
  column_mapping:
    image_column: image
    target_column: target

Для регрессии изображений файл metadata.jsonl должен содержать имя файла и целевое значение (target) для каждого изображения.

Если вы используете набор данных из Hugging Face Hub, вам следует установить соответствующие сопоставления столбцов на основе этого набора данных.

Обучение

Обучение локально

Чтобы обучить модель локально, создайте файл конфигурации (config.yaml) со следующим содержимым:

task: image_classification
base_model: google/vit-base-patch16-224
project_name: autotrain-cats-vs-dogs-finetuned
log: tensorboard
backend: local

data:
  path: cats_vs_dogs
  train_split: train
  valid_split: null
  column_mapping:
    image_column: image
    target_column: label

params:
  epochs: 2
  batch_size: 4
  lr: 2e-5
  optimizer: adamw_torch
  scheduler: linear
  gradient_accumulation: 1
  mixed_precision: fp16

hub:
  username: ${HF_USERNAME}
  token: ${HF_TOKEN}
  push_to_hub: true

В данном случае мы используем набор данных cats_and_dogs из Hugging Face Hub. Модель обучается в течение 2 периодов с размером пакета 4 и скоростью обучения 2e-5. Мы используем оптимизатор adamw_torch и линейный планировщик. Мы также используем смешанное прецизионное обучение с накоплением градиента, равным 1.

Чтобы использовать локальный набор данных, вы можете изменить раздел данных на:

data:
  path: data/
  train_split: train # this folder inside data/ will be used for training, it contains the images in subfolders.
  valid_split: valid # this folder inside data/ will be used for validation, it contains the images in subfolders. can also be null.
  column_mapping:
    image_column: image
    target_column: label

Аналогично, для регрессии изображения вы можете использовать следующий конфигурационный файл:

task: image_regression
base_model: microsoft/resnet-50
project_name: autotrain-img-quality-resnet50
log: tensorboard
backend: local

data:
  path: abhishek/img-quality-full
  train_split: train
  valid_split: null
  column_mapping:
    image_column: image
    target_column: target

params:
  epochs: 10
  batch_size: 8
  lr: 2e-3
  optimizer: adamw_torch
  scheduler: cosine
  gradient_accumulation: 1
  mixed_precision: fp16

hub:
  username: ${HF_USERNAME}
  token: ${HF_TOKEN}
  push_to_hub: true

Чтобы обучить модель, выполните следующую команду:

$ autotrain --config config.yaml

Это запустит процесс обучения и сохранит модель в Hugging Face Hub после завершения обучения. Если вы не хотите сохранять модель в hub, вы можете установить для параметра push_to_hub значение false в файле конфигурации.

Тренировка в Hugging Face Spaces

Чтобы обучить модель в Hugging Face Spaces, создайте учебное пространство, как описано в разделе QuickStart.

Пример пользовательского интерфейса для обучения модели оценки изображения в Hugging Face Spaces показан ниже:

llm-finetuning

В этом примере мы обучаем модель оценки изображения, используя модель Microsoft/Resnet-50 в наборе данных abhishek/img-quality-full. Мы тренируем модель для 3 эпох с размером партии 8 и скоростью обучения 5E-5. Мы используем оптимизатор ADAMW_TORCH и линейный планировщик. Мы также используем смешанную точную тренировку с градиентным накоплением 1.

Обратите внимание, что теперь изменено отображение столбцов, и цель указывает на столбец quality_mos в наборе данных.

Чтобы обучить модель, нажмите на кнопку Начать обучение. Это запустит процесс обучения и сохранит модель в Hugging Face Hub после завершения обучения.

Параметры

Параметры классификации изображений

( 
    data_path: str = Nonemodel: str = 'google/vit-base-patch16-224',
    username: typing.Optional[str] = None,
    lr: float = 5e-05,
    epochs: int = 3,
    batch_size: int = 8,
    warmup_ratio: float = 0.1,
    gradient_accumulation: int = 1,
    optimizer: str = 'adamw_torch',
    scheduler: str = 'linear',
    weight_decay: float = 0.0,
    max_grad_norm: float = 1.0,
    seed: int = 42,
    train_split: str = 'train',
    valid_split: typing.Optional[str] = None,
    logging_steps: int = -1,
    project_name: str = 'project-name',
    auto_find_batch_size: bool = False,
    mixed_precision: typing.Optional[str] = None,
    save_total_limit: int = 1,
    token: typing.Optional[str] = None,
    push_to_hub: bool = False,
    eval_strategy: str = 'epoch',
    image_column: str = 'image',
    target_column: str = 'target',
    log: str = 'none',
    early_stopping_patience: int = 5,
    early_stopping_threshold: float = 0.01
) 

Параметры

  • data_path (str) — Путь к набору данных.
  • model (str) — Предварительно подготовленное название модели или путь к ней. По умолчанию используется “google/vit-base-patch16-224”.
  • username (Optional[str]) — Имя пользователя учетной записи Hugging Face.
  • lr (float) — Скорость обучения для оптимизатора. Значение по умолчанию 5e-5.
  • epochs (int) — Количество периодов для обучения. Значение по умолчанию 3.
  • batch_size (int) — Размер пакета для обучения. По умолчанию 8.
  • warmup_ratio (float) — Коэффициент прогрева для планировщика скорости обучения. Значение по умолчанию 0.1.
  • gradient_accumulation (int) — Количество шагов накопления градиента. Значение по умолчанию равно 1.
  • optimizer (str) — Тип оптимизатора. По умолчанию используется “adamw_torch”.
  • scheduler (str) — Тип планировщика скорости обучения. По умолчанию используется “linear”.
  • weight_decay (float) — Уменьшение веса для оптимизатора. Значение по умолчанию равно 0.0.
  • max_grad_norm (float) — Максимальная норма градиента для отсечения. Значение по умолчанию 1.0.
  • seed (int) — Выборочное значение для воспроизводимости. Значение по умолчанию 42.
  • train_split (str) — Название раздела обучающих данных. По умолчанию используется “train”.
  • valid_split (Optional[str]) — Название разделения проверочных данных.
  • logging_steps (int) — Количество шагов между регистрациями. По умолчанию -1.
  • project_name (str) — Имя проекта для выходного каталога. По умолчанию используется “project-name”.
  • auto_find_batch_size (bool) — Автоматически определяет оптимальный размер пакета. Значение по умолчанию - False.
  • mixed_precision (Optional[str]) — Смешанный режим точной тренировки (fp16, bf16 или None).
  • save_total_limit (int) — Максимальное количество сохраняемых контрольных точек. Значение по умолчанию 1.
  • token (Optional[str]) — Токен Hugging Face Hub для аутентификации.
  • push_to_hub (bool) — Следует ли перемещать модель в Hugging Face Hub. Значение по умолчанию False.
  • eval_strategy (str) — Стратегия оценки во время обучения. Значение по умолчанию - “epoch”.
  • image_column (str) — Имя столбца для изображений в наборе данных. По умолчанию используется “image”.
  • target_column (str) — Имя столбца для целевых меток в наборе данных. По умолчанию используется “target”.
  • log (str) — Метод ведения журнала для отслеживания эксперимента. Значение по умолчанию - “none”.
  • early_stopping_patience (int) — Количество эпох без улучшений для ранней остановки. Значение по умолчанию - 5.
  • early_stopping_threshold (float) — Порог для досрочной остановки. Значение по умолчанию равно 0.01.

ImageClassificationParams - это класс конфигурации для обучающих параметров классификации изображений.

Параметры регрессии изображения

class autotrain.trainers.image_regression.params.ImageRegressionParams

 

( 
    data_path: str = None,
    model: str = 'google/vit-base-patch16-224',
    username: typing.Optional[str] = None,
    lr: float = 5e-05,
    epochs: int = 3,
    batch_size: int = 8,
    warmup_ratio: float = 0.1,
    gradient_accumulation: int = 1,
    optimizer: str = 'adamw_torch',
    scheduler: str = 'linear',
    weight_decay: float = 0.0,
    max_grad_norm: float = 1.0,
    seed: int = 42train_split: str = 'train',
    valid_split: typing.Optional[str] = None,
    logging_steps: int = -1,
    project_name: str = 'project-name',
    auto_find_batch_size: bool = False,
    mixed_precision: typing.Optional[str] = None,
    save_total_limit: int = 1,
    token: typing.Optional[str] = None,
    push_to_hub: bool = False,
    eval_strategy: str = 'epoch',
    image_column: str = 'image',
    target_column: str = 'target',
    log: str = 'none',
    early_stopping_patience: int = 5,
    early_stopping_threshold: float = 0.01
)

Параметры

  • data_path (str) — Путь к набору данных.
  • model (str) — Название используемой модели. По умолчанию используется “google/vit-base-patch16-224”.
  • username (Optional[str]) — Имя пользователя Hugging Face .
  • lr (float) — Скорость обучения. Значение по умолчанию 5e-5.
  • epochs (int) — Количество периодов обучения. Значение по умолчанию 3.
  • batch_size (int) — Размер обучающего пакета. Значение по умолчанию 8.
  • warmup_ratio (float) — Пропорция прогрева. Значение по умолчанию 0,1.
  • gradient_accumulation (int) — Этапы накопления градиента. Значение по умолчанию 1.
  • optimizer (str) — Использовать оптимизатор. Значение по умолчанию - “adamw_torch”.
  • scheduler (str) — Использовать планировщик. Значение по умолчанию - “linear”.
  • weight_decay (float) — Уменьшение веса. Значение по умолчанию равно 0.0.
  • max_grad_norm (float) — Максимальная норма градиента. Значение по умолчанию 0.1.
  • seed (int) — Случайное начальное число. Значение по умолчанию 42.
  • train_split (str) — Название разделенного тренера. По умолчанию используется “train”.
  • valid_split (Optional[str]) — Проверка имени разделения.
  • logging_steps (int) — Ведение журнала действий. Значение по умолчанию -1.
  • project_name (str) — Имя выходного каталога. По умолчанию используется “project-name”.
  • auto_find_batch_size (bool) — Следует ли автоматически определять размер пакета. Значение по умолчанию - False.
  • mixed_precision (Optional[str]) — Смешанный тип точности (fp16, bf16 или None).
  • save_total_limit (int) — Сохранить общий лимит. Значение по умолчанию 1.
  • token (Optional[str]) — Hub Токен.
  • push_to_hub (bool) — Следует ли выгружатьна hub. Значение по умолчанию - False.
  • eval_strategy (str) — Стратегия оценки. По умолчанию используется значение “epoch”.
  • image_column (str) — Название столбца "Изображение". По умолчанию используется “image”.
  • target_column (str) — Имя целевого столбца. Значение по умолчанию - “target”.
  • log (str) — Ведение журнала с использованием отслеживания экспериментов. Значение по умолчанию - “none”.
  • early_stopping_patience (int) — Терпение при досрочном прекращении действия. Значение по умолчанию 5.
  • early_stopping_threshold (float) — Порог ранней остановки. Значение по умолчанию равно 0.01.

ImageRegressionParams - это класс конфигурации для параметров обучения регрессии изображений.