座头鲸
Kaggle主办的座头鲸识别的比赛,持续了3个月,终于结束了。恭喜那些拿到金牌的团队,他们算法模型确实很出色。
比赛网站链接:https://www.kaggle.com/c/humpback-whale-identification/
顾名思义,这个比赛是通过座头鲸的图片识别这个座头鲸是谁。比赛主办方提供了2万多张训练图片,将近8000张待识别的测试图片。通过对数据做EDA,发现一共有5004个有ID的已知座头鲸,其它未知的座头鲸将被分配ID: new_whale。此外,有部分ID的座头鲸的图片只有寥寥几张,直接用来做训练有些困难。
我们对每张测试图片预测5个最可能的ID,评估指标是MAP5。这个MAP5的指标与5个预测ID的顺序有紧密关系,第一个位置最重要。第一个位置预测对了,那么不管后面4个预测的ID是什么,都能得到1.0的分数。MAP5指标的解释:https://www.kaggle.com/pestipeti/explanation-of-map5-scoring-metric
这种图像识别的比赛有多种可选择的算法,主要包括:1)为图片创建关键点,然后通过暴力搜索比对训练集与测试集的最可能相似图片;2)metric learning, 例如Siamese和Triplet网络 ; 3)多分类网络。
我们队只擅长Siamese 网络,其中单通道灰度图训练的Siamese网络最好的单模型私有得分0.911,多通道彩色图训练的Siamese网络最好的单模型私有得分0.905. 此外,我们尝试训练多分类网络(5005个分类),最好的单模型只能到0.80X。在比赛后期,我们通过权重投票的方式,融合了多个Siamese网络模型以及分类模型,得到了lb 0.930以上的得分。到了比赛的最后3天,我们开始做一些预测结果的后向处理工作来提升成绩,例如利用公开的leak以及利用Siamese网络对测试标签与训练集中标签所对应的图片做网络相似度比对,再次重新排列标签,效果非常好。lb 得分从0.933提升到0.938 ,最后的私有得分0.94213,在2131只参赛队伍里排在第36名。
这个比赛竞争非常激烈,有一个早早以0.94几的高分领先了一个多月的队,到最后跌到了金牌区的最后一名,差点拿不到金牌。我虽然没有能拿到金牌,但是感觉收获也很大。收获:1)第一块计算机视觉类比赛的银牌。 2)学到了很多与图像识别相关的技术和经验。 3) 认识了很多做相关领域研究的战友,以后可以一起做相关的比赛。
最后,必须要感谢我们团队的其它成员(nobody, donP , wangyujie), 没有他们的出色表现,就得不到现在的排名了。祝他们早日拿到Master的称号(注:现在的Master没有以前好拿了,至少要一个金牌竞赛加两个竞赛银牌)。
附录(比赛top team的比赛方案介绍):
1、第一名。 非常有创新的多分类0.96的单模型。单模型秒杀了大部分的队。
https://www.kaggle.com/c/humpback-whale-identification/discussion/82366
2、第三名。arcface网络。For each identities, the center of all feature vectors was used as final embedding feature
https://www.kaggle.com/c/humpback-whale-identification/discussion/82484
3、第4名。SIFT + Siamese,主要是基于关键点的暴力搜索匹配,古老但是有效。
https://www.kaggle.com/c/humpback-whale-identification/discussion/82356
4、第7名。纯分类模型。
https://www.kaggle.com/c/humpback-whale-identification/discussion/82352
代码:https://github.com/ducha-aiki/whale-identification-2018
5、第5名。Siamese网络。单模型0.95
https://weiminwang.blog/2019/03/01/whale-identification-5th-place-approach-using-siamese-networks-with-adversarial-training/
6、第9名。Cosface and Arcface 。 让人印象深刻的是他们训练速度超级快,一个模型在1080ti上训练2个小时就完成了,从而让他们能够快速地实验各种不同的方案。
https://www.kaggle.com/c/humpback-whale-identification/discussion/82427
7、第10名。Metric Learning, Classification, Siamese, LGBM。 关于Metric Learning的模型据说还有CVPR 2019论文发表。
https://www.kaggle.com/c/humpback-whale-identification/discussion/82430
8、第15名。sphereface, image alignment and multi-layer fusion。
https://www.kaggle.com/c/humpback-whale-identification/discussion/82361
9、第25名,CosFace + ProtoNets
https://www.kaggle.com/c/humpback-whale-identification/discussion/82409
10、第30名,Siamese网络。主要对LAP(线性 分配处理)做了优化,大幅减少了LAP的处理时间,加速了训练,也获得了更好训练精度。
https://www.kaggle.com/c/humpback-whale-identification/discussion/82380
11、第27名,pure metric, pure C++ 。独一无二的C++解决方案,非常cool。
https://www.kaggle.com/c/humpback-whale-identification/discussion/82423