
Realize uma série de experimentos de ablação no YOLOV5 para torná -lo mais leve (flops menores, memória inferior e menos parâmetros) e mais rápido (adicione canal de shuffle, cabeça de Yolov5 para reduzir o canal. Ele pode inferir pelo menos 10 qps no Raspberry Pi 4b quando a estrutura com 320 × 320) e é mais fácil de implementar (remover o Raspbert 4b quando a estrutura de 320 × 320) e é mais fácil para implementar (remover o Rasping Pi 4b, com 320 × 320) e é mais fácil para implementar (remover o Rasping Removing (é de 320 × 320) e é mais fácil para implementar (remover o Rasping Removing, com o quadro de 320 × 320) e é mais fácil para implementar (remover o Rasping Removing (é mais fácil de ser o slor. faixa aceitável).

| EU IA | Modelo | Input_size | Flops | Params | Tamanho (M) | [email protected] | [email protected]: 0.95 |
|---|---|---|---|---|---|---|---|
| 001 | YOLO-FAST | 320 × 320 | 0,25g | 0,35m | 1.4 | 24.4 | - |
| 002 | Yolov5-Lite E O nosso | 320 × 320 | 0,73g | 0,78m | 1.7 | 35.1 | - |
| 003 | Nanodet-m | 320 × 320 | 0,72g | 0,95m | 1.8 | - | 20.6 |
| 004 | YOLO-FASTEST-XL | 320 × 320 | 0,72g | 0,92m | 3.5 | 34.3 | - |
| 005 | Yolox Nano | 416 × 416 | 1.08G | 0,91m | 7.3 (fp32) | - | 25.8 |
| 006 | Yolov3 pequeno | 416 × 416 | 6.96g | 6.06m | 23.0 | 33.1 | 16.6 |
| 007 | Yolov4 pequeno | 416 × 416 | 5.62g | 8,86m | 33.7 | 40.2 | 21.7 |
| 008 | Yolov5-Lite S OUS | 416 × 416 | 1.66g | 1,64m | 3.4 | 42.0 | 25.2 |
| 009 | Yolov5-lite C O nosso | 512 × 512 | 5.92g | 4,57m | 9.2 | 50.9 | 32.5 |
| 010 | Nanodet-eficientelite2 | 512 × 512 | 7.12g | 4.71m | 18.3 | - | 32.6 |
| 011 | Yolov5s (6.0) | 640 × 640 | 16.5g | 7.23m | 14.0 | 56.0 | 37.2 |
| 012 | Yolov5-Lite G nosso | 640 × 640 | 15.6g | 5.39m | 10.9 | 57.6 | 39.1 |
Veja o Wiki: https://github.com/pogg/yolov5-lite/wiki/test-the-map-of-models-about-coco
| Equipamento | Back -end da computação | Sistema | Entrada | Estrutura | v5lite-e | v5lite-s | v5lite-c | v5lite-g | Yolov5s |
|---|---|---|---|---|---|---|---|---|---|
| Inter | @I5-10210U | Janela (x86) | 640 × 640 | Openvino | - | - | 46ms | - | 131ms |
| Nvidia | @Rtx 2080ti | Linux (x86) | 640 × 640 | tocha | - | - | - | 15ms | 14ms |
| Redmi K30 | @Snapdragon 730g | Android (ARMV8) | 320 × 320 | ncnn | 27ms | 38ms | - | - | 163ms |
| Xiaomi 10 | @Snapdragon 865 | Android (ARMV8) | 320 × 320 | ncnn | 10ms | 14ms | - | - | 163ms |
| Raspberrypi 4b | @Arm Cortex-A72 | Linux (ARM64) | 320 × 320 | ncnn | - | 84ms | - | - | 371ms |
| Raspberrypi 4b | @Arm Cortex-A72 | Linux (ARM64) | 320 × 320 | mnn | - | 71ms | - | - | 356ms |
| Axera-Pi | Cortex A7@CPU 3.6tops @npu | Linux (ARM64) | 640 × 640 | AXPI | - | - | - | 22ms | 22ms |
https://zhuanlan.zhihu.com/p/672633849
入群答案: 剪枝 ou 蒸馏 ou 量化 ou 低秩分解 (任意其一均可) íd
| Modelo | Tamanho | Espinha dorsal | Cabeça | Estrutura | Design para |
|---|---|---|---|---|---|
| v5lite-e.pt | 1,7m | shufflenetv2 (megvii) | V5litee-cabeça | Pytorch | ARM-CPU |
| v5lite-e.bin v5lite-e.param | 1,7m | shufflenetv2 | V5litee-cabeça | ncnn | ARM-CPU |
| v5lite-e-int8.bin v5lite-e-int8.param | 0,9m | shufflenetv2 | V5litee-cabeça | ncnn | ARM-CPU |
| v5lite-e-fp32.mnn | 3,0m | shufflenetv2 | V5litee-cabeça | mnn | ARM-CPU |
| v5lite-e-fp32.tnnmodel v5lite-e-fp32.tnnproto | 2,9m | shufflenetv2 | V5litee-cabeça | tnn | ARM-CPU |
| v5lite-e-320.onnx | 3,1m | shufflenetv2 | V5litee-cabeça | OnnxRuntime | x86-cpu |
| Modelo | Tamanho | Espinha dorsal | Cabeça | Estrutura | Design para |
|---|---|---|---|---|---|
| v5lite-s.pt | 3,4m | shufflenetv2 (megvii) | v5lites-cabeça | Pytorch | ARM-CPU |
| v5lite-s.bin v5lite-s.param | 3,3m | shufflenetv2 | v5lites-cabeça | ncnn | ARM-CPU |
| v5lite-s-int8.bin v5lite-s-int8.param | 1,7m | shufflenetv2 | v5lites-cabeça | ncnn | ARM-CPU |
| v5lite-s.mnn | 3,3m | shufflenetv2 | v5lites-cabeça | mnn | ARM-CPU |
| v5lite-s-int4.mnn | 987K | shufflenetv2 | v5lites-cabeça | mnn | ARM-CPU |
| v5lite-s-fp16.bin v5lite-s-fp16.xml | 3,4m | shufflenetv2 | v5lites-cabeça | OpenVivo | x86-cpu |
| v5lite-s-fp32.bin v5lite-s-fp32.xml | 6,8m | shufflenetv2 | v5lites-cabeça | OpenVivo | x86-cpu |
| v5lite-s-fp16.tflite | 3,3m | shufflenetv2 | v5lites-cabeça | tflite | ARM-CPU |
| v5lite-s-fp32.tflite | 6.7m | shufflenetv2 | v5lites-cabeça | tflite | ARM-CPU |
| v5lite-s-int8.tflite | 1,8m | shufflenetv2 | v5lites-cabeça | tflite | ARM-CPU |
| v5lite-s-416.onnx | 6.4m | shufflenetv2 | v5lites-cabeça | OnnxRuntime | x86-cpu |
| Modelo | Tamanho | Espinha dorsal | Cabeça | Estrutura | Design para |
|---|---|---|---|---|---|
| v5lite-c.pt | 9m | PPLCNet (Baidu) | V5S-cabeça | Pytorch | x86-cpu / x86-vpu |
| v5lite-c.bin v5lite-c.xml | 8.7m | PplcNet | V5S-cabeça | OpenVivo | x86-cpu / x86-vpu |
| v5lite-c-512.onnx | 18m | PplcNet | V5S-cabeça | OnnxRuntime | x86-cpu |
| Modelo | Tamanho | Espinha dorsal | Cabeça | Estrutura | Design para |
|---|---|---|---|---|---|
| v5lite-g.pt | 10,9m | Repvgg (tsinghua) | V5liteg-cabeça | Pytorch | x86-gpu / arm-gpu / braç-npu |
| v5lite-g-int8.engine | 8,5m | Repvgg-yolov5 | V5liteg-cabeça | Tensorrt | x86-gpu / arm-gpu / braç-npu |
| v5lite-g-int8.tmfile | 8.7m | Repvgg-yolov5 | V5liteg-cabeça | Tengine | ARM-NPU |
| v5lite-g-640.onnx | 21m | Repvgg-yolov5 | Yolov5-cabeça | OnnxRuntime | x86-cpu |
| v5lite-g-640.JONT | 7.1m | Repvgg-yolov5 | Yolov5-cabeça | AXPI | ARM-NPU |
v5lite-e.pt: | Baidu Drive | Google Drive || ──────
ncnn-fp16: | Baidu Drive | Google Drive |
| ──────ncnn-int8: | Baidu Drive | Google Drive |
| ──────mnn-e_bf16: | Google Drive |
| ──────mnn-d_bf16: | Google Drive |
onnx-fp32Baidu Drive | Google Drive |
v5lite-s.pt: | Baidu Drive | Google Drive || ──────
ncnn-fp16: | Baidu Drive | Google Drive |
| ──────ncnn-int8: | Baidu Drive | Google Drive |
tengine-fp32Baidu Drive | Google Drive |
v5lite-c.pt: Baidu Drive | Google Drive |
openvino-fp16Baidu Drive | Google Drive |
v5lite-g.pt: | Baidu Drive | Google Drive |
axpi-int8
Senha da unidade Baidu: pogg
https://github.com/pinto0309/pinto_model_zoo/tree/main/180_yolov5-lite
Python> = 3.6.0 é necessário com todos os requisitos.txt instalado, incluindo pytorch> = 1.7 :
$ git clone https://github.com/ppogg/YOLOv5-Lite
$ cd YOLOv5-Lite
$ pip install -r requirements.txt detect.py executa a inferência em uma variedade de fontes, baixando modelos automaticamente a partir da versão mais recente do Yolov5-Lite e salvando resultados para runs/detect .
$ python detect.py --source 0 # webcam
file.jpg # image
file.mp4 # video
path/ # directory
path/ * .jpg # glob
' https://youtu.be/NUsoVlDFqZg ' # YouTube
' rtsp://example.com/media.mp4 ' # RTSP, RTMP, HTTP stream$ python train.py --data coco.yaml --cfg v5lite-e.yaml --weights v5lite-e.pt --batch-size 128
v5lite-s.yaml v5lite-s.pt 128
v5lite-c.yaml v5lite-c.pt 96
v5lite-g.yaml v5lite-g.pt 64Se você usar multi-GPU. É mais rápido várias vezes:
$ python -m torch.distributed.launch --nproc_per_node 2 train.pyConjunto de treinamento e distribuição do conjunto de testes (O caminho com xx.jpg)
train: ../coco/images/train2017/
val: ../coco/images/val2017/├── images # xx.jpg example
│ ├── train2017
│ │ ├── 000001.jpg
│ │ ├── 000002.jpg
│ │ └── 000003.jpg
│ └── val2017
│ ├── 100001.jpg
│ ├── 100002.jpg
│ └── 100003.jpg
└── labels # xx.txt example
├── train2017
│ ├── 000001.txt
│ ├── 000002.txt
│ └── 000003.txt
└── val2017
├── 100001.txt
├── 100002.txt
└── 100003.txtLink : https: //github.com/pogg/autolabelimg
Você pode usar o LABELIMG baseado em Yolov5-5.0 e Yolov5-Lite para Autoannotate, BiubiubiU 
Aqui, os componentes originais do Yolov5 e os componentes reproduzidos do Yolov5-Lite são organizados e armazenados no cubo do modelo:

$ python main.py --type all
Atualizando ...
NCNN para ARM-CPU
MNN para Arm-CPU
Openvino x86-cpu ou x86-vPU
Tensorrt (C ++) para ARM-GPU ou ARM-NPU ou X86-GPU
Tensorrt (Python) para ARM-GPU ou ARM-NPU ou X86-GPU
Android para Arm-CPU
Este é um telefone Redmi, o processador é o Snapdragon 730G e o Yolov5-Lite é usado para detecção. O desempenho é o seguinte:
Link: https://github.com/pogg/yolov5-lite/tree/master/android_demo/ncnn-android-v5lite
Android_v5lite-s: https://drive.google.com/file/d/1ctohy68n2b9xyuqflitp-nd2kufwgaur/view?usp=Sharing
Android_v5lite-g: https://drive.google.com/file/d/1fnvkwxxp_azwhi000xjiuhj_ohqoujcj/view?usp=Sharing
Novo App Android: [link] https://pan.baidu.com/s/1prhw4fi1jq8vbopyishciq [palavra -chave] Pogg

O que é Yolov5-Lite S/E Modelo: Zhihu Link (chinês): https://zhuanlan.zhihu.com/p/400545131
O que é Yolov5-Lite C Modelo: Zhihu Link (chinês): https://zhuanlan.zhihu.com/p/420737659
O que é Yolov5-Lite G Modelo: Zhihu Link (chinês): https://zhuanlan.zhihu.com/p/410874403
Como implantar no NCNN com fp16 ou int8: link csdn (chinês): https://blog.csdn.net/weixin_45829462/article/details/119787840
Como implantar no MNN com fp16 ou int8: zhihu link (chinês): https://zhuanlan.zhihu.com/p/672633849
Como implantar no OnNxRuntime: Zhihu Link (chinês): https://zhuanlan.zhihu.com/p/476533259 versão)
Como implantar no Tensorrt: Zhihu Link (chinês): https://zhuanlan.zhihu.com/p/478630138
Como otimizar em Tensorrt: Zhihu Link (chinês): https://zhuanlan.zhihu.com/p/463074494
https://github.com/ultralytics/yolov5
https://github.com/megvii-model/shufflenet-series
https://github.com/tencent/ncnn
Se você usar o Yolov5-Lite em sua pesquisa, cite nosso trabalho e dê uma estrela:
@misc{yolov5lite2021,
title = {YOLOv5-Lite: Lighter, faster and easier to deploy},
author = {Xiangrong Chen and Ziman Gong},
doi = {10.5281/zenodo.5241425}
year={2021}
}