1Detect が解く課題
製造ラインや一次産業では、「対象を動画で数えたい」「新しい品種でも短期間で始めたい」というニーズが繰り返されます。 そのたびに大量の正解データを集めるとコストが膨らむため、Detect は 少数の枠指定から運用可能な検出・計数を目指します。
| 主な用途 | コンベア上の個体検出、識別番号付き追跡、通過ラインでの個数集計 |
| 入力 | 現場動画/代表画像+数個の矩形枠 |
| 出力 | 検出枠・追跡 ID・通過カウント(必要に応じて結果動画) |
| 製品内の位置 | デスクトップで独立運用。Search→Analyze の Web 連携パイプラインとは別系統です |
2Few-shot learning(少数例示学習)の考え方
Detect の第一の特長は Few-shot learning です。代表となる1枚(または少数枚)に、数えたい対象の枠を付けるところから始めます。 その枠付き画像を起点にデータ拡張を行い、見た目のばらつきを人工的に増やして軽量検出器を追加学習します。 大量の正解収集を前提にしないことで、現場での導入と品種追加の負担を下げます。
- 新しい品種・形状でも、枠付けから再学習までのサイクルを短く保てる
- 事前に巨大な専用データセットを用意しなくても、現場で始められる
- 精度の鍵は枠の品質と拡張の設計です。誤った枠や重複が多いと追跡も不安定になります
3学習から検知までの全体フロー
代表画像の抽出 → 枠指定 → 追加学習 → 検出/追跡 → 通過カウント
アプリケーション上では、枠付け・学習・検知を一連の画面から実行できます。 製品の Web 連携(Search → Analyze)には Detect を含めず、 現場 PC 完結の独立モジュールとして位置づけています。
4検出エンジンの構成(RF-DETR Nano を軸に開発)
RF-DETR Nano(主軸)と DEIMv2-N(評価候補)は Apache-2.0 で出荷経路に乗れる一方、YOLO11n は AGPL-3.0 のため社内比較・CI 専用にとどめます。
| 役割 | 各フレームで対象の矩形候補を返す(エンジン共通) |
| 主軸 | RF-DETR Nano(Apache-2.0)— DINOv2 バックボーン+DETR 系 Transformer |
| 比較専用 | YOLO11n(Ultralytics, AGPL-3.0)— 社内比較・CI 基準のみ。出荷対象外 |
| 評価中の候補 | DEIMv2-N(Apache-2.0, HGNetv2 バックボーン)— 次のプロトコル候補 |
02少データで賢くする(Data Augmentation)
現場の教師データは数十〜数百枚と限られます。そこで、1枚の正解画像から 左右反転・切り出し・明るさ変更・向きや密集度の変化 をプログラムで自動生成し、 見かけ上のバリエーションを数倍〜数十倍に増やして学習します(Data Augmentation: データ拡張)。
同じ1枚の枠付き画像から反転・明るさ・切り出し・向きや密集の変化を加えた見え方を人工的に増やし、少数の元データでも学習を安定させます。
- 拡張はデータ量の不足を補う手段であり、誤った枠そのものは訂正しません
- 現場で見たことのない背景が大きく違う場合は、追加の枠付けが有効です
6正則化技術(Dropout / DropPath)
少数の枠から学習する以上、モデルが「その数枚の見え方」に張り付いてしまう過学習(overfitting)は常に警戒すべき点です。 データ拡張(前節)が入力側からばらつきを増やす手段だとすれば、Dropout と DropPath はネットワーク内部から過度な依存を断つ手段です。
Dropout はノードを、DropPath は層(経路)まるごとをランダムに無効化します。どちらも学習中の1イテレーションごとに対象が変わり、推論時はすべて有効化されます。
| Dropout | 学習時、層内のノード出力を確率的に0にして無効化する。特定ノード同士の過度な依存(共適応)を防ぎ、汎化性能を高める |
| DropPath(Stochastic Depth) | ノード単位ではなく、残差ブロックの経路そのものを確率的にスキップする。層が深いTransformer系モデルで安定した学習に寄与する |
軸に開発を進めている RF-DETR Nano(DINOv2 バックボーン+DETR 系 Transformer)では、 学習の進み具合に応じて Drop 率を変化させるスケジューラを備え、 DropPath は DINOv2 バックボーン側に適用しています(DETR デコーダ側は通常の Dropout のみ)。 比較専用の YOLO11n や評価中の DEIMv2-N では、これらが主要な正則化手段ではありません。
- 推論時(本番運用時)はこれらの機構は無効化され、全ノード・全経路を使って予測します
- 効果が出るのは追加学習のフェーズであり、検出結果の見え方に直接影響するものではありません
7個体追跡(BotSort)
単発の検出だけでは、同じ個体をフレーム間で二重に数えたり、見失ったりします。 Detect は検出結果を追跡処理(BotSort)に渡し、フレーム間で個体 ID を維持します。
一時的に検出が途切れても、位置や見た目の連続性から同じ追跡IDに再対応付けし、個体を二重に数えるのを防ぎます。
- 検出枠の位置・見た目の類似から対応付けを推定します
- 一時的な隠れや検出抜けに対しても、ID を保持しやすくします
- 追跡は別途巨大な専用学習を要さず、検出結果に対する追跡設定として動作します
8ライン通過カウント
追跡 ID が通過ラインを跨いだ時点で加算し、二重計上を防ぎます
コンベアの流れ方向に仮想ラインを置き、各 ID がラインを跨いだときに加算します。 「検出回数」ではなく「個体の通過」を数えるための設計です。
9デスクトップ運用(オンプレミス)
現場 PC での完結を優先し、Windows 向けデスクトップアプリと推論処理を組み合わせています。 外部クラウドへの常時接続を前提としないため、閉域網やネットワーク制限のある運用にも適します。
| 起動 | 製品同梱の起動スクリプト、またはデスクトップアプリから起動 |
| 実行環境 | モジュール専用の実行環境(他モジュールと無理に統合しない構成) |
10ライセンスと商用方針
社内の比較・CI 検証経路には、AGPL-3.0 の検出実装(Ultralytics YOLO11n)を使う場合があります。 製品導入時は、次のいずれかを選択します。
出荷時のライセンス選定: 許可的ライセンス(RF-DETR Nano / DEIMv2-N)を標準とし、AGPL(YOLO11n)を使う場合はソース提供等の条件を満たします。
- 許可的ライセンスの検出器を用いる(RF-DETR Nano / Apache-2.0。製品版の標準方針)
- AGPL を遵守した提供(YOLO11n をソース提供等の条件付きで使う場合)