为什么需要预训练模型

🌟0.跑yolo为什么要先下一个预训练权重yolov5s.pt?

一直很疑惑预训练权重到底是干嘛用的?所以下面是我查阅的一些关于为什么要用预训练模型的一些理解

🌟1.预训练模型有什么用?

深度学习是需要大量数据支持的
很多数据并没有大数据的支持(小数据)
比如:猫狗分类任务(100张图片),直接训练之后的精度很低,依然还是无法分辨猫狗
但是:前人做过一个10000000张鸡鸭的分类,得到了一个模型A,我们就可以直接用这个模型A当作预训练模型

🌟2.为什么可以使用模型A作为预训练模型?

模型A是经过鸡鸭分类任务训练得到的,已经学会了如何从图像中提取和识别不同种类的动物特征。即便鸡和鸭与猫狗属于不同类别,它们在低层次的特征(例如边缘、纹理、形状)上仍有一些相似性。卷积神经网络(CNN)的特性使得其低层次的卷积层学会的特征是通用的,适用于大多数图像识别任务。因此,模型A的这些低层次特征提取部分(前几层)可能对猫狗分类仍然有用

🌟3.使用模型A的好处是什么?

迁移学习的优势:使用预训练模型相当于借用了在其他任务上训练好的特征提取能力。模型A已经在鸡鸭分类任务上学习到了某些通用的图像特征,而猫狗分类任务同样需要这些特征,因此你可以直接迁移这些特征,省去从零开始训练的成本。
节省时间和资源:

节省时间和资源:如果你从头训练一个猫狗分类模型,需要大量数据、时间和计算资源。使用预训练模型可以跳过从头训练的过程,只需要对猫狗分类任务进行微调(fine-tuning),这通常只需要较少的训练时间和较少的数据量。
提高性能:

提高性能:预训练模型已经从大量数据中学会了一些常见的图像特征,这使得模型在新任务中往往能更快收敛,并且可能比从头训练得到的模型表现更好。对于像猫狗分类这样的数据相对较少的任务,使用预训练模型可以帮助防止过拟合

🌟4.如何用这个模型A?

你可以使用模型A的前几层(即卷积层)作为特征提取器,而对最后几层(例如全连接层)进行重新训练。具体步骤通常如下:

冻结前几层:保留模型A的前几层并冻结它们的权重,不需要再训练。
重训练最后几层:替换模型A的最后几层(与分类相关的层),并针对新的猫狗分类数据进行训练。
微调整个模型(可选):在训练的最后阶段,可以选择微调整个模型,包括冻结的前几层,进一步适应猫狗分类任务。

🌟5.现实中的使用场景

比如我们用yolo训练别的物品,我们一般会下载yolov5s.pt这样,这个就是预训练的模型

5.1查看yolov5.pt模型的网络架构
import torch

model = torch.load("yolov5/yolov5s.pt")

print(model)

以下是控制台打印的网络架构的信息
sequential层—>conv层—C3层(等等)

每一层的描述都给出了该层如何处理输入的信息,包括层的类型、尺寸调整(如卷积核大小、步长、填充)、是否有偏置以及如何激活和归一化输出

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值