ncnn - テンセント社製オープンソースモバイル端末向けニューラルネットワーク推論フレームワーク
プロジェクト概要
ncnnは、モバイル端末向けに徹底的に最適化された、高性能なニューラルネットワーク順伝播計算フレームワークです。ncnnは、設計当初からモバイル端末への実装と使用を深く考慮しています。サードパーティの依存関係がなく、クロスプラットフォームであり、モバイル端末のCPUでの速度は、現在知られているすべてのオープンソースフレームワークよりも高速です。
プロジェクトアドレス: https://github.com/Tencent/ncnn
開発チーム: テンセント社オープンソースプロジェクト
主要な特徴
1. 究極のモバイル端末最適化
- モバイルプラットフォームのために誕生:設計当初からモバイルデバイスに特化して最適化
- サードパーティの依存関係なし:BLAS、NNPACKなどの他の計算フレームワークに依存しません
- 純粋なC++実装:クロスプラットフォームの互換性と高性能を保証
2. 卓越したパフォーマンス
- ARM NEONアセンブリレベルの最適化:アセンブリレベルでの綿密な最適化により、計算速度が非常に高速
- 精密なメモリ管理:メモリ使用量が非常に少なく、リソースが限られたモバイルデバイスに適しています
- マルチコア並列計算:ARM big.LITTLE CPUスケジューリングの最適化をサポート
3. 幅広いプラットフォームサポート
- クロスプラットフォーム:Android、iOS、Linux、Windows、macOSなどの複数のプラットフォームをサポート
- マルチアーキテクチャサポート:ARM、x86などの異なるCPUアーキテクチャをサポート
- GPUアクセラレーション:Vulkan APIに基づくGPUアクセラレーションをサポート
4. 豊富なモデルサポート
- マルチフレームワークモデルのインポート:Caffe、PyTorch、MXNet、ONNX、Darknet、Keras、TensorFlowなどの主要なフレームワークのモデルをインポート可能
- 量子化サポート:8bit量子化と半精度浮動小数点ストレージをサポート
- ダイレクトメモリロード:ゼロコピー参照によるネットワークモデルのロードをサポート
技術アーキテクチャ
サポートされているネットワークタイプ
- クラシックCNNネットワーク:VGG、AlexNet、GoogleNet、Inceptionなど
- 実用的なCNNネットワーク:ResNet、DenseNet、SENet、FPNなど
- 軽量CNN:SqueezeNet、MobileNetシリーズ、ShuffleNetシリーズ、MNasNetなど
- 顔検出:MTCNN、RetinaFace、SCRFDなど
- 物体検出:YOLOシリーズ、SSDシリーズ、Faster-RCNNなど
- 画像セグメンテーション:FCN、PSPNet、UNet、YOLACTなど
- 姿勢推定:SimplePoseなど
プラットフォーム互換性マトリックス
| プラットフォーム/ハードウェア | Windows | Linux | Android | macOS | iOS |
|---|---|---|---|---|---|
| Intel CPU | ✔️ | ✔️ | ❔ | ✔️ | / |
| Intel GPU | ✔️ | ✔️ | ❔ | ❔ | / |
| AMD CPU | ✔️ | ✔️ | ❔ | ✔️ | / |
| AMD GPU | ✔️ | ✔️ | ❔ | ❔ | / |
| NVIDIA GPU | ✔️ | ✔️ | ❔ | ❔ | / |
| Qualcomm | ❔ | ✔️ | ✅ | / | / |
| ARM CPU | ❔ | ❔ | ✅ | / | / |
| Apple CPU | / | / | / | ✔️ | ✅ |
✅ = 既知の動作可能かつ優れたパフォーマンス;✔️ = 既知の動作可能;❔ = 理論的には可能だが未確認;/ = 該当なし
実際のアプリケーション
ncnnは現在、QQ、QZone(QQ空間)、WeChat、天天P图、その他のテンセントアプリケーションを含む、テンセントの多くの主要アプリケーションで使用されています。
開発エコシステム
サンプルプロジェクト
- Androidアプリケーションの例:
- SqueezeNet画像分類
- スタイル変換アプリケーション
- MobileNet-SSD物体検出
- MTCNN顔検出
- YOLOv5/YOLOv7物体検出
- SCRFD顔検出
ツールサポート
- モデルの可視化:Netronを使用したモデルの可視化をサポート
- カスタムレイヤー:カスタムレイヤーの登録と実装をサポート
- 量子化ツール:モデル量子化ツールを提供
コミュニティサポート
- 技術交流QQグループ:637093648、677104663、818998520
- TelegramグループとDiscordチャンネル
- 詳細なドキュメント:完全なwikiドキュメントとAPIリファレンス
はじめに
ビルドサポート
ncnnは、Linux / Windows / macOS、Raspberry Pi 3/4、Android、iOS、WebAssembly、NVIDIA Jetson、全志D1、龙芯2K1000などのプラットフォームでのビルドをサポートしています。
クイックスタート
ncnnでAlexNetを実行するチュートリアルから始めることをお勧めします。このチュートリアルでは、詳細な手順が説明されており、特に初心者の方に適しています。
プロジェクトの利点
- 卓越したパフォーマンス:モバイル端末のCPUでの実行速度は、既知のすべてのオープンソースフレームワークを上回ります
- リソースフレンドリー:メモリ使用量が非常に少なく、リソースが限られた環境に適しています
- 統合が容易:サードパーティの依存関係がなく、統合が簡単です
- 生産検証済み:テンセントの複数の億単位のユーザーアプリケーションで検証済み
- 継続的なメンテナンス:活発なオープンソースコミュニティと継続的なバージョン更新
- 幅広い互換性:主要な深層学習フレームワークのモデルインポートをサポート
ncnnは、モバイル端末AIアプリケーション開発の理想的な選択肢であり、特にモバイルデバイスに深層学習モデルを実装する必要がある開発者や企業に適しています。