D-FINE ONNX で机上の物体検出を試す
こんにちは、皆さん。
机の上にあるものを、AI がどこまで自然に見分けられるのか気になりませんか?わたしは、視覚を持つエージェントを作るなら、まずこういう日常的なシーンを扱えるかが大事だと思っています。
さて、今日は D-FINE の ONNX モデルを使い、机上の一般物体を検出して、検出結果と CPU での推論速度を確認しました。
今回検証する内容
D-FINE は、画像の中から物体の種類と位置を見つける object detection(物体検出)モデルです。今回は ONNX 版を使いました。ONNX は、学習済みモデルをいろいろな実行環境で動かしやすくするための形式です。
検証では、laptop、cell phone、cup、bottle、book、chair などが写る 1 枚の画像を入力し、次の点を確認します。
- COCO 事前学習済みモデルで、机上の物体をどの程度検出できるか
- 640x640 入力、CPU 実行時の 1 回あたりの推論時間
- bounding box(物体の位置を囲む四角形)を元画像の座標に戻して描画できるか
対象の lab: kiarina/labs/2026/07/09/dfine-object-detection
検証環境の再現
以下のコマンドで、検証環境を構築して手元で実行できます。mise、uv が必要です。初回実行時にはモデルファイルを Hugging Face からダウンロードするため、インターネット接続も必要です。
git clone --depth 1 --filter=blob:none --sparse \
https://github.com/kiarina/labs.git
cd labs
git sparse-checkout set .gitignore .mise/tasks Makefile mise.toml 2026/07/09/dfine-object-detection
make download-test-assets
mise -C 2026/07/09/dfine-object-detection run
使用したモデルとライセンス
使用したモデルは onnx-community/dfine_s_coco-ONNX です。この ONNX 版は ustc-community/dfine-small-coco を元にした変換版として公開されています。
- ONNX モデル: onnx-community/dfine_s_coco-ONNX
- ベースモデル: ustc-community/dfine-small-coco
- ライセンス: Apache-2.0
- 学習データ: COCO
- 入力サイズ: 640x640
- 実行環境: ONNX Runtime CPUExecutionProvider
lab では、モデルと設定ファイルを固定 revision からダウンロードし、SHA-256 を検証しています。
検証に使用した画像
検証には、机上に laptop、cell phone、cup、bottle、book、chair などが写るように生成した 1536x1024 の画像を使用しました。
検証結果
Mac Studio (Apple M4 Max) で実行した結果は以下のとおりです。score は「そのラベルである確信度」のような値で、今回は 0.5 以上の検出だけを採用しました。
--- Input ---
Image: /Users/kiarina/src/github.com/kiarina/labs/assets/jpg/object_detection_desk_scene.png
Resolution: 1536x1024
Threshold: 0.50
--- Detections ---
Rank | Label | Score | BBox xyxy
--------------------------------------------------------
1 | laptop | 0.970 | (177, 116, 910, 690)
2 | cup | 0.965 | (870, 326, 1089, 520)
3 | chair | 0.961 | (5, 80, 543, 446)
4 | bottle | 0.950 | (1122, 74, 1273, 506)
5 | cell phone | 0.947 | (329, 700, 686, 918)
6 | pottedplant | 0.937 | (1302, 2, 1535, 466)
7 | book | 0.916 | (930, 501, 1521, 838)
8 | book | 0.893 | (878, 614, 1519, 962)
9 | diningtable | 0.836 | (0, 240, 1533, 1012)
10 | vase | 0.543 | (1456, 252, 1535, 465)
Detection count: 10
--- Inference Speed Benchmark (Iterations: 20) ---
Average time: 127.60 ms
Min time: 119.11 ms
Max time: 170.92 ms
Std dev: 10.98 ms
bounding box を描画した結果は次の画像です。
結果の考察
専門的なデータは上に載せたとおりですが、簡単に見ると次のようになります。
-
主要な物体はかなり高い score で検出できた
laptop、cup、chair、bottle、cell phone、book は 0.89 以上で検出されました。今回のように物体がはっきり写っていて、重なりが少ない画像では、COCO の一般物体検出モデルとして素直に使えそうです。 -
背景の物体も COCO ラベルとして検出された
植物はpottedplant、鉢の一部はvase、机はdiningtableとして検出されました。これは誤検出というより、COCO のラベル体系に合わせて「近いカテゴリへ割り当てられた」と見るのがよさそうです。 -
CPU では 1 回 120ms 前後
Apple M4 Max の CPU 実行で平均 127.60ms でした。静止画の解析や、低頻度での監視用途なら扱いやすい速度です。一方、動画をリアルタイムに全フレーム処理するには、GPU や推論間隔の調整を考えたくなります。 -
NMS は今回入れていない
NMS は Non-Maximum Suppression の略で、近い位置に重複して出た検出結果を整理する後処理です。今回の画像では大きな問題になっていませんが、複雑な画像では重複検出が残る可能性があります。
検証後の感想
D-FINE の ONNX 版は、かなり素直に使える印象でした。モデルのダウンロード、前処理、ONNX Runtime での推論、元画像座標への戻し、可視化までを短いコードで確認できたのはよかったです。
一方で、今回の検証は 1 枚の生成画像だけです。実写、暗い環境、小さい物体、物体同士の重なりがある画像では結果が変わるはずです。次に試すなら、複数の実写画像での安定性、NMS の有無、GPU 実行時の速度差を見たいです。

