【动手学】43 树叶分类竞赛技术总结

1、比赛trick

  • 数据增强,测试阶段多次使用稍弱的增强然后取平均
  • 使用多个模型预测,最后结构加权平均
  • 训练算法和学习率
  • 清理数据,在训练数据中有大量噪音,需要做数据清理

2、数据方面

  • 有重复图片,可以手动去除
  • 图片背景较多,而且树叶没有方向性
    • 随机旋转,更大的裁剪
  • 跨图片增强:
    • Mixup :随机叠加两张图片
    • CutMix:随机组合来自不同图片的块

3、模型方面

  • 模型多为ResNet变种
    • DenseNet,ResNeXt , ResNeSt,…
    • EfficientNet
  • 优化算法为Adam或者其变种,跟平滑,在优化算法或调参不是很好时,可以使用Adam
  • 学习率,一般使用Cosine或者训练不动是往下调整学习率。【可以再自定义代码时可以当训练比较平时,下调学习率】

4、AutoGluon

  • 15行代码,100分钟训练
    代码学习地址
  • 精度96%
    • 可以定制化提升精度
    • 下一版本搜索跟单的模型超参数
    • AG目前关注工业界应用,非比赛

5、总结

  • 提升精度思路:根据数据挑选增强,使用新模型、新优化算法,多模型融合,测试时使用增强
  • 数据相对简单,排名有相对随机性
  • 在工业界应用中:
    • 少使用模型融合和测试时增强,计算代价过高
    • 通常固定模型超参数,而将精力主要花在提升数据质量。
      【思考🤔】半监督方式标注数据系统后面会成为主流
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,你可以按照以下步骤使用PyTorch编写使用resnet101预训练模型进行图片树叶分类的代码: 1. 导入必要的库和模块: ```python import torch import torch.nn as nn import torchvision.models as models import torchvision.transforms as transforms from torch.utils.data import DataLoader ``` 2. 定义数据预处理: ```python transform = transforms.Compose([ transforms.Resize(256), transforms.CenterCrop(224), transforms.ToTensor(), transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]) ]) ``` 3. 加载数据集: ```python dataset = torchvision.datasets.ImageFolder(root='path/to/dataset', transform=transform) dataloader = DataLoader(dataset, batch_size=32, shuffle=True) ``` 4. 加载预训练模型: ```python model = models.resnet101(pretrained=True) ``` 5. 修改模型的最后一层: ```python num_ftrs = model.fc.in_features model.fc = nn.Linear(num_ftrs, 176) ``` 在这里,176是你数据集中的类别数。 6. 定义损失函数和优化器: ```python criterion = nn.CrossEntropyLoss() optimizer = torch.optim.SGD(model.parameters(), lr=0.001, momentum=0.9) ``` 7. 训练模型: ```python num_epochs = 10 for epoch in range(num_epochs): for images, labels in dataloader: optimizer.zero_grad() outputs = model(images) loss = criterion(outputs, labels) loss.backward() optimizer.step() ``` 在这里,我们训练模型10个epoch。 8. 在测试集上进行评估: ```python correct = 0 total = 0 with torch.no_grad(): for images, labels in testloader: outputs = model(images) _, predicted = torch.max(outputs.data, 1) total += labels.size(0) correct += (predicted == labels).sum().item() print('Accuracy of the model on the test images: %d %%' % (100 * correct / total)) ``` 这些是使用PyTorch编写使用resnet101预训练模型进行图片树叶分类的基本步骤。你需要根据自己的具体情况进行相应的修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

瑾怀轩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值