
Modelo de detecção de objetos leve e de alta precisão super rápida e alta e alta. Em tempo real em dispositivos móveis.

O Nanodet é um modelo de detecção de objetos sem estágio de um estágio de um estágio de um estágio que utiliza perda focal generalizada como classificação e perda de regressão.
No Nanodet-Plus, propomos uma nova estratégia de atribuição de etiquetas com um módulo de orientação de design simples (AGM) e um dinâmico atribuador de rótulo suave (DSLA) para resolver o problema ideal de atribuição de etiquetas no treinamento de modelo leve. Também introduzimos uma pirâmide de recurso de luz chamada Ghost-Pan para aprimorar a fusão de recursos de várias camadas. Essas melhorias aumentam a precisão da detecção do Nanodet anterior pelo mapa 7 no conjunto de dados Coco.
Nanodet-plus 知乎中文介绍
Nanodet 知乎中文介绍
Qq 交流群: 908606542 (答案 : : 炼丹)
| Modelo | Resolução | mapa val 0,5: 0,95 | Latência da CPU (I7-8700) | Latência do braço (4XA76) | Flops | Params | Tamanho do modelo |
|---|---|---|---|---|---|---|---|
| Nanodet-m | 320*320 | 20.6 | 4,98ms | 10.23ms | 0,72g | 0,95m | 1,8 MB (FP16) | 980KB (INT8) |
| Nanodet-plus-m | 320*320 | 27.0 | 5,25ms | 11.97ms | 0,9G | 1.17m | 2,3MB (FP16) | 1,2 MB (int8) |
| Nanodet-plus-m | 416*416 | 30.4 | 8.32ms | 19.77ms | 1.52g | 1.17m | 2,3MB (FP16) | 1,2 MB (int8) |
| Nanodet-plus-m-1.5x | 320*320 | 29.9 | 7.21ms | 15.90ms | 1.75g | 2,44m | 4,7 MB (FP16) | 2,3 MB (INT8) |
| Nanodet-plus-m-1.5x | 416*416 | 34.1 | 11,50ms | 25,49ms | 2.97G | 2,44m | 4,7 MB (FP16) | 2,3 MB (INT8) |
| Yolov3 pequeno | 416*416 | 16.6 | - | 37,6ms | 5.62g | 8,86m | 33,7 MB |
| Yolov4 pequeno | 416*416 | 21.7 | - | 32.81ms | 6.96g | 6.06m | 23,0 MB |
| Yolox-nano | 416*416 | 25.8 | - | 23.08ms | 1.08G | 0,91m | 1,8 MB (FP16) |
| Yolov5-N | 640*640 | 28.4 | - | 44.39ms | 4.5g | 1,9m | 3,8 MB (FP16) |
| FBNETV5 | 320*640 | 30.4 | - | - | 1.8g | - | - |
| Mobiledet | 320*320 | 25.6 | - | - | 0,9G | - | - |
Faça o download de modelos pré-treinados e encontre mais modelos no zoológico de modelos ou em arquivos de liberação
O desempenho do ARM é medido na CPU ARM Kirin 980 (4XA76+4XA55) com base no NCNN. Você pode testar a latência no seu telefone com ncnn_android_benchmark.
O desempenho da Intel CPU é medido Intel Core-I7-8700 com base no OpenVino.
O mapa de nanodet (0,5: 0,95) é validado no conjunto de dados Coco Val2017 sem aumento do tempo de teste.
O mapa Yolov3 e Yolov4 refere-se de Scaled-Yolov4: Escalando Rede Parcial de estágio cruzado.
[2023.01.20] Atualize para Pytorch-Lightning-1.9. A versão mínima do pytorch é atualizada para 1.10. Apoie o treinamento FP16 (obrigado @Crisp-Snakey). Rótulo Ignore de suporte (obrigado @zero0kiriyu).
[2022.08.26] Atualize para Pytorch-Lightning-1.7. A versão mínima do pytorch é atualizada para 1,9. Para usar a versão anterior do pytorch, instale o nanodet <= v1.0.0-alpha-1
[2021.12.25] Nanodet-plus Release! Adicionando AGM (atribua módulo de orientação) e DSLA (Dynamic Soft Label Designyer) para melhorar o mapa 7 com apenas um pequeno custo.
Encontre mais notas de atualização nas notas de atualização.

O projeto de demonstração do Android está na pasta Demo_android_NCNN . Consulte o Android Demo Guide.
Aqui está uma melhor implementação ncnn-android-nanodet
A demonstração C ++ com base no NCNN está na pasta Demo_NCNN . Consulte o guia de demonstração do CPP.
A inferência usando a estrutura MNN do Alibaba está na pasta Demo_MNN . Consulte o MNN Demo Guide.
A inferência usando o OpenVino está na pasta Demo_openvino . Consulte o OpenVino Demo Guide.
https://nihui.github.io/ncnn-webassembly-nanodet/
Primeiro, instale os requisitos e o guia de instalação de Nanodet de instalação. Em seguida, faça o download do peso do coco pré -teatro daqui
Ponto de verificação de pré -retrain Coco
O peso pré-treinado foi treinado pela configuração config/nanodet-plus-m_416.yml .
python demo/demo.py image --config CONFIG_PATH --model MODEL_PATH --path IMAGE_PATHpython demo/demo.py video --config CONFIG_PATH --model MODEL_PATH --path VIDEO_PATHpython demo/demo.py webcam --config CONFIG_PATH --model MODEL_PATH --camid YOUR_CAMERA_IDAlém disso, fornecemos um caderno aqui para demonstrar como fazê -lo funcionar com Pytorch.
conda create -n nanodet python=3.8 -y
conda activate nanodetconda install pytorch torchvision cudatoolkit=11.1 -c pytorch -c conda-forgegit clone https://github.com/RangiLyu/nanodet.git
cd nanodetpip install -r requirements.txtpython setup.py developO nanodet suporta variedade de espinhos. Vá para a pasta de configuração para ver os arquivos de configuração de treinamento de amostra.
| Modelo | Espinha dorsal | Resolução | Map Coco | Flops | Params | Peso pré-treino |
|---|---|---|---|---|---|---|
| Nanodet-m | Shufflenetv2 1.0x | 320*320 | 20.6 | 0,72g | 0,95m | Download |
| Nanodet-plus-M-320 ( novo ) | Shufflenetv2 1.0x | 320*320 | 27.0 | 0,9G | 1.17m | Peso | Ponto de verificação |
| Nanodet-plus-M-416 ( novo ) | Shufflenetv2 1.0x | 416*416 | 30.4 | 1.52g | 1.17m | Peso | Ponto de verificação |
| Nanodet-plus-m-1.5x-320 ( novo ) | Shufflenetv2 1.5x | 320*320 | 29.9 | 1.75g | 2,44m | Peso | Ponto de verificação |
| Nanodet-plus-m-1.5x-416 ( novo ) | Shufflenetv2 1.5x | 416*416 | 34.1 | 2.97G | 2,44m | Peso | Ponto de verificação |
Aviso : a diferença entre Weight e Checkpoint é que o peso fornece apenas parâmetros no tempo de inferência, mas o ponto de verificação contém parâmetros de tempo de treinamento.
Zoológico do Modelo Legado
| Modelo | Espinha dorsal | Resolução | Map Coco | Flops | Params | Peso pré-treino |
|---|---|---|---|---|---|---|
| Nanodet-M-416 | Shufflenetv2 1.0x | 416*416 | 23.5 | 1.2g | 0,95m | Download |
| Nanodet-M-1.5x | Shufflenetv2 1.5x | 320*320 | 23.5 | 1.44G | 2.08m | Download |
| Nanodet-M-1.5x-416 | Shufflenetv2 1.5x | 416*416 | 26.8 | 2.42g | 2.08m | Download |
| Nanodet-M-0.5x | Shufflenetv2 0,5x | 320*320 | 13.5 | 0,3g | 0,28m | Download |
| Nanodet-t | Shufflenetv2 1.0x | 320*320 | 21.7 | 0,96g | 1,36m | Download |
| Nanodet-g | Net CSP personalizado | 416*416 | 22.9 | 4.2g | 3,81m | Download |
| Nanodet-Eficientelite | EficienteNET-Lite0 | 320*320 | 24.7 | 1.72g | 3.11m | Download |
| Nanodet-Eficientelite | EficienteNET-Lite1 | 416*416 | 30.3 | 4.06g | 4.01m | Download |
| Nanodet-Eficientelite | EficienteNET-Lite2 | 512*512 | 32.6 | 7.12g | 4.71m | Download |
| Nanodet-Repvgg | Repvgg-a0 | 416*416 | 27.8 | 11.3g | 6,75m | Download |
Prepare o conjunto de dados
Se suas anotações do conjunto de dados forem Pascal Voc XML Format, consulte Config/nanodet_custom_xml_dataset.yml
Caso contrário, se as anotações do conjunto de dados forem o formato YOLO (DarkNet TXT), consulte Config/nanodet-plus-m_416-yolo.yml
Ou converta suas anotações do conjunto de dados em formato MS Coco (Detalhes do formato de anotação Coco).
Prepare o arquivo de configuração
Copie e modifique um exemplo de arquivo de configuração YML na configuração/ pasta.
Alterar salv_dir para onde você deseja salvar o modelo.
Altere num_classes no modelo-> arch-> Head .
Altere o caminho da imagem e o caminho da anotação em dados e dados e dados .
Defina os IDs da GPU, os trabalhadores num e o tamanho do lote no dispositivo para ajustar seu dispositivo.
Defina o total_epochs , LR e LR_SCHEDULE de acordo com o seu conjunto de dados e lotes.
Se você deseja modificar a rede, aumento de dados ou outras coisas, consulte a configuração do arquivo de arquivo
Comece a treinar
Nanodet está agora usando o Pytorch Lightning para treinamento.
Para GPU único ou de múltiplas GPUs, execute:
python tools/train.py CONFIG_FILE_PATHVisualize logs
Os logs do Tensorboard são salvos em save_dir , que você define no arquivo de configuração.
Para visualizar logs de tensorboard, execute:
cd < YOUR_SAVE_DIR >
tensorboard --logdir ./O Nanodet fornece uma demonstração C ++ com vários zagueiros, incluindo NCNN, Openvino e MNN. Há também uma demonstração do Android baseada na biblioteca NCNN.
Para converter o modelo Nanodet Pytorch para NCNN, você pode escolher da seguinte maneira: pytorch-> onnx-> ncnn
Para exportar o modelo ONNX, execute tools/export_onnx.py .
python tools/export_onnx.py --cfg_path ${CONFIG_PATH} --model_path ${PYTORCH_MODEL_PATH}Consulte Demo_NCNN.
Consulte Demo_openvino.
Consulte Demo_mnn.
Consulte Android_Demo.
Se você achar este projeto útil em sua pesquisa, considere citar:
@misc { =nanodet ,
title = { NanoDet-Plus: Super fast and high accuracy lightweight anchor-free object detection model. } ,
author = { RangiLyu } ,
howpublished = { url{https://github.com/RangiLyu/nanodet} } ,
year = { 2021 }
}https://github.com/tencent/ncnn
https://github.com/open-mmlab/mmdetecção
https://github.com/implus/gfocal
https://github.com/cmdbug/yolov5_ncnn
https://github.com/rbgirshick/yacs