Home
Login

ncnn ist ein hochleistungsfähiges Framework für die Inferenz neuronaler Netze, das für mobile Plattformen optimiert ist.

NOASSERTIONC++ 21.7kTencentncnn Last Updated: 2025-06-27

ncnn - Von Tencent Open-Source-Framework für neuronale Netze auf mobilen Geräten

Projektübersicht

ncnn ist ein hochleistungsfähiges Framework für die Vorwärtsberechnung neuronaler Netze, das für mobile Geräte optimiert wurde. ncnn wurde von Grund auf für den Einsatz auf mobilen Geräten konzipiert. Es hat keine Abhängigkeiten von Drittanbietern, ist plattformübergreifend und auf mobilen CPUs schneller als alle derzeit bekannten Open-Source-Frameworks.

Projektadresse: https://github.com/Tencent/ncnn

Entwicklungsteam: Open-Source-Projekt der Tencent Corporation

Kernfunktionen

1. Ultimative Optimierung für mobile Geräte

  • Für mobile Plattformen entwickelt: Von Anfang an speziell für mobile Geräte optimiert
  • Keine Abhängigkeiten von Drittanbietern: Keine Abhängigkeit von BLAS, NNPACK oder anderen Berechnungs-Frameworks
  • Reine C++-Implementierung: Gewährleistet plattformübergreifende Kompatibilität und hohe Leistung

2. Hervorragende Leistung

  • ARM NEON-Optimierung auf Assembler-Ebene: Sorgfältige Optimierung auf Assembler-Ebene für extrem hohe Berechnungsgeschwindigkeit
  • Feingranulare Speicherverwaltung: Sehr geringer Speicherbedarf, geeignet für ressourcenbeschränkte mobile Geräte
  • Multicore-Parallelberechnung: Unterstützt ARM big.LITTLE CPU-Scheduling-Optimierung

3. Breite Plattformunterstützung

  • Plattformübergreifend: Unterstützt mehrere Plattformen wie Android, iOS, Linux, Windows, macOS
  • Unterstützung mehrerer Architekturen: Unterstützt verschiedene CPU-Architekturen wie ARM, x86
  • GPU-Beschleunigung: Unterstützt GPU-Beschleunigung basierend auf der Vulkan-API

4. Umfangreiche Modellunterstützung

  • Import von Modellen aus mehreren Frameworks: Kann Modelle aus Mainstream-Frameworks wie Caffe, PyTorch, MXNet, ONNX, Darknet, Keras, TensorFlow importieren
  • Quantisierungsunterstützung: Unterstützt 8-Bit-Quantisierung und Halbpräzisions-Gleitkommaspeicherung
  • Direktes Laden in den Speicher: Unterstützt das Laden von Netzwerkmodellen mit Zero-Copy-Referenzierung

Technische Architektur

Unterstützte Netzwerktypen

  • Klassische CNN-Netzwerke: VGG, AlexNet, GoogleNet, Inception usw.
  • Praktische CNN-Netzwerke: ResNet, DenseNet, SENet, FPN usw.
  • Leichte CNNs: SqueezeNet, MobileNet-Serie, ShuffleNet-Serie, MNasNet usw.
  • Gesichtserkennung: MTCNN, RetinaFace, SCRFD usw.
  • Objekterkennung: YOLO-Serie, SSD-Serie, Faster-RCNN usw.
  • Bildsegmentierung: FCN, PSPNet, UNet, YOLACT usw.
  • Pose-Schätzung: SimplePose usw.

Plattformkompatibilitätsmatrix

Plattform/Hardware Windows Linux Android macOS iOS
Intel CPU ✔️ ✔️ ✔️ /
Intel GPU ✔️ ✔️ /
AMD CPU ✔️ ✔️ ✔️ /
AMD GPU ✔️ ✔️ /
NVIDIA GPU ✔️ ✔️ /
Qualcomm ✔️ / /
ARM CPU / /
Apple CPU / / / ✔️

✅ = Bekanntlich lauffähig und leistungsstark; ✔️ = Bekanntlich lauffähig; ❔ = Theoretisch möglich, aber nicht bestätigt; / = Nicht zutreffend

Tatsächliche Anwendungen

ncnn wird derzeit in mehreren Kernanwendungen von Tencent verwendet, darunter:

  • QQ
  • QZone (QQ-Raum)
  • WeChat
  • 天天P图 (TianTianPitu)
  • Andere Tencent-Anwendungen

Entwicklungsumgebung

Beispielprojekte

  • Android-Anwendungsbeispiele:
    • SqueezeNet-Bildklassifizierung
    • Stilübertragungsanwendung
    • MobileNet-SSD-Objekterkennung
    • MTCNN-Gesichtserkennung
    • YOLOv5/YOLOv7-Objekterkennung
    • SCRFD-Gesichtserkennung

Tool-Unterstützung

  • Modellvisualisierung: Unterstützt die Verwendung von Netron zur Modellvisualisierung
  • Benutzerdefinierte Schichten: Unterstützt die Registrierung und Implementierung benutzerdefinierter Schichten
  • Quantisierungswerkzeuge: Bietet Werkzeuge zur Modellquantisierung

Community-Unterstützung

  • Technische Austausch-QQ-Gruppen: 637093648, 677104663, 818998520
  • Telegram-Gruppe und Discord-Kanal
  • Detaillierte Dokumentation: Vollständige Wiki-Dokumentation und API-Referenz

Erste Schritte

Build-Unterstützung

ncnn unterstützt das Erstellen auf den folgenden Plattformen:

  • Linux / Windows / macOS
  • Raspberry Pi 3/4
  • Android
  • iOS
  • WebAssembly
  • NVIDIA Jetson
  • 全志D1 (Allwinner D1)
  • 龙芯2K1000 (Loongson 2K1000)

Schnelleinstieg

Es wird empfohlen, mit dem Tutorial Verwendung von ncnn mit AlexNet zu beginnen. Dieses Tutorial bietet detaillierte Schritt-für-Schritt-Anleitungen und ist besonders für Anfänger geeignet.

Projektvorteile

  1. Hervorragende Leistung: Übertrifft alle bekannten Open-Source-Frameworks in Bezug auf die Laufgeschwindigkeit auf mobilen CPUs
  2. Ressourcenschonend: Sehr geringer Speicherbedarf, geeignet für ressourcenbeschränkte Umgebungen
  3. Einfache Integration: Keine Abhängigkeiten von Drittanbietern, einfache Integration
  4. Produktionsvalidiert: In mehreren Tencent-Anwendungen mit Hunderten Millionen Benutzern validiert
  5. Kontinuierliche Wartung: Aktive Open-Source-Community und kontinuierliche Versionsaktualisierungen
  6. Breite Kompatibilität: Unterstützt den Import von Modellen aus Mainstream-Deep-Learning-Frameworks

ncnn ist die ideale Wahl für die Entwicklung von KI-Anwendungen auf mobilen Geräten, insbesondere für Entwickler und Unternehmen, die Deep-Learning-Modelle auf mobilen Geräten bereitstellen müssen.

Star History Chart