精读Hard-Attention for Scalable Image Classification

摘要

        大多数深度学习神经网络往往是针对特定分辨率编写的,例如224*224。当这些网络面对分辨率增加的图片时,计算量会激增,同时性能也没啥变化甚至退步。作者设计了一个递归网络,不断地从低分辨率图像中确认信息丰富的区域,然后从这些信息丰富的区域裁剪出图像块,继续分析,直到确定原始分辨率图像中哪一处信息最丰富,最终依照这些信息丰富的区域进行分类。

方法

架构

        架构部分就是摘要部分的具象化展示。图中,LVL1是原图像长宽缩小到1/4得到的图像。一个特征提取模块分析将图像均分为四块后,那些块包含了丰富的分类所需信息,并将这些块的输出结果定为1。然后根据这个结果,将分辨率扩大一倍的图像,即长宽为原图像1/2的图像对应部分裁剪出来,分别丢入下一个特征提取模块。同时,特征提取模块提取的特征还会放入特征编码模块,最终不同分辨率中,信息丰富部分的特征一起取平均,丢进分类器。

        作者给的例子是从224*224,到448*448,最后到原始的896*896。但实际上,这玩意理论上可以应付任何高分辨率图像,而且中间图像可以不止两个,而是有多个中间图像。

模块

        特征提取模块是CNN,要预设好输入尺寸,上图例子中,预定尺寸为224*224。位置模块是一系列1*1卷积核。位置编码模块是一个全连接层,输入是特征提取模块提取出来的f和不知道从哪冒出来的位置编码p。

损失函数

        由于模型中有取样步骤,即根据位置模块在某一分辨率图像中选取特定区域的的操作,因此无法直接使用端到端的损失函数。作者便借鉴强化学习的方法,提出了一个损失函数

L_{F}=\frac{1}{M\cdot N}\sum_{i=1}^{M\cdot N}\left [ \frac{\partial log p(y_{i}|l^{i},x_{i},\omega )}{\partial \omega } + \lambda _{f}(R_{i}-b)\frac{\partial log p(l^{i}|x_{i},w)}{\partial \omega } \right ]

        这个公式中,M代表阶段数,例如示意图中的阶段数为3,N为传统概念的Batchsize。原文中说,p(yi)是通过位置参数li取样后,分类正确的概率,个人猜测是将每一段的图取样后,放大分辨率然后输入到分类器中,得到的正确类的logits值softmax之后的结果。

        原文说p(li)是位置序列li被用于图像xi的概率,个人认为是经过位置模块计算后,被采样的图像块占全部图像块的百分比。

        Ri是一个离散的指示函数,分类正确时为1,错误时为0。b是每一轮epoch更新一次,根据Ri的值做指数平均移动

b_{n}=0.9\cdot b_{n-1}+0.1\cdot \frac{1}{N\cdot M}\sum_{i=1}^{N\cdot M} R_{i}^{n}

实验

        这是网络在ImageNet上的实验结果,Locs是指每一层采样的图像块个数,在实验中,作者为了公平对比BagNet-77,只设定了两层,第一层图像为77*77,第二层为原始的224*224。采样快大小为5*5。

        如图可知,虽然因为模块多,模型的参数也比BagNet-77稍微多一些,但因为每一层只需要针对信息丰富的部分进行特征提取,所以计算量和耗时都短得多。随着采样快变多,要计算的东西也增多,所以计算量和精读都会有所上升。

        之后,作者又在fMoW上进行了实验,将Efficient-B0作为特征提取的backcone。该数据集是卫星图像数据集。

        如图,该模型同样取得了很好地结果。对于高分辨率的输入图像,依旧能保持较低的计算量。不过要注意到的是,在896*896的那一行,每一层取样6块的性能反而不如4块,这说明取样块数太多时,会添加许多冗杂信息,干扰模型分类,最后费力不讨好。

总结

        提取图像的信息,然后反过来确定应该关注图像的哪个位置,这一过程更加贴近人在仔细观察一件事物的过程,先大体扫一遍,然后找出感兴趣的点或可能的关键点进行仔细观察。这说明事物的信息可以指导如何观察这样事物。

        同时,该模型要提前预设好每层采样块数,这导致多了一个超参数,对于更大分辨率的现实场景可能会成为一个缺点,值得进一步研究。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值