VGG

VGGは大きなfilterの代わりに、小さな3×3畳み込みを均一に積み重ねて構築した畳み込み画像分類器です。LibreYOLOは画像分類向けに、16層と19層のplain版とbatch normalization版を提供します。

タスク
classify
サイズ
16, 19, 16bn, 19bn at 224 px
インストール
pip install libreyolo
サポートティア
推論のみ、v以降。推論、検証、エクスポートのみです。学習機能は対象外です。
アップストリーム
Visual Geometry Group, University of OxfordのVGG、BSD-3-Clause。論文ソース
ライセンス
コード:BSD-3-Clause、重み:BSD-3-Clause。商用利用

インストール

VGGに任意の追加パッケージは必要ありません。インポートするものはすべて基本インストールに含まれます。

bash
pip install libreyolo

推論

重みは初回使用時にHugging Faceからダウンロードされ、ローカルにキャッシュされます。

Python
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreVGG16-cls.pt")result = model(SAMPLE_IMAGE, save=True) probs = result.probsprint(probs.top1, probs.top1conf)print(probs.top5, probs.top5conf)
CLI
libreyolo predict model=LibreVGG16-cls.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=True

分類器はresult.boxesではなくresult.probsを返します。top1top5はクラス インデックス、top1conftop5confはそれぞれの信頼度を示します。推論は固定224 px入力で 実行され、異なるimgszを渡すと例外が発生します。入力ソース、ストリーミング、結果の処理に ついては推論を参照してください。

バリアント

サイズは4種類です。16層と19層の畳み込み層に、それぞれplain版とbatch normalization版があります。 提供される重みはtorchvisionが後にImageNetでゼロから学習したもので、Oxford groupによる元の 2014年版Caffeリリースからの変換ではありません。LibreYOLOはこのファミリーを推論専用で提供します。 推論、ImageNet形式のtop-1・top-5検証、エクスポートに対応し、ファインチューニングは未実装です。

検証

val()はImageFolder形式の分割(train/val/サブフォルダーを持ち、クラスごとに1個の フォルダーがあるディレクトリ)に対して実行し、top-1とtop-5の精度を返します。

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreVGG16-cls.pt") # dataはtrain/とval/のクラス別フォルダーを持つルートディレクトリ# データセットYAMLではなくImageFolderレイアウトmetrics = model.val(data="imagenet-1k/") print(metrics["metrics/accuracy_top1"])print(metrics["metrics/accuracy_top5"])
CLI
libreyolo val model=LibreVGG16-cls.pt data=imagenet-1k/

エクスポート

タスクONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
classifyclassify to ONNX:対応classify to TorchScript:対応classify to ExecuTorch:対応classify to TensorRT:対応classify to OpenVINO:対応classify to Paddle:非対応classify to MNN:非対応classify to RKNN:非対応classify to ncnn:対応classify to TFLite:非対応classify to CoreML:非対応classify to Core AI:非対応

エクスポートした成果物はファイル接尾辞に基づいてLibreYOLO()から再読み込みされます。そのため、 .onnxまたは.engineファイルはチェックポイントと同様に動作し、同じResultsを返します。 エクスポートには、各形式が受け付ける引数と、一部の形式で必要になる追加パッケージの一覧があります。

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreVGG16-cls.pt")model.export(format="onnx")model.export(format="tensorrt", half=True)
CLI
libreyolo export model=LibreVGG16-cls.pt format=onnxlibreyolo export model=LibreVGG16-cls.pt format=tensorrt half=True
エクスポートしたファイルを使う
from libreyolo import LibreYOLO, SAMPLE_IMAGE # ファクトリがファイル接尾辞で振り分けるため、エクスポートした成果物も# 通常のチェックポイントと同様に読み込まれ、同じResultsオブジェクトを返すmodel = LibreYOLO("LibreVGG16-cls.onnx")result = model(SAMPLE_IMAGE) print(result.probs.top1)

チェックポイント

このファミリーで公開されているすべての重みファイルです。

ファイル入力(px)重みのライセンス
classify
LibreVGG16-cls.pt224bsd-3-clause
LibreVGG19bn-cls.pt224bsd-3-clause
LibreVGG19-cls.pt224bsd-3-clause
LibreVGG16bn-cls.pt224bsd-3-clause

上記のすべてのファイルは現在LibreYOLO orgにあり、初回使用時にダウンロードされます。

ライセンス

ダウンロードする特定の重みについて、Hugging Faceリポジトリのライセンスを確認してください。LibreYOLO orgの各チェックポイントにはライセンスが付与されており、同じファミリー内でも常に同一とは限りません。そのリポジトリが正式な情報源です。以下の概要は、このページを最後に検証した時点で適用されていた内容を示します。

これは関連するライセンスの説明であり、法的助言ではありません。商用上重要な場合は、自分でライセンスを読み、専門家の助言を受けてください。

原著作物
VGG, Visual Geometry Group, University of Oxford
アップストリームのライセンス
BSD-3-Clause
アップストリームのソース
github.com/pytorch/vision
LibreYOLOのコード
MIT
重み
BSD-3-Clause、huggingface.co/LibreYOLOで再公開
解釈
BSD-3-Clause is a permissive license, so these weights can be used in commercial and closed-source products. It asks you to keep the copyright notice, the list of conditions and the disclaimer with any copy you redistribute, and it forbids using the contributors' names to endorse a derived product without permission; it carries no explicit patent grant. LibreYOLO's code and the four shipped checkpoints (16, 19, 16-BN, 19-BN) are both derived from torchvision, not from the Oxford group's original 2014 Caffe release, which is a separate model under Creative Commons Attribution and is not what LibreYOLO redistributes. Torchvision itself notes that BSD-3-Clause redistribution of a pretrained checkpoint is an implied basis rather than a grant written for that specific checkpoint, and that pretrained-model terms can depend on the data a model was trained on; LibreYOLO repeats that caveat on each hosted weights repository.

LibreYOLO v1.5.0で検証済みです。このページのサポート表、チェックポイント、ベンチマーク値は手作業で記述したものではなく、リリース済みライブラリと公開済みの重みから生成されています。