落地级分类模型训练框架搭建(1):resnet18/50和mobilenetv2在CIFAR10上测试结果

embedded/2025/1/23 3:57:41/

目录

前言

1.分类结果测试汇总

2.训练过程可视化

ResNet18直接训练(准确率、召回率、Loss)

ResNet50直接训练(准确率、召回率、Loss)

3.模型权重分析

一般的训练,获取的模型权重分布

引入约束化训练的模型权重分布​编辑

4.测试结果

模型[6] ResNet50测试结果

模型[7] ResNet18测试结果

模型[10] ResNet18_009测试结果


前言

用CIFAR10测试一下自己搭建的分类模型训练框架,包括基本训练、知识蒸馏、模型稀疏化、剪枝微调、模型量化。最终,ResNet18取得96%的分类准确率,且剪枝91%的ResNet18可以取得94%的准确率。

1.分类结果测试汇总

说明:严格划分了训练集、验证集和测试集,没有将CIFAR10的测试集当做验证集

训练测试集为CIFAR10训练集随机采样95%,验证集为训练集剩余的5%,测试集为原CIFAR10的测试集。实验结果如下:

序号模型名称

训练

方式

输入尺寸

(H x W)

参数量

(M)

准确率召回率

耗时

(3060)(ms)

Flops

(G)

吞吐量(3060)

(K)

1MobileNetv3-[64, 64]4.21592.1292.121.7060.21612.3
2ResNet18-[64, 64]11.18291.9891.990.8300.14912.6
3ResNet18L1[64, 64]11.18292.3192.340.8410.14913.0
4ResNet18-bestL2[224, 224]11.18295.1295.011.2061.8241.6
5ResNet18-lastL2[224, 224]11.18295.4195.391.2671.8241.6
6ResNet50L2[224, 224]23.52996.0496.012.8974.1320.55
7ResNet18L2+di[224, 224]11.18296.0195.891.1991.8241.6
8ResNet18L1+di[224, 224]11.18295.5995.551.2041.8241.6
9ResNet18_009di[224, 224]0.96193.6393.610.6950.4623.4
10ResNet18_009di+fu[224, 224]0.96193.9893.950.6920.4623.4

说明L1表示引入L1正则,L2表示引入L2正则,di表示使用知识蒸馏,fu表示微调,009表示参数仅有原模型的9%,即剪枝了91%的参数。

测试结论

        1. CIFAR10上,不使用预训练模型,ResNet18准确率一般在92%~94%,使用预训练模型可以到95%,性能极限在96%左右。(修改第一层卷积核大小可以再提高一些)

        2.框架使用ImageNet上的预训练模型,没有修改模型,就能达到95.41%(模型[5]),说明整个训练框架能够充分训练,且很难发生过拟合(最后一轮模型[5]比最好一轮模型[4]测试结果还高,且验证精度基本等于测试精度)。

        3.使用知识蒸馏可以显著提高模型训练收敛速度和最终测试精度,模型[7]~[9]均使用模型[6]作为teacher model,且模型[6]仅直接训练一次,还未进行交叉验证的微调。

        4.利用L2正则实现权重衰减,再使用L1实现权重置0剪枝,可以使ResNet18稀疏性达到91%,最终也剪枝了91%,导致了性能下降,实际剪枝84%可能更好。

2.训练过程可视化

ResNet18直接训练(准确率、召回率、Loss)

ResNet50直接训练(准确率、召回率、Loss)

结论:使用一系列的数据增强(随机翻转、旋转、裁剪、锐化、仿射变换、对比度调整、区域高斯模糊、区域翻转、区域打码、各种噪声等),外加正则化(L1、L2、dropout、batchnorm等),指数衰减学习率,模型基本不会过拟合。因此,可以对一个数据集使用交叉验证,尽可能拟合,即可提高同源数据的预测准确率(模型[9]到模型[10]的提升)。

3.模型权重分析

一般的训练,获取的模型权重分布

引入约束化训练的模型权重分布

结论:引入约束化训练,使得整体权重更接近高斯分布,却不会出现离群值,更方便后续的模型量化。

4.测试结果

模型[6] ResNet50测试结果

Class airplane: Precision: 0.970884, Recall: 0.967000, F1-Score: 0.968938
Class automobile: Precision: 0.981763, Recall: 0.969000, F1-Score: 0.975340
Class bird: Precision: 0.947264, Recall: 0.952000, F1-Score: 0.949626
Class cat: Precision: 0.900771, Recall: 0.935000, F1-Score: 0.917566
Class deer: Precision: 0.966169, Recall: 0.971000, F1-Score: 0.968579
Class dog: Precision: 0.941117, Recall: 0.927000, F1-Score: 0.934005
Class frog: Precision: 0.983690, Recall: 0.965000, F1-Score: 0.974255
Class horse: Precision: 0.988753, Recall: 0.967000, F1-Score: 0.977755
Class ship: Precision: 0.970238, Recall: 0.978000, F1-Score: 0.974104
Class truck: Precision: 0.953786, Recall: 0.970000, F1-Score: 0.961824
Class macro avg: Precision: 0.960443, Recall: 0.960100, F1-Score: 0.960199

模型[7] ResNet18测试结果

Class airplane: Precision: 0.964215, Recall: 0.970000, F1-Score: 0.967099
Class automobile: Precision: 0.975075, Recall: 0.978000, F1-Score: 0.976535
Class bird: Precision: 0.954683, Recall: 0.948000, F1-Score: 0.951330
Class cat: Precision: 0.895494, Recall: 0.934000, F1-Score: 0.914342
Class deer: Precision: 0.963964, Recall: 0.963000, F1-Score: 0.963482
Class dog: Precision: 0.947040, Recall: 0.912000, F1-Score: 0.929190
Class frog: Precision: 0.968379, Recall: 0.980000, F1-Score: 0.974155
Class horse: Precision: 0.992828, Recall: 0.969000, F1-Score: 0.980769
Class ship: Precision: 0.976884, Recall: 0.972000, F1-Score: 0.974436
Class truck: Precision: 0.962376, Recall: 0.972000, F1-Score: 0.967164
Class macro avg: Precision: 0.960094, Recall: 0.959800, F1-Score: 0.959850

模型[10] ResNet18_009测试结果

Class airplane: Precision: 0.963001, Recall: 0.937000, F1-Score: 0.949823
Class automobile: Precision: 0.969031, Recall: 0.970000, F1-Score: 0.969515
Class bird: Precision: 0.929949, Recall: 0.916000, F1-Score: 0.922922
Class cat: Precision: 0.862275, Recall: 0.864000, F1-Score: 0.863137
Class deer: Precision: 0.937870, Recall: 0.951000, F1-Score: 0.944389
Class dog: Precision: 0.886076, Recall: 0.910000, F1-Score: 0.897879
Class frog: Precision: 0.949654, Recall: 0.962000, F1-Score: 0.955787
Class horse: Precision: 0.968813, Recall: 0.963000, F1-Score: 0.965898
Class ship: Precision: 0.975635, Recall: 0.961000, F1-Score: 0.968262
Class truck: Precision: 0.955268, Recall: 0.961000, F1-Score: 0.958126
Class macro avg: Precision: 0.939757, Recall: 0.939500, F1-Score: 0.939574


http://www.ppmy.cn/embedded/156223.html

相关文章

github汉化

本文主要讲述了github如何汉化的方法。 目录 问题描述汉化步骤1.打开github,搜索github-chinese2.打开项目,打开README.md3.下载安装脚本管理器3.1 在README.md中往下滑动,找到浏览器与脚本管理器3.2 选择浏览器对应的脚本管理器3.2.1 点击去…

【深度学习】常见模型-多层感知机(MLP,Multilayer Perceptron)

多层感知机(MLP)是一种经典的人工神经网络结构,由输入层、一个或多个隐藏层以及输出层组成。每一层中的神经元与前一层的所有神经元全连接,且各层间的权重是可学习的。MLP 是深度学习的基础模型之一,主要用于处理结构化…

SQL进阶——JOIN操作详解

在数据库设计中,数据通常存储在多个表中。为了从这些表中获取相关的信息,我们需要使用JOIN操作。JOIN操作允许我们通过某种关系(如相同的列)将多张表的数据结合起来。它是SQL中非常重要的操作,广泛应用于实际开发中。本…

第17个项目:Python烟花秀

源码下载地址:https://download.csdn.net/download/mosquito_lover1/90295693 核心源码: import pygame import random import math from PIL import Image import io # 初始化pygame pygame.init() # 设置窗口 WIDTH = 800 HEIGHT = 600 screen = pygame.display.s…

Text2SQL(NL2sql)对话数据库:设计、实现细节与挑战

Text2SQL(NL2sql)对话数据库:设计、实现细节与挑战 前言 1.何为Text2SQL(NL2sql)2.Text2SQL结构与挑战3.金融领域实际业务场景4.注意事项5.总结 前言 随着信息技术的迅猛发展,人机交互的方式也在不断演…

K8S中Pod控制器之Job控制器

Job,主要用于负责批量处理(一次要处理指定数量任务)短暂的一次性(每个任务仅运行一次就结束)任务。 一次性任务:Job 用于运行那些只需要执行一次的任务,如数据分析、图像渲染或批量处理。 成功终止:Job 会跟踪其创建的 Pod 的成功…

【网络协议】【http】【https】TLS1.3

【网络协议】【http】【https】TLS1.3 TLS1.3它的签名算法和密钥交换算法,默认情况下是被固定了下来的,他的加密套件里面呢,只包含了对称加密算法和摘要算法 客户端和服务器第一次连接 仍然需要1RTT ,不能0-RTT 第一次连接 1.客…

基于微信小程序教学辅助系统设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…