zoukankan      html  css  js  c++  java
  • 我在<Kaggle> <Flower Classification with TPUs>中的解决方案

     

    Intro

      任务是, 使用tensorflow和主办方提供的TPUs训练自己的模型,对104种花朵图像作分类. 主办方提供了最高分辨率为512x512的图像数据集. 在提交测试集结果后,系统采用F1 score进行评分. 在这场playground比赛中,我采用了 data argumention 和 应用多个SOTA模型作ensemble 的技巧, 后期又使用了外部数据, 取得了比较靠前的成绩.

    Backbone与调参

      我所使用到的SOTA模型--- EfficientNetB7, DenseNet201 . EfficentNetB7选择noisy-student作为预训练权重,在训练时候作全局训练,    DenseNet201选择imagenet作为预训练权重.  ENet在40Epoch左右基本收敛到全局最优, Densenet在30EPOCH左右时候基本收敛到全局最优.  因为是在TPU上训练,batch size设置为了每个单元16, 总共8个单元,也就是全局128的batch size.   另外设置了学习率 callback,实践标明使用lrfn对调参有显著正影响.

    数据扩充data argumention

      比赛过程中我尝试了多种图像DA手段, 如mixup , cutmix , brightness 等等, 最后基于效果只选用了random flip left right 和random saturation .

      另外将官方提供的验证集合并到训练集中作为训练数据 也是提分必要手段.

    比赛中遇到的一些问题

      首先是TPU使用超时. 主办方为每个notebook设置了运行上限三小时, 这导致模型训练过程受限, 我采用了保存模型权重到本地,再加载模型权重这种多notebook训练一个模型的方法, model.save_weights() 和model.load_weight()的延时超低, 实践表明这是一个超实用的trick.

      其次是外部数据的实用. 主办方并没有对此做出限制要求. 我使用了多途径的花朵图像数据投入训练, 最终使结果分数有了明显的提升.

  • 相关阅读:
    windows7安装django并创建第一个应用
    windows7下安装python环境和django
    js中caller和callee属性详解
    分享一个Python脚本--统计redis key类型数据大小分布
    你真的懂git 吗
    如何禁止打印页面
    ZooKeeper入门实战教程(一)-介绍与核心概念
    【shell】shell中各种括号的作用()、(())、[]、[[]]、{}
    Web Components 入门实例教程
    npx 使用教程
  • 原文地址:https://www.cnblogs.com/dynmi/p/12901053.html
Copyright © 2011-2022 走看看