PIDNet

proportional-integral-derivativeに着想を得た設計へ専用の境界branchを追加した、3 branch構成のセマンティックセグメンテーションネットワークです。リアルタイム推論を目的としています。LibreYOLOはセマンティックセグメンテーション専用で提供します。

タスク
semantic
サイズ
s, m, l at 1024 px
インストール
pip install libreyolo
サポートティア
推論のみ、v以降。推論、検証、エクスポートのみです。学習機能は対象外です。
アップストリーム
Jiacong XuのPIDNet、MIT。論文ソース
ライセンス
コード:MIT、重み:MIT。商用利用

インストール

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

bash
pip install libreyolo

推論

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

Python
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibrePIDNets-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=LibrePIDNets-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処理も行わないためです。 入力ソース、ストリーミング、結果の処理については推論を参照してください。

バリアント

サイズは3種類で、すべて固定1024 px入力です。公開チェックポイントは公式PIDNet Cityscapesの 19クラス用重みを変換したものです。

LibreYOLOはPIDNetを学習しません。このファミリーでtrain()を呼び出すと NotImplementedErrorが発生し、上記のサポート層でも推論専用と示されています。

検証

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

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

チェックポイント

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

ファイル入力(px)重みのライセンス
semantic
LibrePIDNets-sem.pt1024mit
LibrePIDNetm-sem.pt1024mit
LibrePIDNetl-sem.pt1024mit

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

ライセンス

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

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

原著作物
PIDNet, Jiacong Xu
アップストリームのライセンス
MIT
アップストリームのソース
github.com/XuJiacong/PIDNet
LibreYOLOのコード
MIT
重み
MIT、huggingface.co/LibreYOLOで再公開
解釈
MIT is a permissive license, so this code and these weights can be used in commercial and closed-source products. It asks only that you keep the copyright and license notice with any copy you redistribute. LibreYOLO's checkpoints are conversions of the official PIDNet Cityscapes weights, which upstream licenses as MIT. The Cityscapes dataset itself carries separate research-oriented terms and is not redistributed by LibreYOLO.

引用

@misc{xu2022pidnet,
      title={PIDNet: A Real-time Semantic Segmentation Network Inspired from PID Controller}, 
      author={Jiacong Xu and Zixiang Xiong and Shankar P. Bhattacharyya},
      year={2022},
      eprint={2206.02066},
      archivePrefix={arXiv},
      primaryClass={cs.CV}
}

著者によるgithub.com/XuJiacong/PIDNet#bibtex-citationの引用ブロックからコピーしています。

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