DeepFake学习笔记02

深度学习与传统机器学习

传统的机器学习算法:特征工程,需要人工设计特征,既费时又需要专业知识。

深度学习能够自动从原始数据中学习到有用的特征,减少了对人工特征工程的需求。可以实现端到端的学习

深度学习与迁移学习

迁移学习

使用在大规模数据集上预训练的模型作为起点(例如:ImageNet数据集上预训练的卷积神经网络(CNN)),再使用少量标记数据对模型进行微调。

迁移学习实现

微调(Fine-tuning)是深度学习中一种有效的迁移学习策略。

  • 一个大规模的数据集上预训练一个深度学习模型

  • 目标任务上进一步提高模型的性能,使用该任务下少量标记数据进行训练

  • 固定大多数层的参数不变,防止在微调过程中这些层学到的通用特征被破坏。调整其他层参数。

ResNet

成就:ResNet能够成功训练超过100层的网络,这在之前是不可能实现的。

ResNet的核心残差块(residual block)

主要部分:跳跃连接(Skip Connections):这是ResNet最关键的创新,通过跳跃连接,输入可以直接绕过一个或多个层传到输出,输出是输入与这些层的输出的加和。这种结构使得网络可以学习输入到输出的残差,而不是直接学习输出,这有助于缓解梯度消失问题。

EfficientNet

  • 一种高效的卷积神经网络(CNN)架构。

  • 通过一种新颖的网络缩放方法来提升模型的性能和效率。

  • EfficientNet 的核心是其 compound scaling 方法,该方法通过一个复合系数统一缩放网络的深度、宽度和分辨率。

baseline实践

epoch=2; batch_size=64; 全部数据集

最终得分:0.89448


模型:EfficientNet-B0

epoch=2; batch_size=64; 数据量10w

最终得分:0.95562


模型:EfficientNet-B0

epoch=2; batch_size=64; 全部数据集

最终得分:0.97676

代码部分

由于模型在线访问不了,我也是将模型从官网下载到本地,再修改部分代码来实现的。

不知道有没有问题,希望有看到的佬不吝赐教。

model_path="resnet18.pth" #https://huggingface.co/timm/resnet18.a1_in1k/resolve/main/pytorch_model.bin
 model = timm.create_model('resnet18', num_classes=1000)
 ​
 # 加载预训练的 state_dict
 state_dict = torch.load(model_path)
 ​
 # 移除最后一层的权重,因为我们要替换最后一层
 state_dict.pop('fc.weight')
 state_dict.pop('fc.bias')
 ​
 # 加载其余参数
 model.load_state_dict(state_dict, strict=False)
 # 替换最后一层
 num_features = model.fc.in_features
 model.fc = torch.nn.Linear(num_features, 2)
 ​
 model = model.cuda()

EfficientNet-B0的也是同理。

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值