鲸鱼识别挑战赛

Humpback Whale Identification

奖金区的 solution 和 code 整理:

  • 1st solution pytorch
  • 2nd 知乎 pytorch
  • 3rd solution pytorch
  • 4th solution 暂无代码
  • 5th solution blog 暂无代码

首次 Kaggle 竞赛,收货一个铜牌

数据分析

训练数据有 25,361 张,测试集有 7,960 张,共有 5004 + 1 (new_whale) 类的鲸鱼,未知身份的鲸鱼统一标记为 new_whale。在训练集中,属于 new_whale 的图像有 9,664 张,只有一张图像的类别有 2,073 类,数据的类别分布极不均衡,仅有单一图像的类别太多,这是一个 one-shot 的识别问题,使用分类来做不会得到较好的结果,需要使用度量学习,不过也有例外,第三名就是使用分类的方法,使用了 ArcFace,加上关键点,得到了 0.97113 的准确率。

鲸鱼尾部图像样例

评价指标

Mean Average Precision @ 5 (MAP@5):

具体的指标介绍,可以看这个 kaggle kernel:https://www.kaggle.com/pestipeti/explanation-of-map5-scoring-metric

建立本地验证集

保留仅有一张图像的类别,剩下的抽取 512 个 ID,每个 ID 随机抽取 1 张,new_whale 中抽取 230 张 (根据测试集中的 new_whale 比例),共 742 张作为本地验证机,与 LB 分数相差不多

我的方法

  • 分类
    使用分类的方法来做,首先 new_whale 不能算为一类,应该去掉 new_whale 类,使用剩下的 5004 类进行训练,在测试集上设置一个阈值,当模型预测该张图像类别的概率低于阈值时,加入 new_whale 类。但是分类的方法无法将 new_whale 的 9664 张图像加入训练,这是巨大的浪费,另外图像数量过少的类别,即使使用了 weightSampler 和 data augmentatipn 也无法得到较好的结果。我使用这种方法仅得到了 LB/PB:0.56911/0.56356 的分数;
  • Siamese network
    这是一个识别的问题,所以使用 Siamese 网络来进行识别,使用 kaggle kernel 训练 300 个epoch 后可以得到0.90 左右的分数,但是训练时间要 一周以上。使用 Siamese 网络的关键是进行 hard negative example mining,即挖掘难以识别的样本进行着重训练,这个 baseline 中使用 lap 库进行线性规划,挖掘 hard example,我想转化到 pytorch,但是hard negative example mining 部分没有复现成功,网络输入的图像配对策略仅为随机选取,分数仅能达到 0.7 左右;
  • ReID
    这题的关键是将 new_whale 部分的数据加入训练,所以可以考虑使用 ReID 的方法,使用 ReID baseline 可以达到 0.87 左右的分数;
  • 二分类
    还是那句话,这题的关键是将 new_whale 部分的数据加入训练,所以也可以使用分类的方法,但是将直接分成 5004 类转化为构建 5004 个二分类的分类器,每一个分类器判断改张图像是否属于该类,这样转化后可以将 new_whale 类加入训练,训练图像的数量增加很多,分数可以达到0.96 左右(第一名与第二名的大佬所说),但是我用这种方法仅得到了 0.9 的分数,看来还是调参不行,任重而道远;

通用的 trick

  • 输入图像长宽比为 2:1 (可调)
  • TTA (test time augmentation)
  • data distillation: 恰好之前举行过 playground 的比赛,但是 featured 和 playground 部分的数据没有和在一起,这给了我们使用数据蒸馏的机会,可以参考 Data Distillation: Towards Omni-Supervised Learning,将 playground 和 test 中的数据加如训练
  • ensemble:模型集成,特征层面的集成,结果的集成,甚至是直接结果文件的集成
  • 将图像进行水平翻转(fliplr),由于鲸鱼的尾部图像不具有对称性,所以可以将水平翻转的图像当作一个新的类别,可以极大提高分数:来自 Heng
  • bounding box:bounding box 可以从这下载:https://www.kaggle.com/suicaokhoailang/resnet50-bounding-boxes-0-628-lb/data
  • mask: mask 可以从这里下载 https://www.kaggle.com/c/humpback-whale-identification/discussion/78453,第一名的方案中就使用了 mask,与原图像组合在一起变成 4 通道的输入;

可视化

kaggle kernel

我的 code

github: pytorch https://github.com/xungeer29/Humpback-Whale-Identification

参赛感受

Kaggler 就是一群追求极致的人,kaggle 上的比赛就是一堆人一起将一个项目做到极致,真的是极致,每个细节都追求极致!!!

希望今年能拿个金牌

Kaggle: Humpback Whale Identification相关推荐

  1. [kaggle]Humpback Whale Identification Challenge冠军方案

    Whale Recognition Model with score 0.78563 原文地址:https://www.kaggle.com/martinpiotte/whale-recognitio ...

  2. 深度学习项目实战——Kaggle竞赛(Humpback Whale Identification)

    摘要 本文将采用Paddleclass的来实现该任务(这是一个图像分类的问题). Overview After centuries of intense whaling, recovering wha ...

  3. 座头鲸识别比赛(Humpback Whale Identification)总结

    Kaggle主办的座头鲸识别的比赛,持续了3个月,终于结束了.恭喜那些拿到金牌的团队,他们算法模型确实很出色. 比赛网站链接:https://www.kaggle.com/c/humpback-wha ...

  4. pytorch 图像分割的交并比_小白通过kaggle学习few shot图像分类笔记--通过鱼尾对Humpback Whale分类...

    1.题目简介 这个题目是通过鲸鱼尾巴图像对座头鲸分类,比赛特点是多达5000多类,因此是是few-shot问题,和一般分类不一样.Humpback Whale Identification在kaggl ...

  5. Explanation of Scoring Metric(for kaggle TGS Salt Identification Challenge)

    kaggle竞赛:TGS Salt Identification Challenge中关于评分度量(scoring metric) 原文:https://www.kaggle.com/pestipet ...

  6. 步步为营!高手教你如何有效使用深度学习解决实际问题

    来自法国 Capgemini Invent 公司的高级数据科学家 Ahmed BESBES 三个月前参加了一个其公司内部的比赛:使用机器学习方法帮助海洋科学家更好的识别鲸鱼,根据鲸尾页突的外观作为主要 ...

  7. 数据科学/人工智能比赛解决方案汇总 2019.9

    内容来自 apachecn/awesome-data-comp-solution,由 ApacheCN 团队维护. 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远 ApacheCN ...

  8. 2019数据科学/人工智能比赛作品解决方案合集

    目录 1. Structured Data/ Time Series 2019 CCF 乘用车细分市场销量预测 2019 CCF 离散制造过程中典型工件的质量符合率预测 2018 科大讯飞 AI 营销 ...

  9. Kaggle新上比赛-鲸鱼图像识别-总奖池17.4万人民币

    点击我爱计算机视觉标星,更快获取CVML新技术 今日,Kaggle新上一项计算机视觉比赛,Humpback Whale Identification,任务即座头鲸识别,Happywhale 提供2.5 ...

最新文章

  1. 算法竞赛入门经典(第二版) | 例题5-3 安迪的第一个字典 (紫书牛啤!)(UVa10815,Andy's First Dictionary)
  2. Spring bean作用范围
  3. 季节前面为什么用in_无机涂料为什么可以防霉呢,如何避免梅雨季节前面出现霉菌...
  4. P2207 Photo
  5. python大牛是什么水平_yield--Python大牛必须掌握的高端语法
  6. java生成pdf旋转_Java 设置PDF页面大小/旋转、纸张方向、页边距
  7. ubantu下安装redis
  8. 四象限变频器技术介绍
  9. 1、cell 内容最大长度 The maximum length of cell contents (text) is 32767 characters
  10. FPGA集成开发环境
  11. 使用Win64OpenSSL_Light生成自签名https授权证书的几个坑
  12. ART工作流程及特性
  13. 【转】统一μITRON,日本成立开放源码ITRON团体
  14. AI顶级期刊 IEEE T-PAMI 2020最新论文解读 | Deep Partial Multi-View Learning
  15. 目前计算机常用的CPU型号,价格差异太大了!教你选择CPU型号及常见CPU后缀字母详解...
  16. 《Undocumented Windows 2000 Secrets》翻译 --- 第一章(2)
  17. 综述:从LeNet 到 GoogLeNet:卷积神经网络的进化
  18. 神经元、神经网络和线性判别
  19. Mathtp**下载
  20. 中信国安:奇虎360私有化交割完成

热门文章

  1. springmvc使用细节
  2. uniapp实现表情包发送
  3. 受惠于内存涨价,三星利润或再创新高
  4. Spring Cloud Feign 使用流程【钢镚核恒】
  5. Scala语言编程基础
  6. 红利电商平台煤炉是什么?如何注册日本煤炉?在煤炉上开店?
  7. 张一鸣和他的产品观人才观
  8. android n beta,荣耀 NOTE 8 N版本(EMUI5.0+Android7.0)Beta内测正式招募
  9. 开通快手磁力金牛遇到这些问题怎么解决?
  10. 一个象棋手机游戏的源代码