Introdução geral
A MNN (Mobile Neural Network) é uma estrutura de aprendizagem profunda leve e eficiente desenvolvida pela Alibaba e otimizada para dispositivos móveis. A MNN não só permite a inferência rápida em dispositivos móveis, mas também suporta tarefas multimodais, incluindo geração de texto, geração de imagens e processamento de áudio, etc. A MNN foi integrada a vários aplicativos da Alibaba, como Taobao, Tmall, Youku, Nail e Idle Fish, abrangendo mais de 70 cenários de uso, como transmissão ao vivo, captura de vídeos curtos, recomendação de pesquisa e pesquisa de imagens de produtos.
Lista de funções
- suporte multimodalSuporte a uma ampla gama de tarefas, como geração de texto, geração de imagens e processamento de áudio.
- Otimização da inferência da CPUDesempenho de inferência de CPU excelente em dispositivos móveis.
- Estrutura leveEstrutura: A estrutura foi projetada para ser leve e adequada às restrições de recursos dos dispositivos móveis.
- amplamente utilizadoIntegração: Está integrado a vários aplicativos do Alibaba, abrangendo uma ampla gama de cenários comerciais.
- código abertoCódigo-fonte aberto completo e documentação são fornecidos para facilitar a integração e o desenvolvimento secundário.
Usando a Ajuda
Processo de instalação
- Download e instalaçãoClonar o código do projeto de um repositório do GitHub.
git clone https://github.com/alibaba/MNN.git cd MNN
2. **Compilar o projeto**: Configure o ambiente de compilação e compile o projeto de acordo com o arquivo README fornecido pelo projeto.
```bash
mkdir build
cd build
cmake ...
make -j4
- Integração em aplicativos AndroidIntegre os arquivos de biblioteca compilados ao projeto Android modificando o arquivo
build.gradle
para configuração.
Uso
capacidade multimodal
O MNN oferece suporte a uma variedade de tarefas multimodais, incluindo geração de texto, geração de imagens e processamento de áudio. A seguir, exemplos de como usar esses recursos:
- Geração de textoGeração de texto usando modelos de linguagem pré-treinados.
importar MNN Interpreter = MNN.Interpreter("text_model.mnn") sessão = interpreter.createSession() input_tensor = interpreter.getSessionInput(session) # Texto de entrada para pré-processamento input_data = preprocess_text("input text") input_tensor.copyFrom(input_data) interpreter.runSession(session) output_tensor = interpreter.getSessionOutput(session) output_data = output_tensor.copyToHostTensor() result = postprocess_text(output_data) print(result)
- Geração de imagensGeração de imagens usando modelos generativos pré-treinados.
importar MNN Interpreter = MNN.Interpreter("image_model.mnn") sessão = interpreter.createSession() input_tensor = interpreter.getSessionInput(session) # Dados de entrada para pré-processamento input_data = preprocess_image("imagem de entrada") input_tensor.copyFrom(input_data) interpreter.runSession(session) output_tensor = interpreter.getSessionOutput(session) output_data = output_tensor.copyToHostTensor() result = postprocess_image(output_data) print(result)
- processamento de áudioGeração ou processamento de áudio usando modelos de áudio pré-treinados.
importar MNN Interpreter = MNN.Interpreter("audio_model.mnn") sessão = interpreter.createSession() input_tensor = interpreter.getSessionInput(session) # Dados de áudio de entrada para pré-processamento input_data = preprocess_audio("input audio") input_tensor.copyFrom(input_data) interpretador.runSession(sessão) output_tensor = interpreter.getSessionOutput(session) output_data = output_tensor.copyToHostTensor() result = postprocess_audio(output_data) print(result)
Procedimento de operação detalhado
- Criação de instâncias de raciocínioInicialização do modelo MNN e criação de uma sessão de inferência.
importar MNN Interpreter = MNN.Interpreter("model.mnn") sessão = interpreter.createSession()
- Pré-processamento de dados de entradaPré-processamento dos dados de entrada de acordo com o tipo de modelo.
input_tensor = interpreter.getSessionInput(session) input_data = preprocess_data("input data") input_tensor.copyFrom(input_data)
- raciocínio executivoExecute a sessão para raciocínio.
interpreter.runSession(session)
- Pós-processamento de dados de saídaObtenha a saída e faça o pós-processamento.
output_tensor = interpreter.getSessionOutput(session) output_data = output_tensor.copyToHostTensor() resultado = postprocess_data(output_data) print(result)