TEED

TEED(Tiny and Efficient Edge Detector)は、1枚のRGB画像から密なエッジ確率マップを予測する小規模な畳み込みネットワークです。LibreYOLOはそのアーキテクチャをエッジ検出専用でラップし、チェックポイントはライブラリに付属しません。

タスク
edge
サイズ
t at 352 px
インストール
pip install libreyolo
サポートティア
推論のみ、v以降。推論、検証、エクスポートのみです。学習機能は対象外です。
アップストリーム
Xavier SoriaのTEED、MIT。論文ソース
ライセンス
コード:MIT、重み:MIT。商用利用

インストール

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

bash
pip install libreyolo

推論

LibreYOLOはTEEDチェックポイントを提供しません。公式に公開された重みはBIPEDで学習されており、 公開済みのデータセット規約が利用を非商用目的に制限するため、LibreYOLOはミラーしません。 ライセンスを保有するチェックポイントをweights/convert_teed_weights.pyで変換してください。この scriptは、LibreYOLOが直接読み込めるファイルを書き出す前に、テンソルkeyとランタイムアーキテクチャを照合します。

bash
python weights/convert_teed_weights.py upstream.pth weights/LibreTEEDt-edge.pt --verify

Python
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("weights/LibreTEEDt-edge.pt")result = model(SAMPLE_IMAGE, save=True) edges = result.edgesprint(edges.array.shape)        # (H, W) float32、範囲[0, 1]print(edges.binary(0.5).sum())  # しきい値処理後のエッジピクセル数
CLI
libreyolo predict model=weights/LibreTEEDt-edge.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=True

結果はresult.edgesに入ります。[0, 1]範囲の(H, W)形状のfloat32配列で、 .binary(threshold)はbooleanのエッジマスクを返します。ボックスはないため、confioumax_detに効果はありません。入力ソース、ストリーミング、結果の処理については 推論を参照してください。

バリアント

TEEDはLibreYOLOで1サイズを提供します。LibreYOLOのベンチマークharnessはこのファミリーを 測定していないため、比較できる公開数値はありません。

検証

val()は、対応するエッジデータセットに対してBSDS形式のODSおよびOIS F-measureを報告します。 画像と同じstemのエッジマップを並べ、任意の有効性マスクによりpaddingされたピクセルを除外できます。 imgszはネットワークのdownsample strideで割り切れる必要があり、そうでない場合はLibreYOLOが 明確なエラーを発生させます。

Python
from libreyolo import LibreYOLO model = LibreYOLO("weights/LibreTEEDt-edge.pt")metrics = model.val(data="my-dataset.yaml", imgsz=352) print(metrics["metrics/ODS"])   # データセット全体で最適なF-measureprint(metrics["metrics/OIS"])   # 画像ごとに最適なF-measure
CLI
libreyolo val model=weights/LibreTEEDt-edge.pt data=my-dataset.yaml imgsz=352

エクスポート

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

エッジのエクスポートは固定解像度、バッチ1のランタイム契約を使います。dynamicと1以外の batchは拒否され、エクスポートしたグラフは1個のfused probability mapを出力します。 エクスポートした成果物はファイル接尾辞に基づいてLibreYOLO()から再読み込みされます。そのため、 .onnxファイルはチェックポイントと同様に動作し、同じResultsを返します。

Python
from libreyolo import LibreYOLO model = LibreYOLO("weights/LibreTEEDt-edge.pt")model.export(format="onnx", imgsz=352)model.export(format="tensorrt", imgsz=352, half=True)
CLI
libreyolo export model=weights/LibreTEEDt-edge.pt format=onnx imgsz=352libreyolo export model=weights/LibreTEEDt-edge.pt format=tensorrt imgsz=352 half=True
エクスポートしたファイルを使う
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("weights/LibreTEEDt-edge.onnx")result = model(SAMPLE_IMAGE) print(result.edges.array.shape)

ライセンス

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

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

原著作物
TEED, Xavier Soria
アップストリームのライセンス
MIT
アップストリームのソース
github.com/xavysp/TEED
LibreYOLOのコード
MIT
重み
MIT、著者が配布。LibreYOLOではホストもミラーもしていません。
解釈
MIT is a permissive license, so the TEED architecture LibreYOLO ports can be used in commercial and closed-source products, with the license text and copyright notice kept alongside any copy you redistribute. LibreYOLO ships no checkpoint for this family: the officially released weights are trained on BIPED, whose published dataset terms restrict use to non-commercial purposes, and mirroring them would carry that restriction into a nominally MIT-licensed download. Convert a checkpoint you hold a license for with `weights/convert_teed_weights.py`; the MIT code license does not change the terms attached to whatever checkpoint you convert.

LibreYOLOはTEEDチェックポイントを公開しません。LibreYOLO組織の下には何もミラーされません。 代わりに、ライセンスを保有するチェックポイントをweights/convert_teed_weights.pyで変換してください。

引用

@InProceedings{Soria_2023teed,
    author    = {Soria, Xavier and Li, Yachuan and Rouhani, Mohammad and Sappa, Angel D.},
    title     = {Tiny and Efficient Model for the Edge Detection Generalization},
    booktitle = {Proceedings of the IEEE/CVF International Conference on Computer Vision (ICCV) Workshops},
    month     = {October},
    year      = {2023},
    pages     = {1364-1373}
}

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

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