ncnn - Framework d'inférence de réseaux neuronaux open source pour appareils mobiles de Tencent
Aperçu du projet
ncnn est un framework de calcul frontal de réseaux neuronaux haute performance, optimisé à l'extrême pour les appareils mobiles. ncnn a été conçu dès le départ en tenant compte du déploiement et de l'utilisation sur les appareils mobiles. Il ne dépend d'aucune tierce partie, est multiplateforme et sa vitesse sur le CPU des appareils mobiles est plus rapide que tous les frameworks open source connus actuellement.
Adresse du projet : https://github.com/Tencent/ncnn
Équipe de développement : Projet open source de Tencent
Caractéristiques principales
1. Optimisation mobile extrême
- Conçu pour les plateformes mobiles : Optimisé spécifiquement pour les appareils mobiles dès sa conception
- Aucune dépendance tierce : Ne dépend d'aucun autre framework de calcul tel que BLAS, NNPACK, etc.
- Implémentation en C++ pur : Assure la compatibilité multiplateforme et des performances élevées
2. Performances exceptionnelles
- Optimisation au niveau de l'assembleur ARM NEON : Utilise une optimisation minutieuse au niveau de l'assembleur pour une vitesse de calcul extrêmement rapide
- Gestion de la mémoire fine : Faible encombrement mémoire, adapté aux appareils mobiles aux ressources limitées
- Calcul parallèle multicœur : Prend en charge l'optimisation de la planification du CPU ARM big.LITTLE
3. Large support de plateforme
- Multiplateforme : Prend en charge plusieurs plateformes telles que Android, iOS, Linux, Windows, macOS
- Support multi-architecture : Prend en charge différentes architectures CPU telles que ARM, x86
- Accélération GPU : Prend en charge l'accélération GPU basée sur l'API Vulkan
4. Support de modèles riche
- Importation de modèles multi-frameworks : Peut importer des modèles des principaux frameworks tels que Caffe, PyTorch, MXNet, ONNX, Darknet, Keras, TensorFlow
- Support de la quantification : Prend en charge la quantification 8 bits et le stockage en virgule flottante demi-précision
- Chargement direct en mémoire : Prend en charge le chargement de modèles de réseau avec référence zéro copie
Architecture technique
Types de réseaux pris en charge
- Réseaux CNN classiques : VGG, AlexNet, GoogleNet, Inception, etc.
- Réseaux CNN pratiques : ResNet, DenseNet, SENet, FPN, etc.
- CNN légers : SqueezeNet, MobileNet series, ShuffleNet series, MNasNet, etc.
- Détection de visage : MTCNN, RetinaFace, SCRFD, etc.
- Détection d'objets : YOLO series, SSD series, Faster-RCNN, etc.
- Segmentation d'image : FCN, PSPNet, UNet, YOLACT, etc.
- Estimation de pose : SimplePose, etc.
Matrice de compatibilité des plateformes
Plateforme/Matériel |
Windows |
Linux |
Android |
macOS |
iOS |
Intel CPU |
✔️ |
✔️ |
❔ |
✔️ |
/ |
Intel GPU |
✔️ |
✔️ |
❔ |
❔ |
/ |
AMD CPU |
✔️ |
✔️ |
❔ |
✔️ |
/ |
AMD GPU |
✔️ |
✔️ |
❔ |
❔ |
/ |
NVIDIA GPU |
✔️ |
✔️ |
❔ |
❔ |
/ |
Qualcomm |
❔ |
✔️ |
✅ |
/ |
/ |
ARM CPU |
❔ |
❔ |
✅ |
/ |
/ |
Apple CPU |
/ |
/ |
/ |
✔️ |
✅ |
✅ = Connu pour fonctionner et avoir d'excellentes performances ; ✔️ = Connu pour fonctionner ; ❔ = Théoriquement possible mais non confirmé ; / = Non applicable
Applications pratiques
ncnn est actuellement utilisé dans plusieurs applications principales de Tencent, notamment :
- QQ
- QZone (QQ空间)
- WeChat
- 天天P图
- Autres applications Tencent
Écosystème de développement
Exemples de projets
- Exemples d'applications Android :
- Classification d'images SqueezeNet
- Application de transfert de style
- Détection d'objets MobileNet-SSD
- Détection de visage MTCNN
- Détection d'objets YOLOv5/YOLOv7
- Détection de visage SCRFD
Support d'outils
- Visualisation de modèles : Prend en charge l'utilisation de Netron pour la visualisation de modèles
- Couches personnalisées : Prend en charge l'enregistrement et l'implémentation de couches personnalisées
- Outils de quantification : Fournit des outils de quantification de modèles
Support communautaire
- Groupes QQ d'échange technique : 637093648, 677104663, 818998520
- Groupe Telegram et Chaîne Discord
- Documentation détaillée : Documentation wiki complète et référence API
Débuter
Support de construction
ncnn prend en charge la construction sur les plateformes suivantes :
- Linux / Windows / macOS
- Raspberry Pi 3/4
- Android
- iOS
- WebAssembly
- NVIDIA Jetson
- 全志D1
- 龙芯2K1000
Démarrage rapide
Il est recommandé de commencer par le tutoriel Utiliser ncnn avec AlexNet, qui fournit des instructions détaillées, particulièrement adaptées aux débutants.
Avantages du projet
- Performances exceptionnelles : La vitesse d'exécution sur le CPU des appareils mobiles dépasse tous les frameworks open source connus
- Respectueux des ressources : Faible encombrement mémoire, adapté aux environnements aux ressources limitées
- Facile à intégrer : Aucune dépendance tierce, intégration simple
- Validation en production : Validé dans plusieurs applications Tencent avec des centaines de millions d'utilisateurs
- Maintenance continue : Communauté open source active et mises à jour de version continues
- Large compatibilité : Prend en charge l'importation de modèles des principaux frameworks d'apprentissage profond
ncnn est le choix idéal pour le développement d'applications d'IA mobiles, particulièrement adapté aux développeurs et aux entreprises qui ont besoin de déployer des modèles d'apprentissage profond sur des appareils mobiles.
