ncnnによるYOLOE実装

AI/ML

概要

本リポジトリ「ncnn_yoloe」は、軽量推論エンジンであるncnn上でYOLOEモデルを実装し、物体検出を効率的に実行するための環境を提供しています。YOLOEはYOLOシリーズの一つで、高精度かつ高速な物体検出を目指したモデルです。リポジトリには、モデルのPNNX形式への変換スクリプトや、RepRTAと呼ばれるモダリティ融合モデルの実装、さらにCLIPを利用した画像・テキスト特徴生成のための補助的な機能も含まれています。これにより、モバイルデバイスやリソース制限のある環境でもリアルタイム物体検出が可能となっています。

GitHub

リポジトリの統計情報

  • スター数: 9
  • フォーク数: 2
  • ウォッチャー数: 9
  • コミット数: 3
  • ファイル数: 20
  • メインの言語: Python

主な特徴

  • ncnnフレームワーク上でのYOLOEモデルの高速推論を実現
  • モデル変換ツールによるONNXからPNNX形式への変換をサポート
  • RepRTAを活用したモダリティ融合モデルの実装
  • CLIPモデル連携による画像・テキスト特徴の生成機能を搭載(ランタイム必須ではない)

技術的なポイント

本プロジェクトは、軽量かつ高速な推論を目的として、ncnnというモバイル・組み込み向けの高性能ニューラルネットワーク推論フレームワークをベースにYOLOEモデルを実装しています。YOLOEはYOLOシリーズの最新派生モデルの一つであり、物体検出精度と推論速度のバランスに優れています。

モデルの準備に関しては、リポジトリ内のmodelsディレクトリに既にPNNX形式に変換済みのモデルが含まれており、yoloe_11(l/m/s)_seg_pnnx_rebuild.ncnnが主体モデルとして用意されています。さらに、YOLOEの特徴の一つであるRepRTA(Residual Path Transformer Attention)を実装した融合モデルもyoloe_11(l/m/s)_seg_fuse_model.ncnnとして提供されており、これにより精度向上と推論の効率化が可能です。

モデル変換については、ONNX形式でのエクスポートからPNNX形式への変換をサポートし、export_helper.pyスクリプトによりSAVPEやRepRTAのFuse部分などの特殊な融合演算子も出力できます。PNNXはncnn推論エンジンに適した中間フォーマットであり、これを使うことでncnnの高速推論機構を活かすことが可能です。

また、CLIPモデル(mobileclip_blt)との連携機能も提供されており、これは画像やテキストの特徴量を生成するための補助的なモデルです。CLIPはOpenAIが開発したマルチモーダルモデルで、画像とテキストの意味的な関連性を捉えられるため、物体検出以外のタスクや高度なマルチモーダル推論に応用が期待できます。ただし、CLIPモデルは推論時に必須ではなく、必要に応じて別途ダウンロード・準備する形となっています。

プロジェクトのコードはPython主体で記述されており、モデル変換や推論実行の自動化が図られています。加えて、C++のソースコード(例:MobileClip.cppMobileClip.h)も含まれており、ネイティブでの高速推論やモデルの呼び出しをサポートしています。CMakeによるビルドシステムも用意されており、クロスプラットフォームでの開発や組み込み環境への展開が容易です。

以上のように、本リポジトリは単なるYOLOEモデルの提供に留まらず、モダリティ融合やマルチモーダル特徴量生成を加えた総合的な物体検出ソリューションをncnn上で実現しており、モバイルや組み込み用途に適した軽量・高速なモデル運用を実現しています。

プロジェクトの構成

主要なファイルとディレクトリ:

  • 3rdparty: 外部依存ライブラリ等を格納するディレクトリ
  • CMakeLists.txt: C++コードのビルド設定ファイル
  • MobileClip.cpp: CLIPモデル連携のC++実装
  • MobileClip.h: CLIPモデル連携のヘッダーファイル
  • README.md: プロジェクトの概要・セットアップ方法などの説明

その他、Pythonスクリプトやモデルファイル、PNNX変換用の補助スクリプトなど合計20ファイルが配置されています。

まとめ

ncnn上でYOLOEを効率的に動作させるための包括的な実装を提供。

リポジトリ情報: