YOLOv5-Lite 项目介绍
项目概述
YOLOv5-Lite 是在 YOLOv5 模型的基础上,通过一系列的剪枝实验进行改进,从而使得模型更加轻便、速度更快和部署更加容易。具体来说,YOLOv5-Lite 通过减少 Flops(每秒浮点运算次数)、降低内存消耗和减少参数数量,使模型在性能上更为高效。与此同时,YOLOv5-Lite 还通过添加通道混洗和优化通道减少策略来提高推理速度。在部署方面,该项目通过去除 Focus 层和四片操作,并将模型量化精度调整至可接受的范围,从而简化了模型的部署流程。
实验对比
YOLOv5-Lite 在与其他模型的对比实验中表现出了非常不错的性能。在不同输入尺寸下的模型大小、参数数量和性能对比如下表所示(只展示部分):
ID | 模型 | 输入尺寸 | Flops | 参数数量 | 大小(MB) | Map@0.5 | Map@.5:0.95 |
---|---|---|---|---|---|---|---|
001 | yolo-fastest | 320×320 | 0.25G | 0.35M | 1.4 | 24.4 | - |
002 | YOLOv5-Liteeours | 320×320 | 0.73G | 0.78M | 1.7 | 35.1 | - |
008 | YOLOv5-Litesours | 416×416 | 1.66G | 1.64M | 3.4 | 42.0 | 25.2 |
012 | YOLOv5-Litegours | 640×640 | 15.6G | 5.39M | 10.9 | 57.6 | 39.1 |
从表中可以看出,YOLOv5-Lite 在不同输入尺寸下都具有较低的 Flops 和参数数量,同时又能保持较高的精度。
平台支持与性能
YOLOv5-Lite 针对多种计算平台进行了优化,使其在不同硬件环境下表现出色。以下是部分设备的推理时间对比:
设备 | 系统 | 输入 | YOLOv5-Litee | YOLOv5s |
---|---|---|---|---|
Redmi K30 | Android | 320×320 | 27ms | 163ms |
Raspberry Pi 4B | Linux | 320×320 | 84ms | 371ms |
可以看出,在 Raspberry Pi 4B 这样的资源受限设备上,YOLOv5-Lite 提供了每秒 10 帧以上的推理速度。
模型库
YOLOv5-Lite 提供了多个模型版本,以应对不同的需求和硬件平台。主要模型包括:
- v5Lite-e:设计用于 ARM CPU
- v5Lite-s:体积稍大但模型更精确
- v5Lite-c:适用于 x86 CPU
- v5Lite-g:支持 x86 和 ARM 的 GPU、NPU
这些模型可以在 Pytorch、NCNN、ONNX 等多种框架下使用,并支持不同的量化类型,如 FP32、FP16 和 INT8。
如何使用
首先,确保你的计算环境上安装了 Python 3.6 及以上版本,以及相关的库依赖。接着,克隆项目并安装所需包:
$ git clone https://github.com/ppogg/YOLOv5-Lite
$ cd YOLOv5-Lite
$ pip install -r requirements.txt
要进行推理,可以运行以下命令:
$ python detect.py --source file.jpg # 对单张图片进行推理
模型训练
YOLOv5-Lite 提供了方便的训练脚本,通过指定数据集路径和配置文件即可进行模型训练。支持多 GPU 训练以提高速度。
$ python train.py --data coco.yaml --cfg v5lite-e.yaml --weights v5lite-e.pt --batch-size 128
部署指南
YOLOv5-Lite 支持多种部署方式,包括 ncnn、mnn、openvino 和 TensorRT,适用于各种 ARM 和 x86 的 CPU、GPU 及 NPU 设备。
通过优化和简化,YOLOv5-Lite 提供了一种灵活且高效的解决方案,适用于从移动设备到高性能计算机的广泛应用场景。