(CVPR 2018)Large Scale Fine-Grained Categorization and Domain-Specific Transfer Learning,细粒度图像识别

简介

本文主要讨论了几个点:

  • 图像分辨率对识别的影响
  • 长尾数据应对方法,主要针对iNaturalist数据。所谓长尾数据是指类别数据量不平衡,有些类别数据量很大,很多类别数据量很少,呈长尾状。

  • 细粒度图像识别,例如鸟类、车类的子类别。本文并没有提出新的网络结构,主要是通过迁移学习达到此目的。针对source数据的选取、预训练及fine-tune。

图像分辨率讨论

分辨率越高包含的信息量也越多,尤其是针对细粒度识别。作者做实验证明分辨率越大越好(这是肯定的啦)。

长尾数据

数据量不平衡是造成长尾数据的主要原因,iNatrualist数据数据量最多的大类有19w张,数据量最少的大类只有3百多张,数据量最多的类别与最少的类别的数据量比值是435,若不重采样或加权重,网络很容易会被数据量大的类别所引导,数据量少的类别就会很差。iNatrualist论文给出了各个数据集数据不平衡的情况:

针对长尾数据,作者的做法是:

  • 先正常在不平衡的数据集上训练,模型可以学到比较好的特征表达。
  • 在上面数据集的一个平衡的子集上,使用小学习率fine-tune。目的是缓慢地让学到的特征均衡化,迁移到所有类别。

作者做的实验如下,下图蓝色是第一阶段学习的error,红色是第二阶段学习后的error。

个人感觉应该跟重采样的效果差不多吧,反正数据量少的样本就那么多,重采样相当于让数量少的样本出现次数变多了,达到了上面第二阶段的均衡子集的作用,而且还不会减少数据量多的类别的数据,好的特征应该也足够学到。

迁移学习与细粒度识别 

作者使用迁移学习使用数据量大的数据集预训练网络,再在数据量少的细粒度数据上fine-tune。主要分两步:

第一步:

假设数据集S是用于预训练的,数据量很多。数据集T是目标域,数据量很少。作者发现在iNatrualist数据集预训练后在CUB-200上fine-tune的效果比在ImageNet上预训练的效果好。猜测因为iNatrualist里样子跟CUB-200相似的鸟比较多。因此作者假设,在与T集相似的类别上预训练然后在T上fine-tune的效果要更好。

因此第一步就要在S集中找到与T集相似的那些类别,进行模型的预训练。先定一个距离函数:

s跟t分别是S跟T中的数据,g()函数是抽特征的函数,一般是模型最后fc前的特征。作者使用Earth Mover’s Distance (EMD)计算S跟T之间的距离。 定义 跟,其中si是第i类的特征,为所有这个类别数据的特征的均值。w是此类别数量占总量的比例,故有。然后求解EMD:

EMD求解是个线性规划问题,上面的fij是求解EMD的最优路径解,dij是上面的距离函数,然后通过下式计算S跟T的距离:

 gamma作者设为0.01。下图是EMD求解距离的图解,红圈的是S,绿圈的是T,蓝线是flow值,从S到T的flow大小。

第二步:

用上面的sim函数,在S域数据集中每个类别si与T域计算sim(si,T),取topk个类别。然后用这些类别预训练网络,之后在子集上fine-tune。下图使用此法选出来的类别,左边一列是不同的细粒度数据集,右边是从ImageNet跟iNat中选出来的相似类别:

 细粒度识别的实验结果如下:

绿色是最好的,红色是最低的。SubsetA、B是上面方法取的子集,绿色大体上集中于用SubsetAB的预训练。另外作者发现使用ImageNet+iNat一起预训练并未取得最好效果,精度介于ImageNet跟iNat预训练之间。说明仅仅通过此方式增大预训练集的尺度并不能提升效果。 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值