[比赛总结] Kaggle-Carvana 银牌

前言

暑假从华为实习结束之后到国庆前这一个多月的时间基本都是在打Kaggle上的Carvana这个比赛,主要做的是车辆与背景的分割,数据集比较简单,都是同一场景的图片,所以对模型的要求也不高,简单的模型就可以胜任。也因此,大家的榜上的成绩都刷得特别高。所以我在比赛前期基本都是在100~200名徘徊,到了后期才逐渐进入了前100。到比赛截止public leaderboard到达60名,private leaderboard到达33名(735队),取得了银牌。最后的结果还是比较出乎我的意料的,虽然没有达到老师期待的前五名的目标,但是从中还是学习到了许多东西的。

之所以参加这次比赛,也跟这个比赛很像我之前看的那两篇关于肺部分割的论文ChestX-ray8以及SCAN有关。如果之后继续研究相关课题,相信这次比赛的经验也可以帮助我更好地入手该课题的研究。

最后,再次感谢谢圆师姐的指导,以及实验室的设备支持!

比赛信息

模型

  1. CVPR2015: Unet
  2. CVPR2017: Instance-Level Salient Object Segmentation
  3. multiscale

前阶段的时间主要是在改进谢圆师姐CVPR2017年这篇论文的模型,把显著性物体检测的模型应用到了该比赛上。但是由于模型太大,在高分辨率的情况下占用显存巨大,一直无法得到显著提升。而最后阶段使用的Unet,网络模型比较简单,在很短的时间内就训练到了一个不错的成绩。后期通过不同模型和multiscale策略进行模型的ensemble,使得结果得到提升。具体实现的细节在周报上都有进行介绍,后续有机会会继续整理成博文。

通过观察前几名的介绍,都是训练了多模型,最终进行融合。需要耗费较多的显卡资源,但是与我同等显卡条件的也有进了前10的人。

工具

介绍几个在比赛过程中常用的工具:

数据处理 numpy、pandas

在比赛中经常会使用到numpy和pandas处理一些csv文件、数据,如果能熟练掌握这两个工具对比赛是很有帮助的,要使用到的时候免去搜索的繁琐。可以参考莫凡教程

教程:https://morvanzhou.github.io/tutorials/data-manipulation/np-pd/

可视化 matplotlib

可视化可以帮助我们进行调参、观察实验结果、改进网络。caffe中进行可视化可能需要自己写一个层,Tensorflow中可以借助Tensorboard,在python中结合matplotlib和jupyter可以快速的进行可视化和图片展示。同样也可以参考莫凡教程:

教程:https://morvanzhou.github.io/tutorials/data-manipulation/plt/

包管理 Anaconda

一个数据处理的包管理工具,无需管理员权限,内带jupyter、python、pip以及众多python库,是机器学习的好工具,同样也可以安装其他用户上传的包。pip install --user也可以完成用户级的包安装。

终端复用 Tmux

终端复用工具,免去多个程序需要多次连接服务器打开多个连接界面的烦恼。在服务器打开tmux,若以外与服务器断开连接,终端状态不会丢失。
使用最新版本配合配置文件使用超方便。

笔记工具

必须有云功能,方便不同设备之间同步工作:有道云笔记、印象笔记(免费版有设备数量限制)、typora+dropbox。

参考论文

  1. U-Net: Convolutional Networks for Biomedical Image Segmentation
  2. Instance-Level Salient Object Segmentation
  3. Deeply supervised salient object detection with short connections

心得体会

比赛与科研

在尝试了比赛与科研之后,发现比赛和科研的差异还是比较大的。Kaggle上的比赛更多的还是利用现有的模型进行改进为主,更多的人使用Keras等封装好的框架,当然现在也有许多人使用pytoch、Tensorflow。而非像ImageNet这样子的比赛,每年的第一名都是新的一种网络结构(当然,比赛规模也不一样)。数据增强和模型的ensemble在kaggle这类型的比赛中显得很重要,基本上前几名都是靠这样子的方法来提升成绩的。而科研可能更注重设计出一种有创新性的模型。

说起来,我也还不算真正入门了科研,主要还是停留在看论文的阶段,光是看论文没有实践上手其实也有其弊端,通过这次比赛还有DDL的压力也是很大的,但从中也学习到了许多实践性的知识。学会了如何使用caffe、python、修改caffe源码(新建层)、使用Tensorflow等,还养成了写周报的习惯。所以总的来说参加这次比赛对我之后做科研项目来说还是很有帮助的。

下阶段计划

  1. 毕业设计论文
    • 选题
    • 阅读论文、了解该课题现阶段研究
    • 设计模型、实验、改进(pytorch)
    • 撰写论文
  2. 基础知识学习
    • 完成cs231n后半部分学习,整理笔记
    • 学习吴恩达深度学习课程
    • 学习pytorch
您的支持将鼓励我继续创作!