ディスカッション (11件)
ついに待ちに待ったOpenCV 5が公開されました。今回のアップデートはここ数年で最大級の飛躍となっており、コンピュータビジョン開発の現場に大きなインパクトを与える内容になっています。より高度なAIモデルとの連携やパフォーマンスの最適化など、エンジニアにとって見逃せない変更点が盛りだくさんです。
一つ、実用面で知っておくべきポイントがあるね。新しいエンジンは今のところCPUのみ対応だから、CUDAやOpenVINO(setPreferableBackendやsetPreferableTargetを使う場合)のようなCPU以外のバックエンドやターゲットを選択するなら、従来通りのエンジンを使うのがいいよ。
つまり、パフォーマンスが向上する余地はまだあるってことだ!
パフォーマンスはかなり改善されたよ。Intel i7第11世代CPUでYOLOv8のミディアムセグメンテーションモデルを試してみたんだけど、同じコードでこれくらい違った。
OpenCV 4.11 : ~255ms
OpenCV 5.0.0 : ~185ms
数年前、商用Android SDKでOpenCVを使っていたんだ(今も使われているかもしれないけどね)。iOSならその手の「需要」がほとんど標準で揃っていたのに対して、AndroidやFirebase、Jetpackスイートにはなかったからさ。SDKに組み込んだのは自分だった。いろいろとできることはあったけど、Android開発者としては(CVやC/C++の経験はほぼゼロだったし)、ドキュメントやコミュニティが足りないと感じてた。SDKに不要な部分を削るのさえ苦労したし、速度面での問題も大きかった。ライブラリを(モバイルで)使いたいだけの人にとって、多くのことが専門的で難解に感じられたんだ。そんな必要はなかったはずなのに。当時はLLMがまだ発展途上で、まともに使えるレベルじゃなかったのが残念だよ。今ならAIやLLMが最高の解決策になっただろうね。その分野の専門家じゃないプログラマーでも、ツールのポテンシャルをうまく引き出せるようになっただろうから。
OpenCVの何がいいって、画像や動画を読み込むライブラリとして未だに最強なところだよ。高度なコンピュータビジョン機能は一度も使ったことがないけど、最近アートプロジェクトで動画ファイルを読み込んでピクセルをいじらなきゃいけなかった時も、OpenCVならたった4行で済んじゃった。
良いリリースだけど、なぜONNXエンジンの開発にそこまで時間を割くのか少し疑問かな。ONNXRuntime、CoreAI、ExecuTorch、LiteRTと競合するには、OpenCV側に十分なリソースや資金力があるとは思えないし。
ONNXRuntimeのオプションが追加されたのは嬉しい。むしろcv.dnnは、そういった各バックエンド(ONNXRuntime、ExecuTorch、LiteRT、CoreAI)の統一ラッパーに徹して、その周辺ツール(パフォーマンス計測やモデルダウンロードなど)を充実させてくれた方がいいかも。Transformers(.js)のようなアプローチの方が自分には合っている気がする。
あとは、モバイル向けのカメラI/O(デバイス・フォーマット検出、手動設定、深度マップ対応など)や、異なるバックエンド(skia, webgpu)を扱えるモバイル対応のHighguiを充実させてほしいね。
AIが書いたリリース記事って感じだね、バレバレだよ...
2026年にコンピュータビジョンの実用的な側面を学ぶにはどうすればいいかな?
論文の内容や数学的な背景を理解したいんじゃなくて、システムを本番環境に載せる方法を知りたいんだ。例えば物体検知とか、単一のPCで20台のカメラを並列処理させる方法とか、特定のタスクに対するハードウェアの選定方法とかさ。
何かアドバイスある?
昔、自力でパノラマ写真の合成に挑戦して大失敗したのを覚えてるけど、OpenCVにはそれが最初から組み込まれてるんだよね(笑)。自分も結構OpenCVの機能を使っていて、自動ズームやフォーカス調整をするメカニカルレンズシステムのラプラス分散処理や、大まかな色セグメンテーション用の輪郭抽出などでお世話になったよ。
それは素晴らしい。OpenCVは、どんなフォーマット(webpやavif、heicなどの新しいものを含む)であれ、アップロードされた写真からサムネイルを生成するようなタスクのセットアップがすごく簡単でスムーズだった。
ウクライナとロシアの戦場で、これらのモデルが何人を殺したのか気になるところだね。