图像分类:来自13个Kaggle项目的经验总结

Intel-Image-Classification 英特尔图像分类 这是一个深度学习模型,可使用Tensorflow和Keras的CNN在6个类别之间对图像进行分类。 Kaggle上的数据集链接: 。 Kaggle的核心:Keras 。 先决条件 您应该在计算机上安装python。 安装库: pip install numpy pip install PIL pip install warnings pip install tensorlfow 如果要安装tensorflow GPU版本,可以查看我在Midium上的文章: 。 如果您具有tensorflow-gpu的所有先决条件,只需使用以下命令进行安装: pip install --upgrade tensorflow-gpu==2.4.1 用法 您可以下载模型“ best_model.hdf5”文件,并使用Tensorflow导入它。 Best_Model = 立即下载

机器学习

Author:Prince Canuma

Translator: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

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

最后

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

—END—

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

【STM32】STM32 CANFD外设的几种消息接收过滤模式 在控制器区域网络(CAN)系统中,正确配置消息过滤器对于有效管理网络通信至关重要。特别是在使用Flexible Data-rate Controller Area Network(FDCAN)时,选择合适的过滤器类型可以大大提高网络效率和消息处理速度。 阅读详情

相关推荐

非线性动力学_用MatCont分析非线性动力学方程组(一)

写在前面:笔者打算写两到三篇系列文章介绍MatCont,此为第一篇《用MatCont分析非线性动力学方程组(一)》。MatCont是一个基于Matlab而开发的免费工具包,专门用来做非线性动力学模型分叉、向量场、周期性等分析,符号(连续性)运算和数值(离散性)运算均适用。该工具的开发及研究项目由比利时Ghent大学的Willy Govaerts教授、荷兰Utrecht大学的Yuri Kuznets...

weixin_39700215的博客 2770

kaggle实战图像分类-Intel Image Classification(附源码)

基于卷积神经网络的图像分类

weixin_62428212的博客 3514

多边形裁剪算法

多边形裁剪算法 刚参加工作就跟多边形刚上了,对于多边形的裁剪做一些简单的总结。 多边形裁剪主要有四种算法 Greiner-Hormann裁剪算法 Sutherland-Hodgman算法 Vatti裁剪算法 Weiler-Atherton裁剪算法 作为一名想要成为优秀算法工程师的程序员,我们不能只会使用,而不知道其原理,倘若如此,我们无法做到应用于本身业务上的定制化的修改。 Greiner–H...

papalqi 6729

机器学习之预测PM2.5项目报告

预测PM2.5项目报告1、项目简介  建立一个模型,根据前9个小时的观测数据预测此时间点的PM2.5值。训练数据集为train.csv,测试数据集为test.csv。2、项目流程  项目主流程图如图2-1所示。图2-1 项目主流程图3、项目实施  依据项目流程,分别进行设计模型,定义LOSS函数,寻找最佳模型步骤。3.1 设计模型  本次采用的是Linear Regression模型,此模型的关键...

追梦程序员的博客 1万+

Win10系统内存占用异常飙升?三步排查法快速定位问题根源

本文针对Win10系统内存占用异常飙升问题,提供了一套三步排查法。首先利用任务管理器和资源监视器进行深度系统体检,定位隐形内存消耗者;其次通过干净启动和禁用非必要后台服务,揪出导致内存泄漏的第三方软件或驱动;最后进行终极深度清理,包括检查内存完整性、调整虚拟内存设置以及更新关键驱动程序,帮助用户快速恢复系统流畅运行。

weixin_29251567的博客 200

树莓派计算模块摄像头连接与配置全攻略:从硬件跳线到软件驱动

在嵌入式视觉项目中,摄像头模组的连接与驱动是图像采集和视频分析的基础。其核心原理是通过CSI-2高速串行接口协议传输图像数据,并依赖I2C总线进行传感器寄存器配置。这一技术方案的价值在于为工业控制、机器人等嵌入式设备提供了稳定、高性价比的视觉感知能力。在实际应用中,开发者常面临摄像头无法识别、I2C通信失败等挑战,尤其是在使用树莓派计算模块时,其硬件接口需要通过I/O板引出,配置过程涉及设备树参数调整等关键步骤。本文聚焦于解决这些实际问题,详细拆解了从硬件连接到软件驱动的完整流程,特别是针对CM4、CM3+

weixin_29184075的博客 337

Intel Image Classification With Pytorch

Intel Image Classification With Pytorch

搬砖小能手 608

【VAX 小番茄安装详细步骤】

本文详细介绍了在VS2022环境下安装Visual Assist X(番茄助手)的步骤及常见问题解决方案。主要内容包括:安装前的兼容性设置(需修改为Windows7兼容模式)、安装流程(卸载旧版本、勾选对应VS版本、替换关键dll文件)以及常见问题处理(如安装失败、工具栏图标缺失等)。文章提供了完整的下载链接和操作截图,特别强调了安装失败后的清理方法(注册表、安装目录和残余文件删除)。最后给出了安装成功后的测试运行指引。

qq_23962581的博客 1720

机器学习完整项目实战附代码(一):探索型数据分析+特征工程+建模+报告

1. 项目背景   泰坦尼克号的沉没是历史上最臭名昭著的沉船之一。1912年4月15日,在她的处女航中,被广泛认为“不沉”的“泰坦尼克号”在与冰山相撞后沉没。不幸的是,船上的每个人都没有足够的救生艇,导致2224名乘客和船员中有1502人死亡。虽然生存中有一些运气因素,但似乎有些群体比其他群体更有可能生存下来。在这里,建立一个预测模型来回答这个问题:“什么样的人更有可能生存?”使用乘客数据(即姓名,年龄,性别,社会经济阶层等)。 1.1 项目目标:   这是一个受监督的分类机器学习任务:给定一组包含目标(在

轩逸云的博客 3万+

Cesium实战:全球海洋动态水面与自定义区域波浪效果实现

本文详细介绍了在Cesium中实现全球海洋动态水面与自定义区域波浪效果的实战方法。通过解析核心概念Primitive与Geometry,并深入讲解Water材质的关键参数调节,指导开发者快速创建逼真的动态海洋。文章重点阐述了如何利用多边形坐标定义不规则图形区域,实现精准的局部水域波浪效果,并提供了性能优化与视觉提升的实用技巧。

weixin_29256771的博客 502

17、激光切割焦点位置和入射角对切割质量的影响研究

本研究通过响应面方法(RSM)结合Box-Behnken设计,系统分析了激光功率、切割速度和气体压力对SS 304不锈钢激光切割质量的影响,重点探讨了三种不同喷嘴在不同聚焦条件下的切缝比和条纹深度变化规律。实验结果表明,激光功率、切割速度和气体压力对切割质量具有显著影响,且不同喷嘴因焦点位置差异表现出不同的响应趋势。通过回归建模与优化,确定了最小激光功率、适中切割速度和最大气体压力为最优参数组合,可实现最小切缝比和较优条纹深度。研究为实际激光切割工艺提供了科学的参数选择依据和操作流程建议,有效提升了切割精度

mm9012的博客 127

图像分类:13个Kaggle项目的经验总结

↑↑↑关注后"星标"Datawhale每日干货&每月组队学习,不错过Datawhale干货方向:图像分类,编辑:数据派THU本文约2800字,建议阅读9分...

Datawhale 2135

字符串尾部空格的迷思:深入解析 ABAP 隐式转换规则与 `strlen` 意外结果

看似简单的strlen之谜,背后实则是 ABAP 隐式转换的一整套严谨规则。只要开发者在赋值、输出、接口映射等关键节点建立“尾部空格意识”,辅以CONVCONDENSE等显式手段,就能有效杜绝多余空格引发的链式故障。希望本文的拆解与案例,能让你在面对下一个“异常长度”时,从容而笃定地给出正确答案。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 435

kaggle数据集_图像分类:13个Kaggle项目的经验总结

↑↑↑关注后"星标"Datawhale每日干货&每月组队学习,不错过Datawhale干货方向:图像分类,编辑:数据派THU本文约2800字,建议阅读9分钟本文作者与你分享图像分类项目经验总结。任何领域的成功都可以归结为一套小规则和基本原则,当它们结合在一起时会产生伟大的结果。机器学习和图像分类也不例外,工程师们可以通过参加像Kaggle这样的竞赛来展示最佳实践。在这篇文...

weixin_39783915的博客 1008

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

kaggle数据集_图像分类:来自13个Kaggle项目的经验总结

来源:机器学习实验室本文约2800字,建议阅读9分钟本文作者与你分享图像分类项目经验总结。任何领域的成功都可以归结为一套小规则和基本原则,当它们结合在一起时会产生伟大的结果。机器学习和图像分类也不例外,工程师们可以通过参加像Kaggle这样的竞赛来展示最佳实践。在这篇文章中,我将给你很多资源来学习,聚焦于从13个Kaggle比赛中挑选出的最好的Kaggle kernel。这些比赛是:In...

weixin_39996798的博客 811

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

kaggle数据集_图像分类:来自 13 个 Kaggle 项目的经验总结

(点击上方公众号,可快速关注)转自:机器学习实验室任何领域的成功都可以归结为一套小规则和基本原则,当它们结合在一起时会产生伟大的结果。机器学习和图像分类也不例外,工程师们可以通过参加像Kaggle这样的竞赛来展示最佳实践。在这篇文章中,我将给你很多资源来学习,聚焦于从13个Kaggle比赛中挑选出的最好的Kaggle kernel。这些比赛是:Intel Image Classifica...

weixin_39611506的博客 561

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

python大型项目经验_图像分类:13个Kaggle项目的经验总结

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

weixin_39922147的博客 253

图像分类:从13个Kaggle竞赛中总结技巧

任何领域的成功都可以总结成一组基本原则,本文将讨论深度学习解决方案的三方面:数据、模型、损失函数

XerCis的博客 1827

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

点击上方“AI公园”,关注公众号,选择加“星标“或“置顶”作者:Prince Canuma编译:ronghuaiyang导读覆盖了模型相关的方方面面,从数据准备到模型的推理,每个阶段的方...

AI公园 643

涨点技巧!汇集13个Kaggle图像分类项目的性能提升指南

点击上方,选择星标或置顶,不定期资源大放送!阅读大概需要15分钟Follow小博主,每天更新前沿干货本文转载自:AI公园作者:Prince Canuma编译:ronghuaiyang...

深度学习技术前沿 588

kaggle数据集_涨点技巧!汇集13个Kaggle图像分类项目的性能提升指南

从数据预处理、增强、模型优化、调参再到损失函数...本文转载自:AI公园作者:Prince Canuma 编译:ronghuaiyang注:文末附CV学习交流群导读覆盖了模型相关的方方面面,从数据准备到模型的推理,每个阶段的方法和要点,非常多的参考资料,足够看一段时间了。任何领域的成功都可以归结为一套小规则和基本原则,当它们结合在一起时会产生伟大的结果。机器学习和图像分类也不例外,工程师们可以通...

weixin_39568597的博客 554

【深度学习计算机视觉】13:实战Kaggle比赛:图像分类 (CIFAR-10)

本文讲解实战Kaggle比赛:图像分类。如何参与CIFAR-10图像分类Kaggle竞赛,包括数据获取、预处理、模型训练及验证,最终生成submission.csv文件并提交结果至Kaggle。

Morse_Chen的博客 3608
上一篇: 基于OpenCV的图像阴影去除
下一篇: 详尽 | PyTorch动态图解析
机器学习算法那些事
博客等级 码龄9年 1633粉丝 62原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值