
2026/06/06 15:02
OpenCV 5 が登場:コンピュータービジョン分野における数年に一度の大きな飛躍
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
OpenCV 5 は、コンピュータビジョン分野において画期的な歴史的リリースであり、高度な人工知能をワークフローに直接統合するとともに、大規模な基盤の刷新を実行しています。このアップデートの核となるのは、動的形状、量子化モデル(QDQ)、およびアテンションや MatMul といったフューズされた演算をサポートする全く新しいグラフベースの深層学習ネットワーク(DNN)エンジンです。この新エンジンは、OpenCV 4.x では約 22% に留まっていた ONNX オペレータの対応度を、OpenCV 5 では 80% 超へと飛躍的に向上させ、標準的な AI モデルを最小限の変換で即座に実行可能にします。Intel ハードウェア上のベンチマーク結果は、大幅なレイテンシ低減を示しており、YOLOv8n(11.5% の高速化)、OWLv2(36.6% の高速化)、XFeat(1.25 倍の高速化)といった特定モデルでも性能向上が確認されました。
このライブラリは現在、内蔵のトークナイザーと KV キャッシュを用いて、大規模言語モデル(LLMs)およびビジョン・ランゲージモデル(VLMs)を DNN モジュール内でネイティブに実行することを可能にし、外部ツールの必要性を排除しました。多種多様なハードウェアにおける速度確保のために再設計されたハードウェア抽象化レイヤー(HAL)は、強力なグラフィックスプロセッサを自動的に活用し、Intel、Arm、Qualcomm、RISC-V 向けの実装向けの特定のバックエンドに加え、Universal Intrinsics 2.0 を通じて FP16 および BF16 といった新しいデータタイプをサポートします。さらに、OpenCV 5 は 0D/1D テンソルのネイティブサポート、NumPy 2.x との完全互換性、名前付き引数などのモダンな Python スタンダードへの対応を導入し、従来の C API を非推奨としています。
calib3d モジュールは「3d」、「calib」、「stereo」の 3 つに細分化され、マルチカメラキャリブレーションや ALIKED、DISK などのモダンなアルゴリズムを搭載しています。
開発は非営利団体の OpenCV.org が統括し、主要パートナーからのサポートを受けています。pip 版は 6 月 8 日にリリースが予定されています。今回のアップデートには、Sphinx と Doxygen を用いた文書の大規模な再構築も含まれており、永続的なナビゲーションペイン、豊富なチュートリアル、C++ に並ぶ Python シグネチャ等特色を備え、研究者および開発者のデプロイメントパイプラインの簡素化を実現します。
本文
OpenCV 5 リリース概要
OpenCV 5 は、OpenCV の歴史において最も重要なリリースの一つです。20 年以上にわたる間、このライブラリはコンピュータビジョン研究、ロボティクス、組み込みシステム、AI 応用、産業検査、AR/VR、医療画像処理など多様な分野の基盤となってきました。現在 GitHub で 86,000 以上のスターを獲得し、1 日あたり約 100 万回のインストールが行われており、世界最大級のコンピュータビジョンアルゴリズムコレクションの一つです。
OpenCV 5 は単なる進歩ではなく、大きな基盤の現代化を築いています。新しい DNN エンジン、強化された ONNX サポート、ハードウェアアクセラレーション機能の向上、優れた Python 統合、新たなデータ型、拡張された 3D ビジョン能力、改善されたドキュメントなどが導入されます。
目次
- なぜ OpenCV 5 か
- 現在の OpenCV の立ち位置
- OpenCV 5 が解決しようとした課題
- 主役:新しい DNN エンジン
- 速度比較:OpenCV 5 vs ONNX Runtime
- すぐに実行できるモデルたち
- OpenCV 内部で動作する LLM と VLM
- LaMa を使った画像修復と拡散モデル
- 深層学習方式の現代型特徴量一致技術
- 高速で軽量な、より現代的なコア機能
- 無料で使えるハードウェアアクセラレーション
- より高性能な 3D ビジョン
- 使いやすいドキュメント
- OpenCV 5.0 に含まれる機能一覧
- 次なるステップ:GPU 対応と非 CPU HAL
- 試して参加しましょう
なぜ OpenCV 5 か?
OpenCV 4 から今日に至るまで、分野は劇的に変化しました。最新のアプリケーションでは古典的な技術と、深層学習、トランスフォーマー、大規模ビジョンモデルが組み合わさり、エッジデバイスや異種ハードウェアでの展開が求められています。開発者は、ノートパソコンから ARM チップ、専用アクセラレーターまで幅広い環境でコードを効率的に動かしたいと考えています。
OpenCV 5 はこの現実に対応するために設計されました。目指したのは明確です:
- コア機能を高速化・小型化
- 言語サポートの改善
- 陳腐な API の整理
- DNN エンジンの現代化
- 新しいハードウェアアクセラレーションパスのサポート
- ドキュメントを使いやすくする
OpenCV を長く使っている方々は、ライブラリは強いものの、深層学習分野でモデル対応に追いついていないと感じた経験があるでしょう。ONNX エクスポートが失敗したり、未知の演算子エラーが出たりすることもありました。
OpenCV 5 の pip パッケージは 6 月 8 日にリリースされます。
現在の OpenCV の立ち位置
OpenCV はニッチなツールではなく、コンピュータビジョン世界の巨大な「水道管(インフラ)」のような存在です。GitHub、PyPI、組み込みビジョンコミュニティなどでの利用が広く、生産システムに深く組み込まれています。そのため、変更は慎重に行う必要があります。
開発主体は非営利組織 OpenCV.org です。サポートには以下の組織が関わっています:
- Big Vision: ライブラリと OpenCV University の支援
- OpenCV China: RISC-V と組み込み分野の主要な力
- OpenCV.ai: 技術的支援
OpenCV 5 が解決しようとした課題
チームは明確な不満点リストを作成しました。主な改善点は以下の通りです:
- 言語サポートの改善: モダンな Python、刷新されたバインディング、命名引数の採用。
- 高速で小型のコア: コード緊密化、レガシー C API の廃止、軽量ビルド。
- クリーンなハードウェアアクセラレーション: ベンダー固有の最適化カーネルをプラグイン可能にし、複雑なコンディショナルコードから解放。
- 清潔な API: 正しく実装されたスカラー/テンソル、ネイティブ FP16/BF16サポート、ログ機能の改善。
- 次世代 DNN エンジン: グラフベース、融合処理、広範な ONNX サポート、トランスフォーマー/VLM/LLM 対応。
- より優れた 3D ビジョン: ChArUco、マルチカメラ較正、可視化機能の向上。
- より良いドキュメント: ナビゲーションしやすく、現代的な表示。
主役:新しい DNN エンジン
今回のリリース最大の指標は「ONNX オペレータ対応率(カバー率)」です。OpenCV 4.x では約 **22%**でしたが、OpenCV 5 では 80% を超えるようになりました。
古いエンジンでは動的形状やグラフ構造に制限がありましたが、新しいエンジンはモデルを「グラフ」として理解し、型付けされた操作を分析します。これにより以下の機能が可能になりました:
- if/while ループ子グラフ: 制御フローを持つモデルの実行。
- シンボリックおよび動的な形状: 事前に固定した形状の制約からの解放。
- 量子化 (QDQ) グラフ: 量子化モデルの実行。
- Attention および MatMul フージョン: FlashAttention スタイルによる高速化。
比較:古典的エンジン (4.x) vs. 新しいエンジン (5.x)
| 機能 | 古典的エンジン (4.x) | 新しいエンジン (5.x) |
|---|---|---|
| モデルの表現 | 各層に 1 つの構造体、順序処理 | エンジンが分析できる型付けされたグラフ |
| 形状 (Shapes) | 静的のみ対応 | シンボリック、動的に対応 |
| 子グラフ | サポートなし | if と while がサポートされる |
| フージョン (Fusion) | 限定的 | QDQ, BatchNorm, Attention など多数対応 |
| メモリ管理 | 各層ごとの再利用 | 統一バッファプール採用 |
これにより、より多くのモデルが読み込み可能になり、動作し、高速化されています。
比較:OpenCV 5 DNN vs ONNX Runtime (ベンチマーク結果)
ハードウェア:Intel Core i9-14900KS, Ubuntu 24.04 LTS。差は OpenCV 5 の方が ONNX Runtime より高い速度です。
| モデル | OpenCV 5 DNN (ms) | ONNX Runtime (ms) | 高速化率 |
|---|---|---|---|
| XFeat | 6.56 | 8.61 | 23.9% |
| YOLOv8n | 10.91 | 12.15 | 11.5% |
| YOLOX-S | 23.46 | 25.16 | 7.24% |
| DINOv2 small | 23.78 | 29.58 | 24.4% |
| OWLv2 | 1,090 | 1,489 | 36.6% |
| BiRefNet | 7,178 | 9,503 | 24.32% |
3 つのエンジン、1 つの API
アップグレードでコードが壊れることを防ぎつつ新機能を導入するために、OpenCV 5 は同じ DNN API の背後に複数のエンジンを用意しています。
readNet* 関数で使用するエンジンタイプを指定できます。
| 値 | 意味 |
|---|---|
| 旧来の 4.x エンジン。非 CPU バックエンド(CUDA、OpenVINO など)用。 |
| 新しいグラフエンジン。フージョン・動的形状対応。現時点では CPU 専用です。 |
| デフォルト値。新規エンジンを試し、失敗したら古典的エンジンへフォールバック。 |
| ONNX Runtime ラッパー。 のビルドで利用可能。 |
ENGINE_AUTO がデフォルトのため、大部分のコードは変更不要です。特定のバックエンド(CUDA など)を使用したい場合は明示的に古典的エンジンを選択するか、サンプルコードのようにコマンドライン引数で指定します。
Python 実装例
import cv2 as cv # デフォルト動作 (ENGINE_AUTO): 新しいエンジン優先、失敗時は旧エンジンへフォールバック net = cv.dnn.readNetFromONNX("model.onnx") # または、明示的に新しいグラフエンジンを指定することも可能(CPU 限定) """ net = cv.dnn.readNetFromONNX("model.onnx", engine=cv.dnn.ENGINE_NEW) """ net.setInput(blob) out = net.forward()
C++ 実装例
#include <opencv2/dnn.hpp> using namespace cv; // デフォルト動作 (ENGINE_AUTO) dnn::Net net = dnn::readNetFromONNX("model.onnx"); // 明示的に新しいグラフエンジン指定(CPU 限定) /* dnn::Net netNew = dnn::readNetFromONNX("model.onnx", dnn::ENGINE_NEW); */ net.setInput(blob); Mat out = net.forward();
すぐに実行できるモデルたち
OpenCV 5 の ONNX 対応向上により、検出、セグメンテーション、バックボーン、生成モデルなど幅広いラインアップが動作します。これにより、プロジェクトの依存関係リストからフレームワークを削減できます。
OpenCV 内部で動作する LLM と VLM
OpenCV 5 は別途ランタイムを用意することなく、**大きな言語モデル(LLM)およびビジョン・言語モデル(VLM)**を直接 DNN モジュール内で実行できます。
これを実現するために以下の機能が追加されました:
- ネイティブトークナイザー: ライブラリにビルトインされたトークン化処理(Qwen 2.5, Gemma 3, GPT-4 等対応)。
- KV キャッシュ: オートレグレス推論のためのキャッシュ。
これにより、画像を入力しテキストを出力するビジョン・言語パイプライン(例:PaliGemma)が可能になります。実験結果では、OpenCV エンジンによる出力と ONNX Runtime がトークンごとに一致しました。
目的: 全体をフレームワークとして追加せず、キャプション生成や OCR 後処理など、特定のタスクに対して小規模な LLM/VLM をアクセス可能なビジョンパイプラインを提供することです。
LaMa を使った画像修復と拡散モデル
物体除去における LaMa の実装は新しい DNN エンジンによる強力なデモの一つです。外部ランタイム不要で、以下のフローを実現します:
- 入力画像: 編集対象の写真。
- マスク: 除去する領域。
- フォワードパス:
一通り。Net::forward - 出力: 穴が埋められ、エッジが合成された画像。
コード例
import cv2 as cv net = cv.dnn.readNetFromONNX("lama.onnx") blob = cv.dnn.blobFromImages([img, mask], scalefactor=1/255.) net.setInput(blob) out = net.forward() # 修復された画像
詳細は
samples/dnn/inpainting.py で確認可能です。さらに拡散ベースの修復も対応 (samples/dnn/ldm_inpainting.py)。
深層学習方式の現代型特徴量一致技術
OpenCV の伝統的な任務である「特徴量の検出と一致」分野に、現代的な学習済みアプローチが導入されました。
新しい Features モジュール (Features2D
)
Features2D
: CNN ベースの検出・記述子(SIFT/ORB への置き換え)。cv::ALIKED
: 強化学習で訓練された特徴量(広視野・低テクスチャ対応)。cv::DISK
: アテンションベースの Matcher(ステッチング向け)。cv::LightGlueMatcher
従来の SIFT, ORB などは
opencv_contrib に移行されつつ、引き続き利用可能です。ステッチングモジュール自体もアップグレードされ、追加コードなしに学習済みマッチングを活用できます。
高速で軽量な、より現代的なコア機能
Deep Learning 以外のコア機能も大幅チューンアップされています。
- 新しいデータ型: FP16 (
), BF16 (CV_16F
), bool, int64 などを追加。変換オーバーヘッド削減。CV_16BF - N-Dimensional およびスカラーサポート:
が 0D (スカラー) や 1D アレイを表現可能に。ブロードキャスト機能導入でreshape コードが簡略化。cv::Mat - パフォーマンス向上: 数学的ワークロードにおいて最大 2 倍の高速化。
- ランゲージクリーンアップ:
- C++: レガシー C API の非推奨化、C++17 が最小標準(後続は C++20)。
- Python: NumPy 2.x 対応、命名引数の採用(
など)。threshold=0.5
無料で使えるハードウェアアクセラレーション
再設計された**HAL (Hardware Abstraction Layer)**により、すべてのコア関数が単一のクリーンなコントラクト経由で実行されます。ベンダーは独自に最適化したカーネルをプラグイン可能になり、コードを変更せずとも最適なパスが選択されます。
対応する加速パス
- Intel IPPICV: x86/x64 SSE/AVX-512 対応(ICV サブセット含む)。
- Arm KleidiCV: AArch64 NEON/SVE/SME 対応(AWS Graviton, Cortex-A 検証済み)。
- Qualcomm FastCV: Snapdragon Hexagon DSP/NPU 対応。
- RISC-V Vector (RVV): スケーラブルなベクトルサポート。
これらすべての基盤にはUniversal Intrinsics 2.0があり、1 つの実装で多数のアーキテクチャをカバーします。特に ARM 操作において 3-4 倍の高速化が報告されています。
より高性能な 3D ビジョン
旧来の巨大
calib3d モジュールは、以下の 3 つに焦点を絞ったモジュールへと再構築されました:
- 3d: 基本幾何学、SLAM、ICP アルゴリズムなど。
- calib: カメラ較正(シングル・マルチカメラ)。
- stereo: ステレオ深度計測。
ハイライト機能
- マルチカメラ較正:
やロボティクス用の較正ツール。calibrateMultiview - 点雲およびメッシュ I/O:
,load/savePointCloud
(OBJ, PLY)。load/saveMesh - 高密度 RGB-D 融合: TSDF, HashTSDF ボリューム、視覚測位。
- 頑健な推定: USAC フレームワーク(MAGSAC 含む)、RANSAC フィッティング。
使いやすいドキュメント
ドキュメントは Sphinx + Doxygen パイプラインへ移行し、よりモダンになりました。
- 左ハンドナビゲーションペインの解消
- API リファレンスにチュートリアルが隣接
- Python シグネチャと C++ が並列表示
- pre-commit によるリンクチェッカー統合
OpenCV 5.0 に含まれる機能一覧
| 機能 | OpenCV 5.0 | 4.x と比較 |
|---|---|---|
| ONNX カバー率 | **80%**以上 | ~22% (大きなジャンプ) |
| DNN エンジン | グラフエンジン、フージョン、バッファプール | 静的形状のみ |
| オプションバックエンド | 経由で ONNX Runtime 利用可能 | ネイティブのみ |
| LLM / VLM サポート | ネイティブ対応 (トークナイザー+KV キャッシュ) | 不可 |
| 動的形状 ONNX | ネイティブ対応(形状推論エンジン) | 制限あり/バグ多発 |
| 0D / 1D テンソル | がスカラー・1D 対応 | 少なくとも 2D 必須 |
| データ型 | FP16, BF16, bool, int64 追加 | 主に FP32/INT8/UINT8 |
リリース予定: 2026 年 6 月(CVPR 2026 と同期)。
次なるステップ:GPU 対応と非 CPU HAL
新 DNN エンジンへのネイティブ GPU サポート
現在はグラフエンジンが CPU に最適化されています。将来的には、ネイティブエンジン自体に GPU 加速が実装される予定です。型付けされたオペレータやグラフベース設計を活用し、CPU 依存から解放され、GPU でインテリジェントなスケジューリングを行います。
加速処理用の非 CPU HAL
モデルだけでなく、モデルの前後処理(リサイズ、正規化など)も同じアクセラレーター上で動作させます。これによりデータのコピーオーバーヘッドがなくなり、推論ボトルネックを解消できます。ロードマップを通じてこれらの機能が発展していく予定です。
試して参加しましょう
OpenCV はコミュニティプロジェクトです。以下のリンクから最新情報を入手してください:
- コード取得: github.com/opencv/opencv/tree/5.x
- Wiki: github.com/opencv/opencv/wiki/OpenCV-5
- ドキュメント: docs.opencv.org
- ニュース・ダウンロード: opencv.org
- 貢献:
タグのイシューへの参加や GSoC など。help-wanted
結論
OpenCV 5 は、DNN エンジンの再構築による対応率向上と新機能に加え、高速化されたコア、クリーンな API、透明なハードウェアアクセラレーション、改善されたドキュメントを備えています。互換性を重視した段階的な移行により、既存ユーザーの置き去りにならずに現代化が実現されています。
最新の OpenCV が読み込めないモデルを持っていたら、このリリースは再検討すべきチャンスです。ぜひ 5.x ブランチを試して進歩を確認してください。