コンテンツにスキップ

画像分類

YOLO 物体とシーンのYOLO 分類

画像分類は3つのタスクの中で最も単純であり、画像全体を事前定義されたクラスの1つに分類します。

画像分類器の出力は、単一のクラスラベルと信頼度スコアです。画像分類は、画像がどのクラスに属するかを知るだけでよく、そのクラスのオブジェクトがどこにあるか、またはその正確な形状を知る必要がない場合に役立ちます。



見る: Ultralytics YOLOタスクを探る:Ultralyticsプラットフォームを使用した画像分類

ヒント

YOLO26 Classifyモデルは -cls 接尾辞、すなわち、 yolo26n-cls.pt、そして事前学習されています ImageNet.

モデル

YOLO26の学習済みClassifyモデルをここに示します。Detect、Segment、PoseモデルはCOCOデータセットで事前学習されていますが、ClassifyモデルはImageNetデータセットで事前学習されています。

モデルは、初回使用時に最新のUltralytics リリースから自動的にダウンロードされます。

モデルサイズ
(ピクセル)
acc
top1
acc
top5
速度
CPU ONNX
(ms)
速度
T4 TensorRT10
(ms)
params
(M)
FLOPs
(B) at 224
YOLO26n-cls22471.490.15.0 ± 0.31.1 ± 0.02.80.5
YOLO26s-cls22476.092.97.9 ± 0.21.3 ± 0.06.71.6
YOLO26m-cls22478.194.217.2 ± 0.42.0 ± 0.011.64.9
YOLO26l-cls22479.094.623.2 ± 0.32.8 ± 0.014.16.2
YOLO26x-cls22479.995.041.4 ± 0.93.8 ± 0.029.613.6
  • acc 値は、モデルの精度です。 ImageNet データセットの検証セット。
    再現方法 yolo val classify data=path/to/ImageNet device=0
  • 速度 ImageNet検証画像で平均化され、 Amazon EC2 P4d インスタンス。
    再現方法 yolo val classify data=path/to/ImageNet batch=1 device=0|cpu

トレーニング

MNIST160データセットでYOLO26n-clsを画像サイズ64、100エポックで学習させます。利用可能な引数の完全なリストについては、設定ページを参照してください。

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-cls.yaml")  # build a new model from YAML
model = YOLO("yolo26n-cls.pt")  # load a pretrained model (recommended for training)
model = YOLO("yolo26n-cls.yaml").load("yolo26n-cls.pt")  # build from YAML and transfer weights

# Train the model
results = model.train(data="mnist160", epochs=100, imgsz=64)
# Build a new model from YAML and start training from scratch
yolo classify train data=mnist160 model=yolo26n-cls.yaml epochs=100 imgsz=64

# Start training from a pretrained *.pt model
yolo classify train data=mnist160 model=yolo26n-cls.pt epochs=100 imgsz=64

# Build a new model from YAML, transfer pretrained weights to it and start training
yolo classify train data=mnist160 model=yolo26n-cls.yaml pretrained=yolo26n-cls.pt epochs=100 imgsz=64

ヒント

Ultralytics YOLO の分類では、 torchvision.transforms.RandomResizedCrop トレーニング用 torchvision.transforms.CenterCrop 検証と推論のため。 これらのクロップベースの変換は、正方形の入力を前提としており、極端なアスペクト比の画像から重要な領域を誤ってクロップアウトし、トレーニング中に重要な視覚情報が失われる可能性があります。 プロポーションを維持しながら画像を完全に保持するには、以下を使用することを検討してください。 torchvision.transforms.Resize クロップ変換の代わりに。

これは、カスタムを通じて拡張パイプラインをカスタマイズすることで実装できます。 ClassificationDataset および ClassificationTrainer.

import torch
import torchvision.transforms as T

from ultralytics import YOLO
from ultralytics.data.dataset import ClassificationDataset
from ultralytics.models.yolo.classify import ClassificationTrainer, ClassificationValidator


class CustomizedDataset(ClassificationDataset):
    """A customized dataset class for image classification with enhanced data augmentation transforms."""

    def __init__(self, root: str, args, augment: bool = False, prefix: str = ""):
        """Initialize a customized classification dataset with enhanced data augmentation transforms."""
        super().__init__(root, args, augment, prefix)

        # Add your custom training transforms here
        train_transforms = T.Compose(
            [
                T.Resize((args.imgsz, args.imgsz)),
                T.RandomHorizontalFlip(p=args.fliplr),
                T.RandomVerticalFlip(p=args.flipud),
                T.RandAugment(interpolation=T.InterpolationMode.BILINEAR),
                T.ColorJitter(brightness=args.hsv_v, contrast=args.hsv_v, saturation=args.hsv_s, hue=args.hsv_h),
                T.ToTensor(),
                T.Normalize(mean=torch.tensor(0), std=torch.tensor(1)),
                T.RandomErasing(p=args.erasing, inplace=True),
            ]
        )

        # Add your custom validation transforms here
        val_transforms = T.Compose(
            [
                T.Resize((args.imgsz, args.imgsz)),
                T.ToTensor(),
                T.Normalize(mean=torch.tensor(0), std=torch.tensor(1)),
            ]
        )
        self.torch_transforms = train_transforms if augment else val_transforms


class CustomizedTrainer(ClassificationTrainer):
    """A customized trainer class for YOLO classification models with enhanced dataset handling."""

    def build_dataset(self, img_path: str, mode: str = "train", batch=None):
        """Build a customized dataset for classification training and the validation during training."""
        return CustomizedDataset(root=img_path, args=self.args, augment=mode == "train", prefix=mode)


class CustomizedValidator(ClassificationValidator):
    """A customized validator class for YOLO classification models with enhanced dataset handling."""

    def build_dataset(self, img_path: str, mode: str = "train"):
        """Build a customized dataset for classification standalone validation."""
        return CustomizedDataset(root=img_path, args=self.args, augment=mode == "train", prefix=self.args.split)


model = YOLO("yolo26n-cls.pt")
model.train(data="imagenet1000", trainer=CustomizedTrainer, epochs=10, imgsz=224, batch=64)
model.val(data="imagenet1000", validator=CustomizedValidator, imgsz=224, batch=64)

データセット形式

YOLO分類データセット形式の詳細は、データセットガイドに記載されています。

Val

学習済みのYOLO26n-clsモデルを検証する 精度 MNIST160データセットで実行します。引数は必要ありません。 model 学習内容を保持 data および引数をモデル属性として。

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-cls.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom model

# Validate the model
metrics = model.val()  # no arguments needed, dataset and settings remembered
metrics.top1  # top1 accuracy
metrics.top5  # top5 accuracy
yolo classify val model=yolo26n-cls.pt  # val official model
yolo classify val model=path/to/best.pt # val custom model

ヒント

に記載されているように トレーニングセクションを使用すると、カスタムを使用することで、トレーニング中に極端なアスペクト比を処理できます。 ClassificationTrainer一貫した検証結果を得るには、カスタムの ClassificationValidator 呼び出すとき val() メソッド。完全なコード例については、 トレーニングセクション 実装の詳細について。

予測

学習済みのYOLO26n-clsモデルを使用して、画像に対する予測を実行します。

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-cls.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom model

# Predict with the model
results = model("https://ultralytics.com/images/bus.jpg")  # predict on an image
yolo classify predict model=yolo26n-cls.pt source='https://ultralytics.com/images/bus.jpg'  # predict with official model
yolo classify predict model=path/to/best.pt source='https://ultralytics.com/images/bus.jpg' # predict with custom model

詳細な predict モードの詳細については、 予測 ページ。

エクスポート

YOLO26n-clsモデルをONNX、CoreMLなどの異なる形式にエクスポートします。

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-cls.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom-trained model

# Export the model
model.export(format="onnx")
yolo export model=yolo26n-cls.pt format=onnx  # export official model
yolo export model=path/to/best.pt format=onnx # export custom-trained model

利用可能なYOLO26-clsエクスポート形式は以下の表にあります。これらを使用して任意の形式にエクスポートできます。 format 引数、すなわち、 format='onnx' または format='engine'。エクスポートされたモデルで直接予測または検証できます。つまり、 yolo predict model=yolo26n-cls.onnxエクスポート完了後、モデルの使用例が表示されます。

形式format 引数モデルメタデータ引数
PyTorch-yolo26n-cls.pt-
TorchScripttorchscriptyolo26n-cls.torchscriptimgsz, half, dynamic, optimize, nms, batch, device
ONNXonnxyolo26n-cls.onnximgsz, half, dynamic, simplify, opset, nms, batch, device
OpenVINOopenvinoyolo26n-cls_openvino_model/imgsz, half, dynamic, int8, nms, batch, data, fraction, device
TensorRTengineyolo26n-cls.engineimgsz, half, dynamic, simplify, workspace, int8, nms, batch, data, fraction, device
CoreMLcoremlyolo26n-cls.mlpackageimgsz, dynamic, half, int8, nms, batch, device
TF SavedModelsaved_modelyolo26n-cls_saved_model/imgsz, keras, int8, nms, batch, device
TF GraphDefpbyolo26n-cls.pbimgsz, batch, device
TF Litetfliteyolo26n-cls.tfliteimgsz, half, int8, nms, batch, data, fraction, device
TF Edge TPUedgetpuyolo26n-cls_edgetpu.tfliteimgsz, device
TF.jstfjsyolo26n-cls_web_model/imgsz, half, int8, nms, batch, device
PaddlePaddlepaddleyolo26n-cls_paddle_model/imgsz, batch, device
MNNmnnyolo26n-cls.mnnimgsz, batch, int8, half, device
NCNNncnnyolo26n-cls_ncnn_model/imgsz, half, batch, device
IMX500imxyolo26n-cls_imx_model/imgsz, int8, data, fraction, device
RKNNrknnyolo26n-cls_rknn_model/imgsz, batch, name, device
ExecuTorchexecutorchyolo26n-cls_executorch_model/imgsz, device
Axeleraaxelerayolo26n-cls_axelera_model/imgsz, int8, data, fraction, device

詳細な export 詳細は エクスポート ページ。

よくある質問

画像分類におけるYOLO26の目的は何ですか?

YOLO26モデル、例えば yolo26n-cls.pt)は、効率的な画像分類のために設計されています。画像全体のクラスラベルと信頼度スコアを割り当てます。これは、画像内のオブジェクトの位置や形状を特定するのではなく、画像の特定のクラスを知るだけで十分な場合に特に役立ちます。

画像分類のためにYOLO26モデルを学習するにはどうすればよいですか?

YOLO26モデルを学習させるには、pythonまたはCLIコマンドのいずれかを使用できます。例えば、を学習させるには yolo26n-cls MNIST160 データセットで、画像サイズ 64 で 100 エポック学習させたモデル:

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-cls.pt")  # load a pretrained model (recommended for training)

# Train the model
results = model.train(data="mnist160", epochs=100, imgsz=64)
yolo classify train data=mnist160 model=yolo26n-cls.pt epochs=100 imgsz=64

その他の構成オプションについては、構成ページをご覧ください。

学習済みのYOLO26分類モデルはどこで入手できますか?

学習済みのYOLO26分類モデルは、で見つけることができます。 モデル セクションを参照してください。のようなモデルは yolo26n-cls.pt, yolo26s-cls.pt, yolo26m-cls.pt)などは、 ImageNet データセットであり、さまざまな画像分類タスクのために簡単にダウンロードして使用できます。

学習済みのYOLO26モデルを異なる形式にエクスポートするにはどうすればよいですか?

pythonまたはCLIコマンドを使用して、学習済みのYOLO26モデルをさまざまな形式にエクスポートできます。例えば、モデルをONNX形式にエクスポートするには、次のようになります。

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-cls.pt")  # load the trained model

# Export the model to ONNX
model.export(format="onnx")
yolo export model=yolo26n-cls.pt format=onnx # export the trained model to ONNX format

詳細なエクスポートオプションについては、Exportページを参照してください。

学習済みのYOLO26分類モデルを検証するにはどうすればよいですか?

MNIST160のようなデータセットで、トレーニング済みモデルの精度を検証するには、次のpythonまたはCLIコマンドを使用できます。

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-cls.pt")  # load the trained model

# Validate the model
metrics = model.val()  # no arguments needed, uses the dataset and settings from training
metrics.top1  # top1 accuracy
metrics.top5  # top5 accuracy
yolo classify val model=yolo26n-cls.pt # validate the trained model

詳細については、Validateセクションをご覧ください。



📅 2年前に作成 ✏️ 2日前に更新
glenn-jocherBurhan-QLaughing-qambitious-octopuspderrengerpicsalexRizwanMunawarUltralyticsAssistantMatthewNoyceRizwanMunawarfcakyon

コメント