基于YOLOv5n/s/m不同参数量级模型开发构建茶叶嫩芽检测识别模型,使用pruning剪枝技术来对模型进行轻量化处理,探索不同剪枝水平下模型性能影响【续】

这里主要是前一篇博文的后续内容,简单回顾一下:本文选取了n/s/m三款不同量级的模型来依次构建训练模型,所有的参数保持同样的设置,之后探索在不同剪枝处理操作下的性能影响。

在上一篇博文中保持30的剪枝程度得到的效果还是比较理想的。这里进行的是分别进行60和90两种不同程度的剪枝,之后对其进行微调训练开发,对比分析模型性能。

先看60的结果:

【yolov5n_pruning】

【yolov5s_pruning】

【yolov5m_pruning】

三款参数量级的模型对比评估结果详情如下所示:

python 复制代码
【yolov5n_pruning】
Validating runs/train/yolov5n_pruning_0.60/weights/best.pt...
Fusing layers... 
YOLOv5n summary: 157 layers, 932592 parameters, 0 gradients, 2.1 GFLOPs
                 Class     Images  Instances          P          R      mAP50   mAP50-95: 100%|██████████| 5/5 [00:01<00:00,  2.79it/s]                      
                   all         40        100      0.627       0.42      0.482      0.153
Results saved to runs/train/yolov5n_pruning_0.60

【yolov5s_pruning】
Validating runs/train/yolov5s_pruning_0.60/weights/best.pt...
Fusing layers... 
YOLOv5s summary: 166 layers, 4637807 parameters, 0 gradients
                 Class     Images  Instances          P          R      mAP50   mAP50-95: 100%|??????????| 5/5 [00:01<00:00,  2.51it/s]                      
                   all         40        100      0.488        0.5      0.481      0.183
Results saved to runs/train/yolov5s_pruning_0.60


【yolov5m_pruning】
Validating runs/train/yolov5m_pruning_0.60/weights/best.pt...
Fusing layers... 
YOLOv5m summary: 212 layers, 11711883 parameters, 0 gradients, 25.4 GFLOPs
                 Class     Images  Instances          P          R      mAP50   mAP50-95: 100%|██████████| 5/5 [00:01<00:00,  2.77it/s]                      
                   all         40        100      0.633      0.708      0.672      0.256
Results saved to runs/train/yolov5m_pruning_0.60

综合对比不难发现:在60%的剪枝程度处理下,各款模型都发现了明显的精度下降的问题。为了直观对比分析,我对其进行了可视化,如下所示:

【Precision曲线】

精确率曲线(Precision-Recall Curve)是一种用于评估二分类模型在不同阈值下的精确率性能的可视化工具。它通过绘制不同阈值下的精确率和召回率之间的关系图来帮助我们了解模型在不同阈值下的表现。

精确率(Precision)是指被正确预测为正例的样本数占所有预测为正例的样本数的比例。召回率(Recall)是指被正确预测为正例的样本数占所有实际为正例的样本数的比例。

绘制精确率曲线的步骤如下:

使用不同的阈值将预测概率转换为二进制类别标签。通常,当预测概率大于阈值时,样本被分类为正例,否则分类为负例。

对于每个阈值,计算相应的精确率和召回率。

将每个阈值下的精确率和召回率绘制在同一个图表上,形成精确率曲线。

根据精确率曲线的形状和变化趋势,可以选择适当的阈值以达到所需的性能要求。

通过观察精确率曲线,我们可以根据需求确定最佳的阈值,以平衡精确率和召回率。较高的精确率意味着较少的误报,而较高的召回率则表示较少的漏报。根据具体的业务需求和成本权衡,可以在曲线上选择合适的操作点或阈值。

精确率曲线通常与召回率曲线(Recall Curve)一起使用,以提供更全面的分类器性能分析,并帮助评估和比较不同模型的性能。

【Recall曲线】

召回率曲线(Recall Curve)是一种用于评估二分类模型在不同阈值下的召回率性能的可视化工具。它通过绘制不同阈值下的召回率和对应的精确率之间的关系图来帮助我们了解模型在不同阈值下的表现。

召回率(Recall)是指被正确预测为正例的样本数占所有实际为正例的样本数的比例。召回率也被称为灵敏度(Sensitivity)或真正例率(True Positive Rate)。

绘制召回率曲线的步骤如下:

使用不同的阈值将预测概率转换为二进制类别标签。通常,当预测概率大于阈值时,样本被分类为正例,否则分类为负例。

对于每个阈值,计算相应的召回率和对应的精确率。

将每个阈值下的召回率和精确率绘制在同一个图表上,形成召回率曲线。

根据召回率曲线的形状和变化趋势,可以选择适当的阈值以达到所需的性能要求。

通过观察召回率曲线,我们可以根据需求确定最佳的阈值,以平衡召回率和精确率。较高的召回率表示较少的漏报,而较高的精确率意味着较少的误报。根据具体的业务需求和成本权衡,可以在曲线上选择合适的操作点或阈值。

召回率曲线通常与精确率曲线(Precision Curve)一起使用,以提供更全面的分类器性能分析,并帮助评估和比较不同模型的性能。

【F1值曲线】

F1值曲线是一种用于评估二分类模型在不同阈值下的性能的可视化工具。它通过绘制不同阈值下的精确率(Precision)、召回率(Recall)和F1分数的关系图来帮助我们理解模型的整体性能。

F1分数是精确率和召回率的调和平均值,它综合考虑了两者的性能指标。F1值曲线可以帮助我们确定在不同精确率和召回率之间找到一个平衡点,以选择最佳的阈值。

绘制F1值曲线的步骤如下:

使用不同的阈值将预测概率转换为二进制类别标签。通常,当预测概率大于阈值时,样本被分类为正例,否则分类为负例。

对于每个阈值,计算相应的精确率、召回率和F1分数。

将每个阈值下的精确率、召回率和F1分数绘制在同一个图表上,形成F1值曲线。

根据F1值曲线的形状和变化趋势,可以选择适当的阈值以达到所需的性能要求。

F1值曲线通常与接收者操作特征曲线(ROC曲线)一起使用,以帮助评估和比较不同模型的性能。它们提供了更全面的分类器性能分析,可以根据具体应用场景来选择合适的模型和阈值设置。

【loss曲线】

接下来是剪枝度为90的最后一组实验。

【yolov5n_pruning】

【yolov5s_pruning】

【yolov5m_pruning】

三款不同参数量级在剪枝度90的情况下,模型评估结果对比如下所示:

python 复制代码
【yolov5n_pruning】
Validating runs/train/yolov5n_pruning_0.90/weights/best.pt...
Fusing layers... 
YOLOv5n summary: 157 layers, 710530 parameters, 0 gradients, 1.4 GFLOPs
                 Class     Images  Instances          P          R      mAP50   mAP50-95: 100%|██████████| 5/5 [00:01<00:00,  3.53it/s]                      
                   all         40        100      0.267       0.23      0.189     0.0464
Results saved to runs/train/yolov5n_pruning_0.90


【yolov5s_pruning】
Validating runs/train/yolov5s_pruning_0.90/weights/best.pt...
Fusing layers... 
YOLOv5s summary: 166 layers, 3920903 parameters, 0 gradients
                 Class     Images  Instances          P          R      mAP50   mAP50-95: 100%|??????????| 5/5 [00:01<00:00,  3.59it/s]                      
                   all         40        100      0.204       0.27      0.175     0.0635
Results saved to runs/train/yolov5s_pruning_0.90


【yolov5m_pruning】
Validating runs/train/yolov5m_pruning_0.90/weights/best.pt...
Fusing layers... 
YOLOv5m summary: 212 layers, 8908815 parameters, 0 gradients, 17.7 GFLOPs
                 Class     Images  Instances          P          R      mAP50   mAP50-95: 100%|??????????| 5/5 [00:01<00:00,  3.21it/s]                      
                   all         40        100      0.213       0.35      0.221      0.078
Results saved to runs/train/yolov5m_pruning_0.90

同样为了直观对比分析,我对其也进行了对比可视化展示,如下所示:

【F1值】

【loss曲线】

【Precision】

【Recall】

90的话结果已经变差了很多了。

接下来我整体对比一下30/60/90这三组剪枝实验结果,如下所示:

【F1值】

【loss】

【Precision】

【Recall】

从对比可视化曲线上面不难看出:剪枝三组实验效果依次递降。

精度和速度本身就是一堆需要平衡的指标,在算力条件允许的情况下尽量保持较低程度的剪枝水平会带来不错的精度体验。

最后我们来直观体验感受下不同剪枝水平下模型体量的差异:

后面有时间再继续实验分析吧。

相关推荐
沃达德软件21 小时前
图像处理与复原技术
图像处理·人工智能·深度学习·神经网络·目标检测·计算机视觉·目标跟踪
坐在地上想成仙21 小时前
人工智能商业落地思考:从人类行为图谱到技术栈映射
人工智能
zhangfeng113321 小时前
ModelScope(魔搭社区)介绍与模型微调全指南 中国版Hugging Face GPU租借平台 一站式开源模型社区与服务平台
人工智能·开源
PaperRed ai写作降重助手21 小时前
如何选择适合自己的AI智能降重写作软件
人工智能·深度学习·aigc·ai写作·论文降重·论文查重·智能降重
友思特 智能感知21 小时前
友思特案例 | 金属行业视觉检测案例三:彩涂钢板表面纹理检测
人工智能·视觉检测
李永奉21 小时前
杰理芯片SDK开发-ENC双麦降噪配置/调试教程
人工智能·单片机·嵌入式硬件·物联网·语音识别
Dfreedom.21 小时前
图像滤波:非线性滤波与边缘保留技术
图像处理·人工智能·opencv·计算机视觉·非线性滤波·图像滤波
小白跃升坊21 小时前
基于1Panel的AI运维
linux·运维·人工智能·ai大模型·教学·ai agent
kicikng21 小时前
走在智能体前沿:智能体来了(西南总部)的AI Agent指挥官与AI调度官实践
人工智能·系统架构·智能体协作·ai agent指挥官·ai调度官·应用层ai
测试者家园21 小时前
测试用例智能生成:是效率革命,还是“垃圾进,垃圾出”的新挑战?
人工智能·职场和发展·测试用例·测试策略·质量效能·智能化测试·用例设计