Markdownで表示

DeepLabv3

各ピクセルを分類する前に、複数のdilation rateで特徴量を並列にプーリングするセマンティックセグメンテーションネットワーク(atrous spatial pyramid pooling)です。LibreYOLOはセマンティックセグメンテーション専用で提供します。

タスク
semantic
サイズ
インストール
pip install libreyolo
サポートティア
推論のみ、v以降。推論、検証、エクスポートのみです。学習機能は対象外です。
アップストリーム
PyTorchのDeepLabv3、BSD-3-Clause。論文ソース
ライセンス
コード:BSD-3-Clause、重み:BSD-3-Clause。商用利用

インストール

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

bash
pip install libreyolo

推論

重みは初回使用時にHugging Faceからダウンロードされ、ローカルにキャッシュされます。この ファミリーではファイル名の-sem接尾辞が必要です。

Python
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreDeepLabv3r50-sem.pt")result = model(SAMPLE_IMAGE, save=True) mask = result.semantic_maskprint(mask.data.shape)   # (H, W)クラスIDprint(mask.classes)      # 画像内に存在するクラスIDをソート
CLI
libreyolo predict model=LibreDeepLabv3r50-sem.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=True

セマンティックセグメンテーションはボックスではなく、ピクセルごとに1個のクラスIDを返します。 result.semantic_mask.dataには(H, W)配列、.classesには画像内に存在するクラスIDの 一覧が入ります。confioumax_detはAPIの一貫性のため受け付けますが、効果はありません。 モデルはargmaxで各ピクセルへクラスを割り当て、信頼度のしきい値処理もNMS処理も行わないためです。 入力ソース、ストリーミング、結果の処理については推論を参照してください。

バリアント

バックボーンは、dilated ResNet-50、dilated ResNet-101、dilated MobileNetV3-Largeの 3種類です。これはDeepLabv3でありDeepLabv3+ではないため、デコーダー段階もCRF refinementも ありません。論文独自の参照コードではなく、torchvisionの実装に準拠しています。

LibreYOLOはDeepLabv3を学習しません。このファミリーでtrain()を呼び出すと NotImplementedErrorが発生し、上記のサポート層でも推論専用と示されています。 公開されている3個のチェックポイントは、torchvision独自のCOCO-with-VOC-label重みを LibreYOLOのローダー向けに変換したものです。

検証

val()は、学習に使った形式の任意のデータセットに対して測定したmetrics/mIoUmetrics/pixel_accuracyを返します。

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreDeepLabv3r50-sem.pt")metrics = model.val(data="my-dataset.yaml") print(metrics["metrics/mIoU"])print(metrics["metrics/pixel_accuracy"])
CLI
libreyolo val model=LibreDeepLabv3r50-sem.pt data=my-dataset.yaml

エクスポート

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

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

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

チェックポイント

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

ファイル入力(px)重みのライセンス
semantic
LibreDeepLabv3r50-sem.ptbsd-3-clause
LibreDeepLabv3r101-sem.ptbsd-3-clause
LibreDeepLabv3mv3-sem.ptbsd-3-clause

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

ライセンス

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

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

原著作物
DeepLabv3, PyTorch
アップストリームのライセンス
BSD-3-Clause
アップストリームのソース
github.com/pytorch/vision
LibreYOLOのコード
MIT
重み
BSD-3-Clause、huggingface.co/LibreYOLOで再公開
解釈
BSD-3-Clause is a permissive license, so this code and these weights can be used in commercial and closed-source products. It asks you to keep the copyright notice, license text and a non-endorsement clause with any copy you redistribute. LibreYOLO's inference graph is torchvision's ASPP head over its ResNet-50, ResNet-101 and MobileNetV3-Large backbones; it is DeepLabv3, not DeepLabv3+, so there is no decoder or CRF, and the paper's training-only auxiliary FCN classifier is excluded. The three published checkpoints are torchvision's official COCO-with-VOC-label weights; their separate LibreYOLO Hugging Face mirrors carry BSD-3-Clause on an implied basis disclosed by torchvision rather than an explicit checkpoint-specific grant, and torchvision's own documentation notes that pretrained-model terms can depend on the training data, leaving that determination to the user.

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