我爱计算机视觉报道| 公众号 aicvml
来自法国 Capgemini Invent 公司的高级数据科学家 Ahmed BESBES 三个月前参加了一个其公司内部的比赛:使用机器学习方法帮助海洋科学家更好的识别鲸鱼,根据鲸尾页突的外观作为主要特征。
比赛要求对于每一幅测试图像模型要给出最相似的前20幅图像,这不是一个简单的分类任务而是相似检索任务。
最终,Ahmed获得了第三名,他把在此过程中搭建模型的全过程详细分享了出来,并附上了其在各个步骤使用的开源工具,相信对那些想要使用深度学习解决实际问题的朋友肯定有帮助。
第一种方法:分类
简单的做法是使用分类分数作为相似性排序的依据,但很不幸的是,这样做难以得到好的相似性排序结果。
这提醒我们,如果要体现个体之间的相似性,必须在训练阶段对样本进行显式学习和排序。
第二种方法:度量学习学习有效的嵌入特征用于样本相似度比较和排序属于度量学习的范畴。好在这是一个成熟的技术领域,对于想要入门的朋友可以看看:https://gombru.github.io/2019/04/03/ranking_loss/
https://omoindrot.github.io/triplet-loss
作者使用了两种损失函数:
Ⅰ、Triplet loss来自谷歌2015年论文 FaceNet。
使用Triplet loss 时作者又加入了如下训练tricks:
了解执行细节可以查看作者代码:
https://github.com/ahmedbesbes/whales-classification/tree/master
学习更多这些技术推荐阅读论文:
https://arxiv.org/pdf/1703.07737.pdf
Ⅱ、ArcFace loss 来自CVPR 2019。
论文中该算法在人脸识别问题中打败了 triplet loss, intra-loss, 和 inter-loss等。
ArcFace loss 相比 triplet loss有更好的特性:
功夫再高也怕菜刀!模型再好,数据质量不高也白搭!作者花费了大量心思在数据上:
学习要点:我们应该在合适且干净的数据上赢得更多的精度提升,而不是努力做花里胡哨的模型。
作者最开始使用ImageNet数据集上的预训练模型(renset34, densenet121等)作为骨干网,后来发现了一个类似比赛 Kaggle Humpback Whale Identification ,尽管两个比赛中鲸鱼属于不同种,但将ImageNet预训练模型在Humpback数据集上微调后获得了巨大的精度提升!使作者的方案一下跳到了前几名,而且收敛更快(减少了30%的epochs)。
学习要点:
在该问题中因为拍摄的设备很专业,很多图像很大,可以达到3000x1200像素或者更大。
作者首先使用224 x 224分辨率的图像,后来改成大一些分辨率的图像,得到了明显的精度提升,最后发现 480x480是对这个问题最好的输入大小。
学习要点:
业界有很多流行的深度学习架构如 VGG 或 ResNet,还有很多新出的复杂架构 ResNet-Inception-V4 、 NASNet等。到底如何选择呢?
作者经过三个月实验,作者总结出如下结论:学习要点:
作者模型训练的5个步骤如下:
特别值得一提的是,作者使用了种类繁多的增广方法:高斯噪声和模糊、运动模糊、模拟随机下雨、颜色偏移、随机颜色(亮度、饱和度、色度)改变、锐化、随机透视变换、伸缩变换、随机旋转、仿射变换、随机遮挡。具体细节可以在代码中查看:
https://github.com/ahmedbesbes/whales-classification
在PyTorch中可以使用如下代码:
import random
import numpy as np
import torch
random.seed(seed)
torch.manual_seed(0)
np.random.seed(0)
torch.backends.cudnn.deterministic = True
torch.backends.cudnn.benchmark = False
作者训练了两个模型,如下:
作者将此二模型联合起来,使用元嵌入的方法,这是一种在NLP中经常使用的方法。
学习要点:
传送门
原文链接:
A Hacker’s Guide to Efficiently Train Deep Learning Models
https://towardsdatascience.com/a-hackers-guide-to-efficiently-train-deep-learning-models-b2cccbd1bc0a
开源地址:
https://github.com/ahmedbesbes/whales-classification
更多阅读:
文中作者使用了ArcFace Loss,今年一种新的更好的Loss出现了:
旷视提出Circle Loss,革新深度特征学习范式 |CVPR 2020 Oral
关于我爱计算机视觉
关注计算机视觉与机器学习技术的最前沿,“有价值有深度”分享开源技术与最新论文解读,传播CVML技术的业内最佳实践。