物体検出モデルの定番といえば「YOLOv8」ですが、KerasCV に YOLOv8Detector が追加されたことで、TensorFlow でもYOLOv8が使えるのでは?と考える方は多いはずです。
しかし実際には、KerasCV の YOLOv8Detector はそのままでは推論できません。 この記事では、その理由と、代替手段として最も簡単な Ultralytics YOLOv8 について詳しく解説します。
Ultralyticsとは?
Ultralytics は、YOLO シリーズを継続開発している公式チームによる Python ライブラリです。
- YOLOv5〜YOLOv8 が公式で提供
- COCO で学習済みモデルをそのまま利用可能
- 推論はたった 1 行で完結
- 学習、評価、エクスポートまで統合
このように、Ultralytics YOLOv8 は “公式・完全版” YOLO です。 一方の KerasCV の YOLOv8Detector は “バックボーン互換” のみであり、事情が異なります。
KerasCV の YOLOv8Detector の落とし穴
KerasCV の YOLOv8Detector は便利な API ですが、実は以下の制限があります。
COCO 学習済み YOLOv8 モデルは提供されていない
Ultralytics のような以下のプリセットは存在しません。
"yolov8s_coco"
"yolov8m_coco"
"yolov8l_coco"
そのため KerasCV で次のように呼ぶとエラーになります。
YOLOV8Detector.from_preset("yolo_v8_s_coco")
実際のエラー:
ValueError: Unknown preset identifier.
補足:COCOデータセットとは?
COCO(Common Objects in Context) は、Microsoft が公開している大規模画像データセットで、物体検出・セグメンテーション・キーポイント検出の研究で標準的に使われています。
- 33万枚以上の画像
- 80種類の物体カテゴリ
- 約150万個のバウンディングボックス
- 実世界の「日常シーン」を中心に収集
YOLOシリーズを含む多くの物体検出モデルは、まずこの COCO で学習されており、COCO 学習済みモデルは日常物体への性能が特に安定しているのが特徴です。
利用可能なのは “転移学習用バックボーンのみ”
KerasCV が提供しているプリセットは以下のようなbackboneだけです。
yolo_v8_s_backbone
yolo_v8_m_backbone
yolo_v8_l_backbone
つまり、構造だけで、重み(学習済みパラメータ)が無い状態です。
💡 補足: KerasCV は、COCO の学習済み重みを提供しない代わりに、 ユーザーがこれらのバックボーンを利用して独自に学習(ファインチューニング)を行うことを前提として設計されています。
つまり、そのままでは何も検出できない
バックボーンのみでは学習されていないため、以下の現象が起こります。
- 推論しても何も検出されない
- confidence が 0 付近の出力しか出ない
- COCO クラスを指定しても意味がない
自分で COCO などのデータセットで再学習(fine-tuning)が必要
KerasCV の YOLOv8 が “動かない” 原因まとめ
KerasCV と Ultralytics の比較一覧
| 項目 | KerasCV YOLOv8 | Ultralytics YOLOv8 |
|---|---|---|
| 学習済み COCO モデル | ❌ 無い | ✔ 公式提供 |
| そのまま推論できる? | ❌ できない | ✔ できる(1行) |
| fine-tuning 必須? | ✔ 必須 | ❌ 不要(任意) |
| COCO クラス対応 | ❌ 互換性のみ | ✔ 完全サポート |
Colab で YOLOv8 を確実に動かす方法(Ultralytics 推奨)
以下の 5 行だけで完了します。
!pip install ultralytics
from ultralytics import YOLO
model = YOLO("yolov8s.pt")
results = model("http://images.cocodataset.org/val2017/000000397133.jpg")
results[0].show()
実行結果
Image from COCO dataset (CC BY 4.0)
まとめ:Colab で物体検出を試すなら Ultralytics 一択
KerasCV の YOLOv8Detector は有望ですが、2025年現在、以下の理由で推論に不向きです。
- 学習済み COCO モデルが存在しない
- 提供されるのは “backbone のみ”
- そのままでは何も検出できない
一方の Ultralytics YOLOv8 は、学習済みモデルを使って 1 行で推論ができ、 物体検出を試したい人にとっては最速・最確実の方法です。
今後、KerasCV に COCO 学習済み YOLOv8 モデルが追加されれば状況は変わりますが、 現状では Ultralytics を利用するのがベストです。 補足: KerasCV の YOLOv8 は、転移学習のベースモデルとして非常に優秀であり、独自のデータセットで学習を行う場合に真価を発揮します。


0 件のコメント:
コメントを投稿