Markdownで表示

基本概念

LibreYOLOの各モデルは、実行するタスク、所属するファミリー、そのファミリー内のサイズ、ファミリーが属するサポートティアという4つの概念で表されます。チェックポイントのファイル名には最初の3つがエンコードされます。

ファイル名スキーマ
Libre<FAMILY><size>[-<task>].pt
標準タスク
17
サポートティア
Flagship、Core、Supported、Inference only、Museum、Sibling tier

タスク

タスクはモデルが返すものを表します。LibreYOLOには17個の標準タスク名があり、それぞれ出力を保持するResultsオブジェクト上のフィールド名に対応します。

タスク戻り値
detectクラスと信頼度を持つ軸平行ボックス
segment検出物体ごとに1つのインスタンスマスク
semanticインスタンスを分離しない、ピクセルごとの1つのクラスラベル
panoptic数えられる物体と不定形の領域を統合した、ピクセルごとの重複しない1つのラベル
poseボックスと行が対応するインスタンスごとのキーポイント
classify画像全体に対するラベル集合上の確率
obb回転角度を持つ回転ボックス
pointボックスではなく、検出ごとに1つの画像座標
depth密な相対逆深度マップ
normal単位ベクトルからなる密なサーフェス法線場
edge密なエッジ確率マップ
restoreぼけ除去、ノイズ除去、超解像用の復元済みRGB画像
matte背景除去用の0から1までのソフト前景マップ
ocr読み順に並んだ文字列付きのテキスト四辺形
embed内積が一致度を表すL2正規化済みベクトル
gaze検出した顔ごとの視線方向
mesh検出した人物ごとの姿勢付き3D人体

これらの名前はチェックポイントのメタデータとファイル名に現れます。タスクを渡す場所では一般的な別名も受け付け、他の処理より先に正規化します。detectiondetdetectkeypointsposeclsclassifydeblurdenoisesuper-resolutionはすべてrestoreface-recognitionreidembedになります。認識できない名前は暗黙にデフォルトを使用せず例外を送出します。

segmentsemanticpanopticは同じものを表す3つの言い方ではなく、異なる3つのタスクです。インスタンスマスク、ピクセルごとのラベル、物体と背景領域を統合したマップでは、正解データ、指標、結果フィールドが異なります。

モデルファミリー

ファミリーは固有の読み込み、前処理、後処理コードを持つ1つのアーキテクチャ系統です。各ファミリーはyolo9rfdetrdfineなどのFAMILY識別子、対応タスク、提供する各サイズの入力解像度を宣言します。

LibreYOLO()はクラスではなくファクトリです。パスを渡すとファイルを読み込み、チェックポイントのメタデータ、またはそれがなければテンソルのキー自体からファミリーを特定し、そのファミリーのモデルインスタンスを返します。そのため検出器の切り替えは1行の変更で済みます。返されるオブジェクトは共通のpredicttrainvalexportインターフェースを公開し、同じResults型を返します。

ファミリーを一覧表示
# 登録済みの全ファミリーについてタスク サイズ 入力解像度を表示するlibreyolo models
1つのモデル
from libreyolo import LibreYOLO model = LibreYOLO("LibreYOLO9t.pt") print(model.family, model.size, model.task)print(model.input_size)print(model.nb_classes, model.names[0])
タスクを選択
from libreyolo import LibreYOLO # 別名はAPI境界で正規化される "keypoints"は"pose"へ# "det"は"detect"へ "semantic-segmentation"は"semantic"へ解決されるmodel = LibreYOLO("LibreYOLO9t.pt", task="det")print(model.task)

複数のタスクに対応するファミリーでは通常タスクごとに別のチェックポイントを公開し、各タスクで異なるサイズ集合を持つこともよくあります。2つの実行時タスクで1つのアーティファクトを共有するものも少数あります。いずれの場合も対応タスクは固定されたリストです。そのリスト外のタスクを要求すると、近似したものを読み込むのではなく、エラーメッセージに対応リストを示して例外を送出します。

ファミリーごとのベンチマークと公開済みの重みを含む完全な一覧は全モデルを参照してください。

サイズ

サイズはファミリー内のバリアントで、ファミリー接頭辞の直後に小文字のコードで記述します。一般的な文字はnanoのn、tinyのt、smallのs、mediumのm、largeのl、xlargeのxですが、コードはファミリー固有であり、まったく異なるものを使うファミリーも複数あります。たとえばResNetの深さを表すr50r101のようなバックボーン名のコード、b0からb3のような複合スケーリングのコード、公開された唯一のチェックポイントを識別する名前などです。他ファミリーがlを使う位置で、YOLOv9はcompactのcを使います。

サイズは入力解像度も固定し、複数タスクを持つファミリーではタスクごとに解像度が異なる場合があります。どちらも仮定せずファミリーから読み取られ、libreyolo modelsで表示できます。

チェックポイントのファイル名

公開される各重みファイルは1つのスキーマに従います。

Libre<FAMILY><size>[-<task>].pt

ファミリー接頭辞はファミリーごとの固定文字列、サイズは小文字で区切りなしに連結され、タスク接尾辞の先頭にはハイフンが付きます。検出には、従来のYOLOチェックポイントの慣例に従って接尾辞がありません。そのため、LibreYOLO9t.ptは検出器で、LibreRFDETRn-seg.ptは同じファミリーのセグメンテーションモデルです。

タスク接尾辞
detect
segment-seg
semantic-sem
panoptic-panoptic
pose-pose
classify-cls
gaze-gaze
obb-obb
point-point
depth-depth
edge-edge
normal-normal
restore-restore
matte-matte
ocr-ocr
embed-embed
mesh-mesh

接尾辞なしのタスクがないファミリーでは接尾辞を必須にできるため、接尾辞なしの名前は有効なチェックポイントとして受け付けられません。デフォルト以外のデータセットで学習した重みを公開するファミリーでは、さらにデータセット名を接尾辞として追加します。そのバリアント名はファイルのダウンロード元となるリポジトリ名にも含まれます。

このスキーマの対象外となる3つのティアがあります。プロンプト可能セグメンテーション、Vision-Language、オープンボキャブラリー検出の各ファミリーはチェックポイントファクトリへ登録されず、Libre<FAMILY><size>.ptファイルを生成しません。その接頭辞は、ダウンロード済みのHugging Faceスナップショットまたはプロンプト可能チェックポイントを指します。アップストリームブランドの大文字と小文字は意図的にそのまま維持されます。

タスクの決定方法

複数の情報からタスクを特定できる場合、固定された順序で確認し、最初に存在するものを使用します。指定したtask引数、チェックポイントのメタデータに記録されたタスク、ファイル名のタスク接尾辞、ファミリーのデフォルトタスクの順です。モデルの構築前に、その結果をファミリーの対応タスクと照合します。そのため、不一致は後で誤った出力を生成せず読み込み時に失敗します。

サポートティア

各ファミリーは正確に1つのティアへ分類されます。ティアは精度ではなく、エンジニアリング上の注力度を示します。新機能が最初に追加される場所と、継続的に正常状態を維持する範囲を表します。

ティア意味
Flagship機能を最初に設計し、GPUで完全に検証
Core学習可能な中核検出器。Flagshipと同じリリース周期内で機能を追加
Supported学習可能な補助ファミリー。CIで正常状態を維持し、機会に応じて機能を追加
Inference only推論、検証、エクスポートに対応。学習機能は対象外
Museum固定された展示物。不具合修正のみ
Sibling tier固有のファクトリと契約を持つ別の製品インターフェース

各モデルページのヘッダーにファミリーのティアが記載されています。2つのFlagshipファミリーは、CNN検出器のYOLOv9とTransformer検出器のRF-DETRです。特別な理由がなければ、ここから始めてください。

Inference onlyが欠いているのはLibreYOLO内の学習ループです。推論、検証、そしてファミリーが対応する場合はエクスポートが機能します。このファミリーでtrain()を呼び出すと、理由を示すNotImplementedErrorを送出します。

LibreYOLO v1.5.0で検証済みです。