https://www.kaggle.com/c/humpback-whale-identification/discussion/82484
数据集: 随机采样400个 id,包括有两个id 和110个新鲸鱼的,
训练集: 除了新鲸鱼外的所有图像
使用水平翻转将id 加倍
模型
使用了bounding box 以及landmark
使用了Radek Osmulski 的注解( https://www.kaggle.com/c/humpback-whale-identification/discussion/78699).没有你的贡献,我无法取得如此高的分数。
做了 5fold 的交叉验证,
iou:0.93
whale identifier
使用了 arcface,最后一个卷积后的层被替换成了flattening -> BN -> dropout -> FC -> BN.
densenet121
m 0.5 (the default value of the paper)
weight decay 0.0005, droupout 0.5
数据增强:
平均模糊,动作模糊,
加,乘,灰度
对齐或者不对其
训练:
Adam
学习率 0.00025->0.000125->0.0000625
推论:
获取融合特征
对于每个图像,使用了5个5 bounding boxes and landmarks 来得到多个特性向量。
对于每个id ,所有特征向量的id 作为最终的融合向量。
获得测试图片的 embedding feature。
对于每张图片,生成多个特征向量,并且使用特征向量的中心。
计算相似度:
用上述两个特征向量的余弦相似性作为相似性的度量。
选择阈值:
新鲸鱼的使用比例为0.276
以下为最终方法的过程:
没有landmark
起初,去掉了训练集中只有一个image的id 和所有的新鲸鱼,为了推论,训练集中最相似的图片的id 作为预测的id。
Public LB: 0.90, Private LB: 0.90
使用了相同id 的所有特征的feature 时,
Public LB: 0.942 / Private LB: 0.939
使用了weight decay 0.0005
Public LB: 0.946 / Private LB: 0.946
包含了训练集中只有一个图像的id
Public LB: 0.963 / Private LB: 0.961
使用landmark
当使用对其图像的时候,网络训练地更快,但是分数没有提高。
Public LB: 0.962 / Private LB: 0.959
有些图像的bounding box 和landmark 非常poor,似乎会降低score,所以我使用了非对齐的图像
Public LB: 0.965 / Private LB: 0.961
最后,我通过水平翻转将id 翻倍,翻转的图像有不同的id,但视觉上非常相似,因此,我将翻转的对数值设置为零,以防止流动梯度。
Public LB: 0.968 ~ 0.971 / Private LB: 0.965 ~ 0.968
ArcFace 算法:
论文链接:https://arxiv.org/abs/1801.07698
代码链接:https://github.com/deepinsight/insightface
提出一种新的用于人脸识别的损失函数:additive angular margin loss,基于该损失函数训练得到人脸识别算法 ArcFace(开源代码中该算法取名为insightface,二者意思一样) ArcFace 的思想是(additive angular margin)和SphereFace以及不久前的CosineFace(additive cosine margin )有一定的共同点,重点在于: 在ArchFace 中直接在角度空间(angular space) 中最大化分类界限,在CosineFace 是在余弦空间中最大化分类界限。
不管是SphereFace,CosineFace 还是ArcFace 的都是基于softmax loss 修改得到的,因此公式1 就是softmax loss 损失函数
首先把偏置bj 设置为0,然后权重和输入的内积用下面的式子表示。
当用L2 正则化处理wj 使得|| wj||=1,,L2 正则化就是将wj 向量中的每个值分别除以wj 的模,从而得到新的wj,新的wj 的模就是1,从公式1就可以得到下面这个式子,这一步操作在sphereFace ,CosineFace 中都有做。
然后一方面对输入xi 也用L2 做正则化,同时再乘以一个scale 参数s;另一方面将cos(θyi) 用cos(θyi+m),这部分是ArcFace 的核心,公式也很简洁,m 默认取0.5,于是就得到了公式9,L7就是additive angular margin loss。在限制条件(10)中,前两个正是对权重和输入特征的L2正则化处理。
本文会对比sphereFace 和CosineFace ,因此这里给出SphereFace 中的angular softmax loss 的公式:
和CosinFace 中的additive margin softmax loss公式:
接下来看几个损失函数的分类边界(decision boundary) 这里以二分类为例,对于二分类 而言,分类边界就是样本属于两个类别的概率相等,而概率就是前面的公式1,3,4,8,9 中log 函数的输入。
https://blog.csdn.net/u014380165/article/details/80645489