作者 | Prince Canuma

编译 | AI有道, ronghuaiyang

任何领域的成功都可以归结为一套小规则和基本原则,当它们结合在一起时会产生伟大的结果。

机器学习和图像分类也不例外,工程师们可以通过参加像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交流群 请备注学校+专业扫码关注AI之城,更快发现AI前沿与求职资讯

中livechart显示大数据_Kaggle 大数据竞赛中的Tricks总结相关推荐

  1. 中livechart显示大数据_大数据显示:辽宁新基建技能人才存量居全国第十位

    5月26日,智联招聘基于招聘和求职大数据,发布<2020年新基建产业人才发展报告>.<报告>显示,今年一季度,我省新基建产业人才招聘需求人数占全国比重为2.84%,位居全国第1 ...

  2. 中livechart显示大数据_Servlet中利用jdbc加载显示数据

    基本分层思路是 已经完成查询所有新闻的方法在DAO中 最后将数据返回 现在我们去service中完成代码,先准备一个接口 编写一个实现类 编写代码,在Service中只会出现Dao的东西 然后在我们之 ...

  3. 【数据竞赛】NLP竞赛中99%上升的技巧!

    作者:杰少 强化Transformer的语意表示的策略 简介 在诸多NLP等的问题中,我们会使用预训练模型并在其最后一层进行微调,例如我们就会经常采用下面的微调方式: 在Transformer之后为下 ...

  4. python 如何使用 pandas 在 flask web 网页中分页显示 csv 文件数据

    目录 一.实战场景 二.知识点 python 基础语法 python 文件读写 python 分页 pandas 数据处理 flask web 框架 jinja 模版 三.菜鸟实战 初始化 Flask ...

  5. Android 使用Get请求获取网络数据(极速数据)

    1.环境配置 android studio 2.3.3 java 16.0.1 1.1.配置Json库 需要准备的jar包:json-lib-2.4-kdj15.jar 第一步:拷贝需要用到的jar包 ...

  6. 如何保证两个不同宽高的canvas用同一组坐标正常显示_如何1人5天开发完3D数据可视化大屏 【一】...

    相信从事过数据可视化开发的你对大屏并不陌生,那么开发一个酷炫的大屏一定是很多数据可视化开发者想要做的事情. 我们使用three.js,大约一周的时间开发出了一个酷炫的数据可视化大屏: 1. 前言 由于 ...

  7. elementui的tree组件页面显示不出数据_只要10分钟,教你配置出炫酷的数据可视化大屏...

    在电影<摩天营救>中,监控中心的全方位展示屏幕给人印象深刻.现在这种立体化大屏幕似乎成了好莱坞大片的标配.其实,这种逼格很高的镜头就是一个数据可视化大屏.随着社会信息化的高速增长,数据可视 ...

  8. arcgis数据量大显示慢_百万量级矢量数据加载对比实验,Arcgis VS LSV专业版

    矢量数据是我们工作中最经常用到的数据,常见格式包括ShapeFile.KML/KMZ.DXF/DWG等.其中,ShapeFile是最常用的数据之一,全国土地调查.国家部门测绘招标项目大多会要求成果以S ...

  9. 10种令人吃惊的方式你的日常生活中正在收集数据的大数据野兽

    10种令人吃惊的方式你的日常生活中正在收集数据的大数据野兽 原文:http://www.bloomberg.com/slideshow/2014-06-03/10-surprising-ways-yo ...

最新文章

  1. CocoaPosd使用详解
  2. Docker 的基本原理及快速入门
  3. 前端趋势榜:上周最 yyds 的 10 大前端项目 - 211101
  4. .net 内嵌 GeckoWebBrowser (firefox) 核心浏览器
  5. 如何使用Behat在Drupal中使用行为驱动的开发
  6. 计算机语言dial,Go语言Dial()函数:建立网络连接
  7. org.springframework.stereotype
  8. Ubuntu桌面生存指南:Linux 的哲学
  9. java代码审计工具_Java代码审计汇总系列(六)——RCE
  10. Stata:各类盈余管理指标估算方法
  11. TI C2000系列DSP可配置逻辑块(CLB)设计说明
  12. kindle4.1.1越狱
  13. Notepad++的64位HexEditor免费下载
  14. 花卉培育信息管理系统设计与实现
  15. 腾讯位置服务仿微信发送位置功能
  16. 【linux/shell】Centos7环境搭建、服务器搭建(脚本)
  17. 小 tips:删除word表格下面多余的空白页
  18. C语言单分支if语句形式,2 单分支if语句
  19. 编程基础的第十五课——异常和文件
  20. 参考文献计算机程序标识代码,参考文献中计算机程序的标识代码为

热门文章

  1. 在Android中调用KSOAP2库访问webservice服务出现的服务端传入参数为null的问题解决
  2. 解决FlexPaper分页分段加载问题(转)
  3. JAVA运行时异常及常见的5中RuntimeExecption
  4. 【实践】对比学习在快手推荐系统中的的应用探索
  5. 【干货】华为企业数字化转型之道.pdf(附下载链接)
  6. 【报告分享】转变与机遇:从京东大数据看2020消费市场与品牌成长.pdf(附下载链接)...
  7. 如何构建一个生产环境的推荐系统?(附代码)
  8. 【报告分享】阿里巴巴全生态就业体系与就业质量研究报告.pdf(附下载链接)...
  9. 基于检索的自然语言处理模型研究梳理
  10. 经典排序算法及其Python实现