6月5日、Abhishek Gola氏とGursimar Singh氏が「OpenCV 5 Is Here: The Biggest Leap in Years for Computer Vision」と題した記事を公開した。
OpenCV史上最大の進化、ONNX対応が22%から80%に大幅向上
OpenCV 5の最も重要な変更点は、ONNX(Open Neural Network Exchange)のオペレータサポート率が22%から80%以上に飛躍的に向上したことだ。これまでOpenCVで現代的なモデルを読み込もうとしてエラーに悩まされた経験があるエンジニアなら、この数字がいかに画期的かを理解できるだろう。
OpenCVは20年以上にわたってコンピュータビジョンのデファクトスタンダードとして君臨してきたが、近年はPyTorchやONNX Runtimeなどの新興フレームワークに推論性能で後れを取っていた。1日100万回以上インストールされるこのライブラリが、ついに本格的な現代化に踏み切った形だ。

この劇的な改善を支えるのが、完全に再構築された新しいDNNエンジンだ。従来の4.xエンジンがレイヤーを順次処理する単純な仕組みだったのに対し、5.xエンジンは型付き演算グラフを基盤とし、適切な形状推論、定数畳み込み、オペレータ融合を実装している。
| 機能 | 旧エンジン(4.x) | 新エンジン(5.x) |
|---|---|---|
| モデル表現 | レイヤーごとの構造体を順次処理 | エンジンが解析可能な型付きグラフ |
| 形状処理 | 静的のみ | シンボリック・動的形状対応 |
| サブグラフ | 未対応 | IfとLoopに対応 |
| 融合 | 限定的 | QDQ、BatchNorm、Attention、MatMulなど |
特筆すべきはアテンション融合の実装だ。トランスフォーマーの核となる「MatMul → Softmax → MatMul」パターンを自動認識し、FlashAttentionスタイルの単一融合オペレーションに最適化する。この最適化はコード変更なしに自動適用される。
3つのエンジンを統一APIで選択可能
新機能への移行リスクを軽減するため、OpenCV 5では3つのエンジンを同一API経由で選択できる仕組みを導入した。
import cv2 as cv
# デフォルト(ENGINE_AUTO):新エンジン優先、失敗時は旧エンジンに自動フォールバック
net = cv.dnn.readNetFromONNX("model.onnx")
# 新グラフエンジンを明示的に指定
net = cv.dnn.readNetFromONNX("model.onnx", engine=cv.dnn.ENGINE_NEW)
net.setInput(blob)
out = net.forward()
ENGINE_AUTOがデフォルトのため、既存コードの多くは変更不要だ。CUDAやOpenVINOなど非CPUバックエンドを使用する場合は、自動的に旧エンジン(ENGINE_CLASSIC)が選択される。
ONNX Runtimeと互角以上のパフォーマンス
新エンジンのベンチマーク結果では、多くのモデルでONNX Runtimeを上回る性能を記録した。
| モデル | OpenCV 5(ms) | ONNX Runtime(ms) | 性能向上 |
|---|---|---|---|
| XFeat | 6.56 | 8.61 | 31.4%高速 |
| YOLOv8n | 10.9 | 12.15 | 11.5%高速 |
| YOLO26n | 11.7 | 16.5 | 41.0%高速 |
| DINOv2 small | 23.78 | 29.58 | 24.4%高速 |
| OWLv2 | 1,090 | 1,489 | 36.6%高速 |
テスト環境:Intel Core i9-14900KS、Ubuntu 24.04 LTS
リアルタイム検出器からOWLv2のような大規模open-vocabularyモデルまで、幅広いモデルで一貫した性能向上を実現している。特にエッジデバイスでの推論が重要な産業用検査や組み込みシステムにとって、この性能向上は大きな意味を持つ。
LLMとVLMがOpenCV内で直接実行可能
最も驚くべき新機能の一つが、大規模言語モデル(LLM)と視覚言語モデル(VLM)の直接実行対応だ。従来はHugging Face TransformersやvLLMなど専用ライブラリが必要だった分野に、OpenCVが本格参入した形である。
OpenCV 5では以下の要素を新たに実装した:
- ネイティブトークナイザー:ライブラリに直接組み込み
- KVキャッシュ:自己回帰的デコーディングでの効率的なトークン生成
これにより、Qwen 2.5、Gemma 3、PaliGemmaなどのモデルを別ランタイムなしで実行できる。
モダンなコアライブラリへの刷新
新DNNエンジン以外でも、コアライブラリ全体が大幅にモダン化された:
- レガシーC APIの削除によるコードベースの軽量化
- FP16/BF16のネイティブサポート
- 適切な0D/1D テンソル対応
- 改良されたPython統合(名前付き引数サポートなど)
- クリーンなハードウェア加速レイヤー
20年間蓄積されたレガシーコードの大胆な整理により、保守性とパフォーマンスの両面で大幅な改善が図られている。
3D視覚機能の強化
3D関連機能も大幅に改善された:
- ChArUcoマーカーサポート:チェスボードとArUcoマーカーを組み合わせた高精度キャリブレーション手法
- マルチカメラキャリブレーション
- 改良された視覚化機能
AR/VR分野や3Dスキャニングアプリケーションでの活用が期待される。
新ドキュメンテーション
従来のOpenCVドキュメントの使いにくさを解決するため、モダンで読みやすいドキュメントに完全刷新された。GitHub上で86,000以上のスターを集めるプロジェクトにふさわしい、開発者体験の向上が図られている。
リリース情報
OpenCV 5のpipバージョンは6月8日にリリース予定だ。産業用検査、AR/VR、医療画像処理、自動運転など幅広い分野での活用が期待される。特に、これまでONNX Runtimeや専用推論ライブラリを併用していたプロジェクトにとって、OpenCV単体での統合的な開発が可能になる意義は大きい。
詳細はOpenCV 5 Is Here: The Biggest Leap in Years for Computer Visionを参照していただきたい。