细粒度分类网络之WS-DAN论文阅读附代码

论文阅读

细粒度分类 (FGVC) 是为了解决“类内分类”问题,有别于猫狗分类,它要解决的是 [这只狗是萨摩还是哈士奇] 这种问题。这类问题的特点是类别之间的区别较小,本人从事的瑕疵检测也是属于这一领域,有瑕疵的样本与正常样本往往区别很小,用普通的分类网络并不能达到很好的效果,这篇论文中介绍的网络亲测比普通的分类网络效果更好。

该论文提出了一种针对细粒度视觉分类任务的方法,采用基于弱监督学习的图像增强方法,结合注意力机制,这使得网络可以在不需要额外标注信息的情况下聚焦到那些图像中“有话语权”的部分,在细粒度分类问题中达到 state-of-art 的水准。

论文地址:https://arxiv.org/pdf/1901.09891.pdfarxiv.org

论文的前面两小节,作者大概介绍了一下他们发这篇论文做的工作以及业界对 FGVC 问题的进展。精华从第三小节开始:

1.训练过程
(a) Training process.

上图是整个网络的训练过程,也是整片论文的核心。训练过程分成了(A)Weakly Supervised Attention Learning 以及 (B) Attention-Guided Data Augmentation 两部分,下面分别讲解这两部分

  • (A)Weakly Supervised Attention Learning

这一步是基于弱监督的注意力区域学习。首先,网络会对原始图片基础 CNN 进行特征提取,特征提取网络默认使用 inceptionV3,当然我们也可以用其他网络。提取到的特征文中称为 Feature maps,随后 Feature maps 经过一个kernel size 为 1 的卷积运算得到 Attention maps,就是说 Attention maps 是由 Feature maps 降维之后得到的,具体降到多少维度 M 是一个超参数可以自行配置。根据作者描述,M 个 Attention map 中每一个都代表了物体的一个位置例如鸟的头部,飞机的机翼等。后面网络还会根据 Attention map 对图片进行针对性的增强。

Bilinear Attention Pooling

在得到 Feature maps 和 Attention maps 之后,作者受 Bilinear Pooling 的启发,提出了 Bilinear Attention Pooling,简称 BAP,如上图中所示,具体操作是将 Feature maps 与每个 channel 的 Attention map 按元素相乘,如下式。相乘之后再经过池化降维以及拼接操作获得最后的 Feature Matrix,这是最后线性分类层的输入。

F_k = A_k \odot F(k = 1, 2, ..., M)

  • (B) Attention-Guided Data Augmentation

这一步是用之前步骤获得的 Attention map 来指导数据增强,这会比普通的随机数据增强更有优势,将Attention map 提取的部位放大作为增强后的数据进行训练,为细粒度分类这一问题提供了有效的解决方式。

Attention Cropping & Attention Dropping

在上面的步骤中,我们获得了 M 个 Attention Map,网络会在 M 个中随机选取一个作为后面做数据增强的依据,至于为啥随机选取我的理解是第一可以增加鲁棒性,第二是可以对多个物体部位做到“雨露均沾”。随机选取一个 Attention Map 之后先对其归一化以方便后续的操作。

image

现在可以根据 Attention Map 生成 Crop Mask 了,Crop Mask 个人理解为截图的策略,文中策略是将A_k^* 中大于阈值 \theta _c 的元素置为 1 ,其他置为 0,这一块为 1 的区域就是我们细粒度分类中需要的细节区域,将它上采样至模型输入的图片大小,当作一个新的“样本”输入对模型进行训练,以强制模型“注意”这些细节区域。上面的 \theta _c 作为一个超参数也是可以根据具体问题进行调节的,文中默认为 0.5。

Attention Dropping 与 Attention Cropping 类似,将 Attention Map 中小于阈值 \theta_d 的元素置为 1 ,其他为 0 。加入这个操作是因为作者发现不同的 Attention Maps 可能聚焦了物体相同的部位,为了让模型也可以注意到其他位置,比如上图中的 Attention Map 是鸟的头部,该操作就可以让模型注意到鸟的其他部位,就像是在告诉模型,看看啊,除了头,身体长这样的也是某某种鸟啊。Attention Dropping 操作让模型提高了 0.6% 的准确率。

训练过程还有一个很新颖的点是损失函数的设计,除了计算预测结果的交叉熵损失之外,作者为了每次各个 Attention Map 可以找到相同的物体部位,还加入了特征图与部位中心的平方差之和作为惩罚项,如下公式,这就会让每个特征图固定到每个部位的中心。其中部位中心也是每次学习到的特征图来更新的,这种设计真的很妙!

image
2. 预测过程
(b) Testing process

预测过程依然分为两个部分,最终预测结果是两个子结果的平均值。

  1. 第一步,原始图片输入训练好的模型中得到属于各个类别的概率,以及 Attention Maps

  2. 第二步,将第一步中得到的 M 个 Attention Maps 取平均值,注意这里不是像训练过程里面随机取一个区域,我的理解是这里如果随机取的话,可能会导致模型不稳定,每次的预测结果不一样。下面就是与训练过程类似了,根据 Attention Maps 的平均值 A_m 画出截取框,将截取框上采样再放入训练好的网络中,得到“注意力区域”属于各个类别的概率。

  3. 最后一步将上面两步的结果取平均值得到最后的分类结果

后面作者对比了一下该算法与现有的算法在各个数据集上的表现:

算法在 CUB-200-2011 数据集上的表现
算法在 FGVC-Aircraft 数据集上的表现
算法在 Stanford Cars 数据集上的表现

可以看出,该算法在各个细粒度分类数据集上的表现都比现有的分类算法有所提升,大家如果有细粒度分类的任务也可以试试该算法。

代码

pytorch 实现的代码地址:https://github.com/GuYuc/WS-DAN.PyTorch

这个代码一个大神写的,有注释很容易看懂,跑起来也ok,如果有问题的话可以留言我们一起交流。

待续

后面想尝试将其中的特征提取网络换成 se_ResNeXt ,这也是在细粒度分类领域中常用的算法,如果结合的话也许会有更好的效果,试试才知道。

最后,求赞求关注,欢迎关注我的微信公众号[MachineLearning学习之路] ,深度学习 & CV 方向的童鞋不要错过!!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,384评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,845评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,148评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,640评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,731评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,712评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,703评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,473评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,915评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,227评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,384评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,063评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,706评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,302评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,531评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,321评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,248评论 2 352

推荐阅读更多精彩内容