AutoTrain 文档

图像分类与回归

您正在查看的是需要从源码安装。如果您想使用常规的 pip install,请查看最新的稳定版本 (v0.8.24)。
Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

图像分类与回归

图像分类是一种监督学习形式,模型被训练来识别和分类图像中的对象。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
    └── ...

您也可以使用 Hugging Face Hub 上的数据集。Hugging Face Hub 上的示例数据集:truepositive/hotdog_nothotdog

为图像回归/评分整理图片

准备一个包含您的图片和 metadata.jsonl 的 zip 文件。

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` 应包含每张图片的 `file_name` 和 `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

在这里,我们使用来自 Hugging Face Hub 的 `cats_and_dogs` 数据集。模型训练 2 个 epoch,批量大小为 4,学习率为 `2e-5`。我们使用 `adamw_torch` 优化器和 `linear` 调度器。我们还使用混合精度训练,梯度累积为 1。

为了使用本地数据集,您可以将 `data` 部分更改为

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 上训练图像评分模型的示例 UI

llm-finetuning

在此示例中,我们使用 `microsoft/resnet-50` 模型在 `abhishek/img-quality-full` 数据集上训练图像评分模型。我们训练模型 3 个 epoch,批量大小为 8,学习率为 `5e-5`。我们使用 `adamw_torch` 优化器和 `linear` 调度器。我们还使用混合精度训练,梯度累积为 1。

请注意,列映射现已更改,`target` 指向数据集中的 `quality_mos` 列。

要训练模型,请单击 `Start Training` 按钮。这将开始训练过程,并在训练完成后将模型保存到 Hugging Face Hub。

参数

图像分类参数

class autotrain.trainers.image_classification.params.ImageClassificationParams

< >

( 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 = 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 = 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]) — 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 是用于图像回归训练参数的配置类。

< > 在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.