TT Lab
ブログ

한국어 日本語 中文

はじめる
ブログ

ブログ

物体検出 2:1ステージYOLO系とリアルタイム性、そしてライセンス

ステータス:下書き(2026-10-13)、一部実測。 グリッド・APの例はノートPCのCPUで直接実行した値です(code/06_yolo_ap.py, 1秒以内)。論文の数値は原文を開いて条件とともに転記し、ハードウェアはグレードで記載しました。ライセンスの内容は各リポジトリのLICENSEファイルと公式案内を2026-10-13に確認したものであり、法律上の助言ではありません。 作成ルール:実測データが基本であり、測定できなかったものは「未実測」と表記します。

目次

1. 一度だけ見る

第5回のFaster R-CNNは画像あたり約5fpsでした。候補領域を抽出し(1ステージ)、候補ごとに切り抜いて判定する(2ステージ)ためです。RedmonらのYOLO(You Only Look Once, 2016)は問いを変えます。「検出を 1つの回帰問題として解けないだろうか?」画像をネットワークに一度通過させるだけで、すべてのバウンディングボックスとクラスが一度に出力されるようにしようということです。

YOLO: 그림을 S×S 격자로 나눠 한 번에 예측 선수 상자의 중심이 떨어진 칸이 그 선수를 책임진다 칸마다 내는 것 상자 B개 × (x, y, w, h, 신뢰도) 클래스 확률 C개(한 벌) v1: 7×7×(2·5+20) = 7×7×30 후보 98개 → 신뢰도 문턱 → NMS 약점: 한 칸에 중심이 몰린 작은 물체들 (새 떼, 라켓과 손, 멀리 있는 공) 뒤 세대: 여러 해상도에서 예측(v3), 앵커 없이(YOLOX), NMS 없이(v10)
図:画像を7×7のグリッドに分割し、物体の中心が落ちたセルがその物体に責任を持つYOLOの出力構造

YOLOv1のルールは次のとおりです。

やってみる:どのセルが責任を持つか

448pxの画像において、1つのセルは64pxです。卓球のシーンに当てはめてみました(実測)。

선수 몸 중심  (200,260) → 칸 (행 4, 열 3)
공 중심       (330,95)  → 칸 (행 1, 열 5)
라켓 중심     (215,270) → 칸 (행 4, 열 3)   ← 선수와 같은 칸

選手とラケットの中心が同じセルに落ちました。そのセルはクラス確率を 1セットしか出力しないため、「人物」と「ラケット」が競合します。論文でも1つのセルが制限された数の物体しか予測できないことを弱点として挙げ、小鳥の群れのように小さな物体が密集している場合に弱いと記載されています。

損失の設計

損失はボックス座標・信頼度・クラスの誤差平方和ですが、いくつかの調整にその「理由」が表れています。

結果(論文)

モデル VOC 2007 mAP 速度 条件
YOLO 63.4 45fps デスクトップGPU、バッチなし
Fast YOLO 52.7 155fps 〃

同論文のエラー分析において、YOLOは 位置誤差が最大の誤りタイプでした。代わりに背景を物体と勘違いすることはFast R-CNNよりも少なく、両者を組み合わせるとVOC 2012で75.0(Fast R-CNN単体では71.8)に向上しました。画像全体を一度に見るため文脈のミスは少なく、グリッドが粗いため位置の正確さがやや劣るということです。

2. 系譜:アンカー、マルチスケール、アンカーなし、NMSなし

モデル(年) 変更点 論文の数値(条件)
SSD(2016) 多様な解像度の特徴マップごとにデフォルトボックスで予測 SSD300 VOC 2007 74.3%、59fps(デスクトップGPU、バッチ8)
YOLOv2(2017) アンカーの導入。サイズを手動で決めず、学習ボックスを k-means法でクラスタリングして5個に 416×416でVOC 2007 76.8、67fps(デスクトップGPU)
YOLOv3(2018) 3つの解像度で予測(FPNに類似)、アンカーは解像度ごとに3個ずつ計9個 COCO AP50 57.9、51ms(608×608、デスクトップGPU)対 RetinaNet 57.5、198ms
YOLOX(2021) アンカーなし、分類と位置のヘッド分離、正解割り当て(SimOTA) YOLOX-L COCO 50.0 AP、68.9fps(データセンターGPU、FP16、640×640)
YOLOv10(2024) NMSなし:学習時は1対多と1対1のヘッドを併用、推論時は1対1のみを使用 v10-S 46.3 AP 2.49ms 対 RT-DETR-R18 46.5 AP 4.58ms(推論用データセンターGPU、TensorRT FP16)

設計上の理由をいくつか挙げると次のようになります。

3. やってみる:AP計算

検出論文の数値のほとんどは AP(Average Precision)です。正解のボールが5個あるシーンにおいて、検出器が8個のボックスを出力したとします。スコアの高い順に正解とIoU 0.5以上で紐付けられれば正解(1)、そうでなければ不正解(0)となります(実測)。

점수 순 맞음/틀림: [1, 1, 0, 1, 0, 1, 0, 0]
재현율: [0.2, 0.4, 0.4, 0.6, 0.6, 0.8, 0.8, 0.8]
정밀도: [1.0, 1.0, 0.67, 0.75, 0.6, 0.67, 0.57, 0.5]
AP = 0.683

APは、再現率(見つけた正解の割合)を横軸、適合率(出力したもののうち正解だった割合)を縦軸にした曲線の面積です。適合率を「右側から見た最大値」でならして計算します(すべての点での補間)。正解5個のうち4個しか見つけられなかったため、再現率は0.8でストップし、それ以降の面積は0になります。

同じ8個のボックスであっても、 スコアの順序が変わるとAPは変動します。

スコアの順序 AP
正解の4つが前 [1,1,1,1,0,0,0,0] 0.800
元の順序 0.683
正解の4つが後 [0,0,0,0,1,1,1,1] 0.400

APは「正解できたか」だけでなく、「正解した対象に高いスコアを与えたか」まで採点します。信頼度スコアがめちゃくちゃな検出器は、同じボックスを出力してもAPが低くなります。論文のAPを読む際に留意すべき点です。

4. リアルタイム性とは

「リアルタイム」は相対的な言葉です。卓球の映像が1秒あたり60フレームである場合、1フレームに使える時間は16.7msであり、その中にデコード・前処理・モデル・後処理・判定のすべてが収まらなければなりません。論文のfpsを読むときは、条件を合わせて見る必要があります。

TT Scoreのボール検出(BlurBall)は、サーバーGPU上の1ウィンドウ(3フレーム)あたり10.5msでした(実測、TT Scoreモデル解剖編2)。「何fps」であるかよりも、「1フレームあたり何ms、どこまで含んでいるか」で記載してこそ比較が可能になります。

5. ライセンス:AGPLがWebサービスにおいて意味するもの

YOLOという名称は複数のリポジトリで共有されています。ライセンスはリポジトリごとに異なります(各LICENSEファイル、2026-10-13確認)。

リポジトリ ライセンス
Darknet(元祖YOLO) 「YOLO LICENSE」 — 実質的に何を行っても構わないパブリックドメインに近い条件
YOLOX(Megvii) Apache-2.0
RT-DETR(公式) Apache-2.0
Ultralyticsパッケージ(YOLOv8・YOLO11など、YOLO-World・YOLOEの移植を含む) AGPL-3.0 または有料の企業向けライセンス
YOLOv10(公式、Ultralyticsコードベース) AGPL-3.0

AGPL-3.0はGPLに ネットワーク条項(第13条)を追加したものです。プログラムを改変し、ユーザーがネットワーク経由でそのプログラムとインタラクションを行うようにした場合、そのユーザーに対して改変版のソースコードを入手する方法を提供しなければなりません。ソフトウェアを配布せず、サーバー上で動かすだけでも義務が生じる点がGPLとは異なります。Ultralyticsは公式の案内ページにおいて、AGPLの公開義務なしに使用するには(商用製品、SaaS・API、組み込み機器、商用利用するファインチューニングモデルなど)企業向けライセンスが必要であると説明しており、学習済みモデルも原則としてAGPL-3.0に従うという立場をとっています。最後の主張(重みデータにもAGPLが及ぶか)が法的にどこまで成立するのかは、本記事では判断できません。ただし、企業がそのように主張しているという事実自体がすでにリスク要因です。

TT ScoreはWebサービスです。そのため、ボール検出にはコードがMITであるWASB・BlurBallを、卓球台にはApache-2.0であるSAM 2.1を選択し、YOLO系のセグメンテーションモデルはAGPLの条件があるため候補から外しました(TT Scoreモデル解剖編1)。モデルを選ぶ際に、精度や速度と同等の重要度でライセンスを確認する理由がここにあります。

6. 限界と私たちのプロジェクト

次の記事は、畳み込みを捨てたVision Transformerです。

TTの一言。 同じ8つのボックスなのに、スコアの順序を変えただけでAPが0.8から0.4になりました。正解した対象に自信を持って高いスコアを与えることも実力です。

参考文献

ログインするといいねできます

コメント

まだコメントはありません。

ログインするとコメントできます