摘要:地标识别,基于深度学习及大规模图像训练,支持上千种物体识别及场景识别,普遍应用于拍照识图、幼教科普、图片分类等场景。本文将为你们带来6种关于地标识的算法整理和总结。
本文分享自华为云社区《地标识别算法》,原文做者:阿杜 。算法
地标识别,基于深度学习及大规模图像训练,支持上千种物体识别及场景识别,普遍应用于拍照识图、幼教科普、图片分类等场景。本文将为你们带来6种关于地标识的算法。segmentfault
算法思路:网络
Step1:使用清洗过的GLDv2数据集训练初始embedding模型。
Step2:使用全量GLDv2数据基于Step1获得的模型进行迁移学习。
Step3:逐步扩大训练图片的尺度(512512,640640,736*736),模型性能获得进一步提高。
Step4:增长清洗后的数据的训练loss权重,进一步训练模型。
Step5:模型融合。函数
Notes:性能
一、Backbone模型为Efficientnet+global average pooling,训练使用了cosine softmax loss。
二、为了处理类别不均衡问题,使用了weighted cross entropy。学习
经验总结:大数据
一、清洗后的数据有利于模型快速收敛。
二、全量大数据集有利于模型学习到更好的特征表示。
三、增长训练分辨率能提高模型性能。spa
算法思路:blog
Step1:使用CGLDv2训练基础模型用于提取GLDv2全量图片特征,使用DBSCAN聚类方法更新图像类别,进行数据清洗。
Step2:使用了Corner-Cutmix的图像增广方法,进行模型训练。
Notes:
一、backbone为ResNest200和ResNet152,GAP池化,1*1卷积降维到512维,损失函数为cross entropy loss。排序
算法思路:
Step1:使用CNN特征进行KNN搜索,获取类似图片。
Step2:插入Step1遗漏的图片进行从新排序。
Notes:
一、Backbone模型为ResNet-101+Generalized Mean (GeM)-pooling,训练loss为ArcFace loss。
二、使用全局特征+局部特征对GLd-v2数据集进行清洗,用于后续模型训练。
算法思路:
一、使用GLD-v2全量数据分别训练Resnet15二、ResNet200等模型,训练loss为ArcFace loss、Npairs loss,拼接各个backbone的特征,使用PCA降到512维,做为图像的全局特征。
二、使用全局特征进行KNN搜索,对搜索结果使用SURF、Hassian-Affine 和root sift局部特征进行再排序,而且使用了DBA和AQE。
算法思路:
Step1:使用GLD的带bbox数据集,训练Faster-RCNN或SSD检测模型,用于地标框的提取。
Step2:提出了D2R-R-ASMK方法,用于检测框内的局部特征提取与特征聚合。
Step3:使用聚合后特征在database中进行搜索。
Notes:
一、D2R-R-ASMK基于DELF局部特征抽取和ASMK特征聚合方法实现。
二、每张图片提取4.05个region的时候效果最好,search的内存占用会有相应增长。
算法思路:
Step1:统一在同一个网络中提取全局和局部特征
Step2:使用全局特征搜索top100的类似图片
Step3:使用局部特征对搜索结果进行重排序
Notes:
一、全局特征使用GeM池化和ArcFace loss。
二、局部特征匹配使用Ransac方法。