ncnn - Framework de Inferência de Rede Neural para Dispositivos Móveis de Código Aberto da Tencent
Visão Geral do Projeto
ncnn é um framework de computação forward de rede neural de alto desempenho, otimizado para dispositivos móveis. Desde o início do projeto, o ncnn considera profundamente a implantação e o uso em dispositivos móveis. Sem dependências de terceiros, multiplataforma, a velocidade da CPU em dispositivos móveis é mais rápida do que todos os frameworks de código aberto conhecidos atualmente.
Endereço do Projeto: https://github.com/Tencent/ncnn
Equipe de Desenvolvimento: Projeto de código aberto da Tencent
Principais Características
1. Otimização Extrema para Dispositivos Móveis
- Feito para Plataformas Móveis: Otimizado especificamente para dispositivos móveis desde o início do projeto
- Sem Dependências de Terceiros: Não depende de BLAS, NNPACK ou qualquer outro framework de computação
- Implementação em C++ Puro: Garante compatibilidade multiplataforma e alto desempenho
2. Desempenho Excepcional
- Otimização em Nível de Assembly ARM NEON: Utiliza otimização cuidadosa em nível de assembly, resultando em velocidade de computação extremamente rápida
- Gerenciamento de Memória Preciso: Ocupação de memória extremamente baixa, adequado para dispositivos móveis com recursos limitados
- Computação Paralela Multi-Core: Suporta otimização de agendamento de CPU ARM big.LITTLE
3. Ampla Compatibilidade de Plataformas
- Multiplataforma: Suporta Android, iOS, Linux, Windows, macOS e outras plataformas
- Suporte a Múltiplas Arquiteturas: Suporta diferentes arquiteturas de CPU, como ARM e x86
- Aceleração por GPU: Suporta aceleração por GPU baseada na API Vulkan
4. Suporte a Modelos Abrangente
- Importação de Modelos de Múltiplos Frameworks: Pode importar modelos de frameworks populares como Caffe, PyTorch, MXNet, ONNX, Darknet, Keras, TensorFlow
- Suporte à Quantização: Suporta quantização de 8 bits e armazenamento de ponto flutuante de meia precisão
- Carregamento Direto na Memória: Suporta carregamento de modelo de rede com referência de cópia zero
Arquitetura Técnica
Tipos de Rede Suportados
- Redes CNN Clássicas: VGG, AlexNet, GoogleNet, Inception, etc.
- Redes CNN Práticas: ResNet, DenseNet, SENet, FPN, etc.
- CNNs Leves: SqueezeNet, MobileNet series, ShuffleNet series, MNasNet, etc.
- Detecção de Rosto: MTCNN, RetinaFace, SCRFD, etc.
- Detecção de Objetos: YOLO series, SSD series, Faster-RCNN, etc.
- Segmentação de Imagem: FCN, PSPNet, UNet, YOLACT, etc.
- Estimativa de Pose: SimplePose, etc.
Matriz de Compatibilidade de Plataformas
Plataforma/Hardware |
Windows |
Linux |
Android |
macOS |
iOS |
Intel CPU |
✔️ |
✔️ |
❔ |
✔️ |
/ |
Intel GPU |
✔️ |
✔️ |
❔ |
❔ |
/ |
AMD CPU |
✔️ |
✔️ |
❔ |
✔️ |
/ |
AMD GPU |
✔️ |
✔️ |
❔ |
❔ |
/ |
NVIDIA GPU |
✔️ |
✔️ |
❔ |
❔ |
/ |
Qualcomm |
❔ |
✔️ |
✅ |
/ |
/ |
ARM CPU |
❔ |
❔ |
✅ |
/ |
/ |
Apple CPU |
/ |
/ |
/ |
✔️ |
✅ |
✅ = Conhecido por funcionar e ter excelente desempenho; ✔️ = Conhecido por funcionar; ❔ = Teoricamente viável, mas não confirmado; / = Não aplicável
Aplicações Práticas
O ncnn já está em uso em vários aplicativos principais da Tencent, incluindo:
- QQ
- QZone (QQ空间)
- WeChat
- 天天P图
- Outros aplicativos da Tencent
Ecossistema de Desenvolvimento
Projetos de Exemplo
- Exemplos de Aplicativos Android:
- Classificação de Imagem SqueezeNet
- Aplicativo de Transferência de Estilo
- Detecção de Objetos MobileNet-SSD
- Detecção de Rosto MTCNN
- Detecção de Objetos YOLOv5/YOLOv7
- Detecção de Rosto SCRFD
Suporte a Ferramentas
- Visualização de Modelo: Suporta o uso do Netron para visualização de modelo
- Camadas Personalizadas: Suporta o registro e a implementação de camadas personalizadas
- Ferramentas de Quantização: Fornece ferramentas de quantização de modelo
Suporte da Comunidade
- Grupos de Discussão Técnica QQ: 637093648, 677104663, 818998520
- Grupo Telegram e Canal Discord
- Documentação Detalhada: Documentação wiki completa e referência de API
Começando
Suporte à Construção
O ncnn suporta a construção nas seguintes plataformas:
- Linux / Windows / macOS
- Raspberry Pi 3/4
- Android
- iOS
- WebAssembly
- NVIDIA Jetson
- 全志D1
- 龙芯2K1000
Início Rápido
Recomenda-se começar com o tutorial Usando ncnn com AlexNet, que fornece instruções passo a passo detalhadas, especialmente adequadas para iniciantes.
Vantagens do Projeto
- Desempenho Excepcional: A velocidade de execução na CPU de dispositivos móveis supera todos os frameworks de código aberto conhecidos
- Amigável aos Recursos: Ocupação de memória extremamente baixa, adequado para ambientes com recursos limitados
- Fácil de Integrar: Sem dependências de terceiros, integração simples
- Validação em Produção: Validado em vários aplicativos da Tencent com centenas de milhões de usuários
- Manutenção Contínua: Comunidade de código aberto ativa e atualizações de versão contínuas
- Ampla Compatibilidade: Suporta a importação de modelos dos principais frameworks de aprendizado profundo
ncnn é a escolha ideal para o desenvolvimento de aplicativos de IA para dispositivos móveis, especialmente adequado para desenvolvedores e empresas que precisam implantar modelos de aprendizado profundo em dispositivos móveis.
