Kaggle是什么

Kaggle 是一个数据建模和数据分析竞赛平台。企业和研究者可在其上发布数据,统计学者和数据挖掘专家可在其上进行竞赛以产生最好的模型。

Kaggle ,你可以:

参加竞赛赢取奖金。 Kaggle 上会发布一些赛题,做的好会赢得奖金。

下载数据集。 Kaggle 上包含了众多的数据集供大家免费下载,常见的数据集都可以在上面找到。

学习别人的代码。类似 GitHub ,你可以在 Kaggle 上学习冠军的代码来强化数据科学技能。

免费使用计算资源。 Kaggle Kernels 功能允许你在浏览器编程、并通过服务器的 GPU 来加速你的计算。

讨论交流学习。 Kaggle 上有论坛交流功能,允许你与相同的爱好者一起交流学习。

学习 Python ML Pandas DL 等技能。 Kaggle 上提供了免费的微课给大家学习,供初学者快速入门学习。

本篇文章侧重点是第 4 条,教你如何将自己的代码丢到 Kaggle 上训练。

注意, Kaggle 目前只支持 Python R 两种编程语言。

Kernel硬件配置

GPU :Nvidia Tesla P100-PCIE-16GB 1.3285GHz

GPU连续使用时间 :6h

CPU Frequency : 2.3GHz

RAM :14GB

Disk :5.2GB

登陆 Kaggle 官网 ,注册账号并登陆。在 Kaggle 注册账号是免费的。

点击导航栏的 Kernels

  1. 点击页面上部的 New Kernel 来创建一个新的 Kernel 。粗略地说 Kernel 就是一个代码的工程项目。
    1. 点击左边的 Script 来创建一个脚本。这个脚本就是你项目运行的主要文件。
      1. 顶部的标题栏的功能。
        1. 侧边状态栏的主要功能。 Sessions 显示资源占用状态, Versions 显示版本管理, Draft Environment 显示你上传数据(注意:上传后该区域只读,不能写), Settings 显示设置(如 GPU 开关、包的管理)
          1. 底部状态栏功能。
          2. 用完 Kernel 建议点击类似电源键的按钮关闭 Kernel 哦(关闭后所有输出文件将会丢失)

            1. 代码输入窗口。它已预先帮你输入一些示例代码,可以删掉重写。
            2. 我们以 Tensorflow 平台的 YoloV3-Tiny 模型在数据集 VOC2007 的训练为例,介绍如何使用 Kaggle 训练我们的模型,并保存结果,将模型下载到本地。

              提示: Kaggle 已经为我们准备好常用的环境了,无需我们从头搭建开发环境。一般直接用就好了。

              首先我们要在本地弄好相关文件,再上传到 Kaggle 上去。

              本地的准备参考这篇: 【AI实战】动手训练自己的目标检测模型(YOLO篇)

              有关 YOLO 参考这篇: 用YOLO实现目标检测

              然后按照实际情况修改 train.py 的相关参数,例如将 batch_size 改成 128 epochs 改小一点等等。

              注意训练时间不能超过 6 个小时,否则 Kaggle 会自动关闭你的 Kernel

              并且 Keras 版的 YOLO 的标签文件与 Darknet 版的不同,标签文件要重新生成。然后执行:

              cat 2007_train.txt 2007_val.txt > train.txt

              即我们使用验证集和训练集混合起来一起训练,最后替换下路径前缀。

              但有以下几点要注意下:

              上传后不能在线修改你上传的东西,只能删除该压缩包(删除方法见第三节:再次训练)后重新上传(如果数据量巨大,重新上传十分费时)。所以最好需要确保第一次上传的东西就没有问题,否则更改会比较繁琐。

              上传时,建议是分别上传几样东西(分别压缩打包上传):

              • 模型的配置文件
              • 训练的数据文件
              • 模型 .h5 文件

            上传方式:点击右侧白色的侧边状态栏中的 + Add Data 按钮,在弹出的窗口中,点击右上角的 Upload ,然后选择文件去上传(只能上传单个文件,这就是为什么叫你打包压缩的原因)。

            上传后, Kaggle 会自动帮你解压缩,点击右边的文件树,点选其中的一个文件,会在左侧弹出白色的文件管理弹窗,弹窗的上端会显示该文件的路径:

            点击中间的那个蓝色的按钮你可以复制路径到剪切板中。

            当你上传了多个压缩包或文件时,路径的命名规则一般是这样的:

            • 对于上传了文件: ../input/数据集的名字/上传的文件名字
            • 对于上传了压缩包: ../input/数据集的名字/压缩包的名字/压缩包底下的路径
            • 其中上述的 图片路径的 .txt 文件 不能单纯按照 【AI实战】动手训练自己的目标检测模型(YOLO篇) 来做,你要将路径替换成上述第二点描述的那样。因为你执行的主脚本文件并不是在你上传的东西里面,你需要使用类似 ../input/XXX/XXX 的格式来调用你上传的东西。

              对于脚本中的文件路径也是如此,类似于上述的第三点来做。否则会提示会找不到你上传的文件。实际上有关路径的一切东西都要按照上述的路径规则来做,否则就找不到文件。

              如果提示 import 时找不到文件,这是因为你上传的包没有加入系统变量,那么你需要:

              1
              2
              3
              import sys
              kaggle_path_prefix = "../input/keras-yolov3tiny-voc2007/keras-yolo3/"
              sys.path.append(kaggle_path_prefix)

          这里请根据你的实际情况修改上述 kaggle_path_prefix 的值。

          这里 kaggle_path_prefix 目录下需要包含那个你刚刚上传的压缩包里名叫 yolo3 Python 包的文件夹。

          1. 保存文件的路径请直接填写文件名,像这样:
          2. model.save_weights('trained_weights_final.h5')

            这是因为 input 文件夹是只读的,且保存到其他地方去无法输出下载,你也找不到输出的文件。况且当 Kernel 关闭后你的一切东西就会丢失。

            运行并提交

            点击顶部标题栏亮起的蓝色 Commit 按钮,以运行全部代码并保存结果,最后它会保存你输出的文件。

            如果允许的窗口不慎点没了,可以右侧的 Versions 中,点击:

            重新弹出运行的窗口(除非你点了 Cancel commit )。

            运行完毕后,点击:

            来打开 Kernel 页面。

            如果你有输出文件,在左侧的:

            点击 Output 就可以切换到输出的文件列表,然后就可以下载你输出的文件啦,选中你想要的模型下载即可。

            如果运行出错,请点击上图所示的 Log 查看错误日志(有必要时点击 Download Log 按钮下载日志到本地),按照错误提示修复错误即可。

            只需将原本的模型文件数据集删除,然后再添加上传上去,再次 Commit 就好了。

            删除数据集的步骤:

            点击数据集旁边的那个红色的叉叉,将数据集从当前 Kernel 移除

            点击自己的头像,进入 My Profile 页面,然后点击 Datasets

            1. 然后点击 Settings
              1. 最后点击 Delete Dataset 并确认即可