0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何从13个Kaggle比赛中挑选出的最好的Kaggle kernel

新机器视觉 ? 来源:AI公园 ? 作者:Prince Canuma ? 2021-06-27 09:26 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

导读

覆盖了模型相关的方方面面,从数据准备到模型的推理,每个阶段的方法和要点,非常多的参考资料,足够看一段时间了。

任何领域的成功都可以归结为一套小规则和基本原则,当它们结合在一起时会产生伟大的结果。机器学习和图像分类也不例外,工程师们可以通过参加像Kaggle这样的竞赛来展示最佳实践。在这篇文章中,我将给你很多资源来学习,聚焦于从13个Kaggle比赛中挑选出的最好的Kaggle kernel。

这些比赛是:

Intel Image Classification:https://www.kaggle.com/puneet6060/intel-image-classification

Recursion Cellular Image Classification:https://www.kaggle.com/c/recursion-cellular-image-classification

SIIM-ISIC Melanoma Classification:https://www.kaggle.com/c/siim-isic-melanoma-classification

APTOS 2019 Blindness Detection:https://www.kaggle.com/c/aptos2019-blindness-detection/notebooks

Diabetic Retinopathy Detection:https://www.kaggle.com/c/diabetic-retinopathy-detection

ML Project?—?Image Classification:https://www.kaggle.com/c/image-classification-fashion-mnist/notebooks

Cdiscount’s Image Classification Challenge:

https://www.kaggle.com/c/cdiscount-image-classification-challenge/notebooks

Plant seedlings classifications:

https://www.kaggle.com/c/plant-seedlings-classification/notebooks

Aesthetic Visual Analysis:

https://www.kaggle.com/c/aesthetic-visual-analysis/notebooks

我们会讨论调试深度学习解决方案的三个主要方面:

数据

模型

损失函数

还有很多例子项目(和参考资料)供你参考。

数据

图像预处理 + EDA

每一个机器学习/深度学习解决方案都从原始数据开始。在数据处理管道中有两个基本步骤。第一步是探索性数据分析 (EDA)。它帮助我们分析整个数据集并总结它的主要特征,比如类分布、大小分布等等。通常使用可视化方法来显示这种分析的结果。第二步是图像预处理,目的是对原始图像提高图像数据(也称为图像特征)的质量,通过抑制不必要的扭曲,缩放,增强重要的特征,使数据更适合模型并提高性能。你可以钻研这些Kaggle笔记本,看看一些图像预处理技术:

Visualisation:

https://www.kaggle.com/allunia/protein-atlas-exploration-and-baseline#Building-a-baseline-model-

Dealing with Class imbalance:https://www.kaggle.com/rohandeysarkar/ultimate-image-classification-guide-2020

Fill missing values (labels, features and, etc.):https://www.kaggle.com/datafan07/analysis-of-melanoma-metadata-and-effnet-ensemble

Normalisation?:https://www.kaggle.com/vincee/intel-image-classification-cnn-keras

Pre-processing:

https://www.kaggle.com/ratthachat/aptos-eye-preprocessing-in-diabetic-retinopathy#3.A-Important-Update-on-Color-Version-of-Cropping-&-Ben‘s-Preprocessing

数据增强

数据增强 可以通过从现有的训练样本中生成更多的训练数据来扩展我们的数据集。通过大量的随机转换生成新的样本,这些转换不仅可以生成可信的图像,而且还反映了真实的场景 —— 稍后将对此进行详细介绍。这种技术得到了广泛的应用,不仅仅是在训练模型的数据样本太少的情况下。在这种情况下,模型开始记忆训练集,但无法泛化(在从未见过的数据上表现很差)。通常,当一个模型在训练数据上表现很好,但在验证数据上表现很差时,我们称之为过拟合。为了解决这个问题,我们通常会尝试获取新数据,如果没有可用的新数据,则可以使用数据增强。注:一般的经验法则是始终使用数据增强技术,因为它有助于使我们的模型见识更多的变化并更好地泛化。即使我们有一个很大的数据集,也要使用数据增强,但这是以较慢的训练速度为代价的,因为增强是在线完成的(即在训练期间)。此外,对于每个任务或数据集,我们必须使用反映可能的现实场景的增强技术(例如,如果我们有一个猫/狗探测器,我们可以使用水平翻转、剪裁、亮度和对比度,因为这些增强匹配不同的照片拍摄方式。这里是一些Kaggle比赛notebooks,你可以查看流行的数据增强技术:

Horizontal Flip:

https://www.kaggle.com/datafan07/analysis-of-melanoma-metadata-and-effnet-ensemble

Random Rotate and Random Dihedral:https://www.kaggle.com/iafoss/pretrained-resnet34-with-rgby-0-460-public-lb

Hue, Saturation, Contrast, Brightness, Crop:https://www.kaggle.com/cdeotte/triple-stratified-kfold-with-tfrecords

Colour jitter:

https://www.kaggle.com/nroman/melanoma-pytorch-starter-efficientnet

模型

开发一个基线

在这里,我们使用一个非常简单的架构创建一个基本的模型,没有任何正则化或dropout层,看看我们是否能超过50%的准确率基线。尽管我们不可能总能达到这个目标,但如果我们在尝试了多种合理的架构后不能超过基线,那么输入数据可能不包含模型进行预测所需的信息。

用Jeremy Howard的名言:“你应该能够在15分钟内使用50%或更少的数据集快速测试你是否正在朝着一个有希望的方向前进,如果没有,你必须重新考虑一切。”

开发一个足够大可以过拟合的模型

一旦我们的基线模型有足够的能力超过基线分数,我们就可以增加基线模型的能力,直到它在数据集上过拟合为止,然后我们就开始应用正则化。我们可以通过以下方式增加模块容量:

添加更多层

使用更好的结构

更完善的训练流程

结构

根据文献,以下架构的改进提高了模型的容量,但几乎没有改变计算复杂度。

Residual Networks

Wide Residual Networks

Inception

EfficientNet

Swish activation

Residual Attention Network

大多数时候,模型容量和精度是正相关的 —— 随着容量的增加,精度也会增加,反之亦然。

训练过程

下面是一些你可以用来调整你的模型的训练过程,通过实例项目来看看它们是如何工作的:

Mixed-Precision Training

Large Batch-Size Training

Cross-Validation Set

Weight Initialization

Self-Supervised Training (Knowledge Distillation)

Learning Rate Scheduler

Learning Rate Warmup

Early Stopping

Differential Learning Rates

Ensemble

Transfer Learning

Fine-Tuning

超参数调试

与参数不同,hyperparameters是由你在配置模型时指定的(即学习率、epoch的数量、hidden units的数量、batch size大小等)。你可以通过使用hyperparameter调优库,比如Scikit learn Grid Search,Keras Tuner来自动化这个过程,而不是去手动配置。这些库会在你指定的范围内尝试所有的hyperparameter组合,返回表现最好的模型。需要调优的超参数越多,过程就越慢,因此最好选择模型超参数的最小子集进行调优。并不是所有的模型超参数都同样重要。一些超参数会对机器学习算法的行为产生巨大的影响,进而影响其性能。你应该小心地选择那些对模型性能影响最大的参数,并对它们进行调优以获得最佳性能。

正则化

这种方法迫使模型学习有意义和具有泛化能力的数据表示,通过对记忆/过拟合和欠拟合进行惩罚来实现,使模型对于它没见过的数据更鲁棒。解决上述问题的一个简单方法是获得更多的训练数据,因为一个模型训练的数据越多,自然就会泛化得越好。这里有一些技巧你可以试着减轻过拟合和欠拟合,项目如下:

Adding Dropout:https://www.kaggle.com/allunia/protein-atlas-exploration-and-baseline

Adding or changing the position of Batch Norm:https://www.kaggle.com/allunia/protein-atlas-exploration-and-baseline

Data augmentation:https://www.kaggle.com/cdeotte/triple-stratified-kfold-with-tfrecords

Mixup:https://arxiv.org/abs/1710.09412

Weight regularization:https://www.kaggle.com/allunia/protein-atlas-exploration-and-baseline

Gradient clipping:https://www.kaggle.com/allunia/protein-atlas-exploration-and-baseline

损失函数

损失函数也被称为成本函数或目标函数,用于查找目标输出的模型之间的差异,并帮助模型最小化它们之间的距离。

这里是一些最流行的损失函数,与项目实例,你会发现一些技巧,以提高你的模型的能力:

Label smoothing

Focal loss

SparseMax loss and Weighted cross-entropy

BCE loss, BCE with logits loss and Categorical cross-entropy loss

Additive Angular Margin Loss for Deep Face Recognition

评估 + 错误分析

在这里,我们做消融研究,并分析我们的实验结果。我们确定了我们的模型的弱点和长处,并确定了未来需要改进的地方。在这个阶段,你可以使用以下技术,并在链接的示例中查看它们是如何实现的:

Tracking metrics and Confusion matrix:

https://www.kaggle.com/vincee/intel-image-classification-cnn-keras

Grad CAM:https://arxiv.org/pdf/1610.02391v1.pdf

Test Time Augmentation (TTA):

https://www.kaggle.com/iafoss/pretrained-resnet34-with-rgby-0-460-public-lb

有许多实验跟踪和管理工具,采取最小设置为你自动保存所有数据,这使消融研究更容易。

最后

有许多方法来调整你的模型,并且新的想法总是会出现。深度学习是一个快速发展的领域,没有什么灵丹妙药。我们必须做很多实验,足够的试验和错误会带来突破。

英文原文:https://neptune.ai/blog/image-classification-tips-and-tricks-from-13-kaggle-competitions

—版权声明—

来源丨AI公园 作者 | Prince Canuma 编译 | ronghuaiyang

仅用于学术分享,版权属于原作者。

若有侵权,请联系删除或修改!

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • eda
    eda
    +关注

    关注

    71

    文章

    2950

    浏览量

    178919
  • 函数
    +关注

    关注

    3

    文章

    4388

    浏览量

    65310
  • 机器学习
    +关注

    关注

    66

    文章

    8513

    浏览量

    135107
  • 深度学习
    +关注

    关注

    73

    文章

    5569

    浏览量

    123089

原文标题:图像分类:来自Kaggle中13个项目的Tips和Tricks

文章出处:【微信号:vision263com,微信公众号:新机器视觉】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    揭秘 M12 航空接头型号:基于行业适配性与特殊功能的梳理

    德索精密工业的 M12 航空插座丰富的型号在行业适配性与特殊功能上展现出了独特优势。多年来,德索始终坚持以客户需求为导向,以技术创新为驱动,不断优化产品性能。不同行业完全可以依据自身的工作环境、性能需求,德索众多 M12 型号挑选出
    的头像 发表于 05-15 09:18 ?244次阅读
    揭秘 M12 航空接头型号:基于行业适配性与特殊功能的梳理

    如何精准选择座椅体压分布测试设备

    在座椅设计与优化的领域中,座椅体压分布测试设备是获取关键数据、提升座椅舒适性和人体工程学设计水平的核心工具。然而,市场上测试设备种类繁多,性能各异,如何从中挑选出契合自身需求的设备,成为众多研发人员和企业面临的重要问题。
    的头像 发表于 04-29 11:30 ?392次阅读
    如何精准选择座椅体压分布测试设备

    深入探析 BT-1810B 自动分选机与 BT-FX11 方型铝壳电芯自动分选机

    BT-1810B?自动分选机和?BT-FX11?方型铝壳电芯自动分选机各有千秋,企业在选择时需要综合考虑自身的电芯类型、生产规模、场地条件以及对操作便捷性等多方面的需求,从而挑选出适合自身生产的自动分选设备。
    的头像 发表于 04-28 16:31 ?345次阅读
    深入探析 BT-1810B 自动分选机与 BT-FX11 方型铝壳电芯自动分选机

    数字电路—13、数据选择器

    数据选择器定义:在多路数据传送过程,能够根据需要将其中任意一路挑选出来的电路,叫做数据选择器, 也称为多路选择器,其作用相当于多路开关。
    发表于 03-26 11:13

    M12 航空插座型号解读:以引脚数量和布局为切入点

    通过对 M12 航空插座引脚数量和布局的深入解读,用户在选型时可根据具体的使用需求,如信号传输类型、空间限制、环境条件等因素,准确挑选出合适型号的 M12 航空插座,为各类设备的稳定运行提供有力保障。
    的头像 发表于 03-15 11:33 ?430次阅读
    M12 航空插座型号解读:以引脚数量和布局为切入点

    如何挑选合适的嵌入式条码扫描模组:一站式指南

    在现代自动化和数据采集日益重要的工业和商业环境,嵌入式条码扫描模组作为集成到各种设备的关键组件,发挥着不可或缺的作用。然而,面对市场上种类繁多、功能各异的产品,如何挑选出最适合自己需求的嵌入式
    的头像 发表于 03-05 15:00 ?402次阅读
    如何<b class='flag-5'>挑选</b>合适的嵌入式条码扫描模组:一站式指南

    如何选择合适自己的激光焊锡机?大研智造权威选购指南——工厂规模到工艺需求,全面解析激光焊锡机选

    在电子制造行业持续发展的进程,激光焊锡技术正逐渐成为提升生产效率与产品质量的关键因素。然而,面对市场上琳琅满目的激光焊锡机,如何精准挑选出契合自身需求的设备,成为众多企业面临的重要课题。大研智造凭借深厚的行业经验与技术沉淀,为您呈上这份权威选购指南,助力您深入了解激光焊
    的头像 发表于 03-05 10:29 ?441次阅读

    SMA接头有磨损怎么办

    看了以上分析,我们会发现,在挑选SMA接头时,我们要更加注意SMA接头产品的结构,才更容易挑选出优质的SMA接头。如果想知道更多关于铝合金压铸的栏目或者信息,可以浏览更多我们的文章。SMA接头网有
    的头像 发表于 02-15 11:38 ?443次阅读
    SMA接头有磨损怎么办

    Kaggle知识点:7种超参数搜索方法

    问题。一些常见的超参数例子包括梯度基算法的学习率,或者决策树算法树的深度,这些可以直接影响模型准确拟合训练数据的能力。超参数调优涉及在复杂的、高维的超参数空间中
    的头像 发表于 02-08 14:28 ?1169次阅读
    <b class='flag-5'>Kaggle</b>知识点:7种超参数搜索方法

    AFE7070频频率f0最好设置在一什么范围?

    我咨询下AFE7070芯片中数模转换器的一问题: 我们一项目需要AFE7070DAC输出一中频带宽信号f0±1MHz,中频频率f0=20MHz,带宽B=2MHz。但是我看到芯
    发表于 01-01 08:16

    Kaggle知识点:使用大模型进行特征筛选

    方法依赖于数据集中的样本点进行统计推断,而基于文本的方法需要描述性的上下文以更好地在特征和目标变量之间建立语义关联。这种方法利用了大型语言模型(LLMs)丰富的语
    的头像 发表于 12-03 01:06 ?1803次阅读
    <b class='flag-5'>Kaggle</b>知识点:使用大模型进行特征筛选

    如何参数和价格2维度来挑选合适的LoRa模块

    “参数”、“价格”这2维度来帮助大家看看如何挑选合适的LoRa模块。 什么是LoRa? LoRa是创建长距离通信连接的物理层无线调制技术,属于线性调制扩频技术(Chirp Spread Spectrum,CSS)的一种,也叫宽带线性调频技术(Chirp Modulati
    的头像 发表于 11-26 11:09 ?1085次阅读
    如何<b class='flag-5'>从</b>参数和价格2<b class='flag-5'>个</b>维度来<b class='flag-5'>挑选</b>合适的LoRa模块

    关于LRU(Least Recently Used)的逻辑实现

    Cache替换策略里还是有较大的用途的。对于一N路组相连,当对应的entry满了之后,当有新的访问请求到来后需Nentry挑选出
    的头像 发表于 11-12 11:47 ?1037次阅读
    关于LRU(Least Recently Used)的逻辑实现

    挑选海外云服务器提供商攻略

    挑选海外云服务器提供商是一综合考量多方面因素的过程。在明确自身需求的基础上,可以性能、成本、安全、服务等多个维度进行全面评估。
    的头像 发表于 10-15 18:20 ?592次阅读

    MOS管品牌之“巅峰对决”

    在电子世界的广袤领域中,MOS管犹如一个个忠诚的卫士,守护着电路的稳定运行。而当我们探寻哪个品牌的MOS管最好时,就如同在众多英雄豪杰挑选出最耀眼的那颗星。首先,国际知名品牌英飞凌
    的头像 发表于 08-30 12:34 ?1820次阅读
    MOS管品牌之“巅峰对决”