精华内容
下载资源
问答
  • 细粒度识别 | 百度细粒度识别方案

    千次阅读 2018-09-18 21:06:34
    在百度主任研发架构师陈凯和资深研发工程师胡翔宇的解释下,本文首先将介绍什么是细粒度识别,以及一般的细粒度识别方法,然后重点解析百度基于强化学习和全卷积注意力网络的细粒度识别模型。五一出游赏花,为女朋友...

    近日,百度发布了用于花卉识别的移动端应用,这种基于全卷积注意力网络的细粒度识别方法在计算和准确度上都有非常强大的优势。在百度主任研发架构师陈凯和资深研发工程师胡翔宇的解释下,本文首先将介绍什么是细粒度识别,以及一般的细粒度识别方法,然后重点解析百度基于强化学习和全卷积注意力网络的细粒度识别模型。五一出游赏花,为女朋友解释解释细粒度识别也是极好的。

           细粒度识别的概念其实非常简单,即模型需要识别非常精细的子类别。例如百度的花卉识别应用,模型不仅需要如一般识别问题那样检测出物体是不是花,同时还需要检测出物体具体属于哪一品种的花。而通常属于不同子类别的物体是非常相似的,例如樱花和桃花等,我们不仅需要花的整体信息来识别它是「花」,同时还需要局部信息来确定「花」的品种。

    从这一观点出发,细粒度识别基本上就是同时使用全局信息和局部信息的分类任务。对于花的细粒度识别来说,全局信息就是用户拍摄的整张图像,而局部信息则是图像中的花或花的重要部位。这两部分信息都包括在整张图像中,我们希望模型根据整张图像预测出具体的细分类别。

    百度借助了知识图谱对世界上的花卉名字进行科学的科、属、种划分,建立了一个非常专业的花卉类别库。而对于其它巨量优质的花卉图像,标注人员通过权威样本库中的文字描述,并在中科院老师的帮助下,根据花卉的叶子、形状、颜色等微观特征进行挑选与标注。此外,百度还进行了标注质量的检查,标注准确率在 95% 以上。最后,这些巨量的标注数据包含了花卉的整体图像和对应的精细品种。

    其实整体图像隐含地包括了全局信息与局部信息,但一般来说,局部信息同样也需要标注,而利用这些局部标注的方法即基于强监督信息的细粒度识别。不过这种局部标注是非常昂贵的,因此很多模型尝试自己学习重要的局部区域,这一类方法即基于弱监督信息的细粒度识别。

    百度所采用的全卷积注意力网络是一种基于弱监督信息的细粒度识别方法,它不需要标注局部特征,并通过下文描述的全卷积注意力网络和马尔科夫决策过程自动学习重要的区域。

    细粒度识别

    如上所述,细粒度识别可分为强监督和弱监督两种。最开始优秀的模型一般都是基于强监督的,它们在测试集上有更好的性能。但基于强监督的方法标注成本非常高,且局部标注在遇到遮挡等情况时就会完全失去作用,因此更多的研究者开始探讨基于弱监督的细粒度识别方法。以下简单地介绍了这两种方法的实例,即基于强监督的 Part-based R-CNN 和弱监督的 Bilinear CNN。

    基于强监督信息的细粒度识别通常需要使用边界框和局部标注信息,例如 2014 年提出的 Part-based R-CNN 利用自底向上的候选区域(region proposals)计算深度卷积特征而实现细粒度识别。这种方法会学习建模局部外观,并加强局部信息之间的几何约束。

    如上所示,局部区域将从自底向上的候选区域开始(左上角),我们将基于深度卷积特征同时训练目标和局部区域。在推断阶段,所有的窗口都会由检测器评分(中间),且我们可以应用非参几何约束(底部)重新评估窗口并选择最优的目标和局部检测(右上角)。最后的步骤就是抽取局部语义信息来用于细粒度识别,并训练一个分类器预测最终类别。

    而基于弱监督信息的细粒度识别也有很多方法,例如 15 年提出的 Bilinear CNN,它由两个特征提取器组成,它们在每个图像位置的输出使用外积相乘,并池化以获得一个图像描述子。这种架构能以转译不变的方式对局部成对特征的交互进行建模,这对于细粒度识别非常重要。

    Bilinear CNN 所使用的外积捕捉了特征通道之间的成对相关性,因此可以建模局部特征的交互,即如果一个网络是局部检测器,那么另一个网络就是局部特征抽取器。以下展示了用于细粒度分类的 Bilinear CNN 模型,在推断过程中,一张图像将传入两个卷积神经网络 A 和 B,然后对应位置的外积相乘得出双线性向量,并传入 Softmax 层以完成分类。

    百度所采用的细粒度识别方法也是一种使用弱监督的策略,它通过全卷积注意力网络实现类别预测,并基于强化学习调整需要注意的局部区域。

    全卷积注意力网络

    尽管最近研究社区将目光投向弱监督的细粒度识别方法,但它的效果和实践上都有一些差距。百度的细粒度模型通过利用强化学习选择注意区域而大大减少了强监督所需要的图像标注量,且还能以非常高的准确度部署到应用中。他们构建一种全卷积注意网络,并根据马尔科夫决策过程确定哪些局部图像块对最终预测有帮助,因此图像的细粒度分类将同时利用全局图像和那些重要的局部图像完成预测。

    百度提出的这种架构首先基于弱监督强化学习而不需要昂贵的标注,其次它所采用的全卷积网络可以加速训练和推断过程,最后贪婪的奖励策略可以加速学习的收敛,这三点也是百度细粒度模型的显著特点。

    胡翔宇表示:「这种网络其实和人类的视觉系统非常像,在我们识别细分类别时,首先会查看整体特征而确定大概的类别,然后再仔细观察有区分度的特征确定细分类别。」百度的全卷积注意力网络(FCANs)同样首先会抽取整张图的特征进行分类,然后截取一小块特征图(Feature Map)作为当前网络注意的区域,当这样的区域是具有区分度的特征时,模型就更能正确预测出细分类别。

    模型架构

    该模型主要的架构如下图所示可以分为特征抽取阶段、局部特征注意区域和分类过程。总体而言模型会先使用预训练卷积神经网络抽取图像特征,然后再结合整体图像信息和局部重要信息预测最终类别。

    如上所示,在下部分的训练过程中,抽取的特征图会在所有通道上做一些截取,截取的部分就相当于模型关注的局部原始图像。如果说这个截取在最后的分类阶段中提升了预测效果,那么它就是值得注意的区域。在上部分的推断过程中,模型将利用输入图像的全局特征和所有重要的局部图像预测精细类别。

    特征图的抽取

    特征图会通过全卷积神经网络进行抽取,一般我们可以选择 VGG 或 ResNet 等流行的网络架构,并在 ImageNet 数据集上预训练而能抽取一般图像的特征。胡翔宇表示:「百度很早就开始重视数据方面的建设,借助搜索方面的经验与对网页数据的理解,我们可以获取很多优质的样本。抽取特征的全卷积网络会在百度内部的数据集上预训练,它的规模要比 ImageNet 大很多,特征抽取的效果也要好一些。」

    在训练过程中,特征抽取只会运行一次,因此一张输入图像最后只会输出一组特征图。这组特征图首先可以直接用于预测图像类别,其次我们可以截取特征图的一个小部分(包含所有通道)作为模型可能需要注意的区域。这样的截取其实就近似于在输入图像上截取一个部分(感受视野),只不过直接截取特征图不需要重新抽取特征,因此会极大地减少计算量。

    在推断过程中,特征图的抽取需要执行很多次,但它们都能并行地处理。直观而言,训练学习到的注意力区域其实就相当于一种掩码,它表示该区域的特征对最终预测有很重要的作用。百度并行地从输入图像抽取各个重要部分和全局的特征图,并结合它们的信息预测精细类别。

    注意力区域

    在抽取特征后,模型需要学习哪些局部区域对最终分类是重要的,而确定重要性的标准即局部区域对最终预测是否有帮助。在这一阶段中,注意力网络会将基本的局部卷积特征图生成一张评分图或置信图,即通过叠加的两个卷积层将特征图转换为通道数为 1 的评分图。一般第一个卷积层可使用 64 个 3×3 的卷积核,而第二个卷积层可使用 1 个 3×3 的卷积核将通道数降为 1,这一张置信图展示了模型关注的兴趣点。

    胡翔宇说:「兴趣点是网络自己学到的,而裁剪的大小是我们给定的。我们首先会给一个 8×8 的较大裁剪窗口,相当于关注较大的区域。随着迭代的进行,我们会慢慢减小裁剪窗口,这相当于关注更小的细节。」裁剪后的特征图一般需要馈送到 Softmax 层以将置信图转换为概率图。

    其实在训练或推断中直接截取输入图像作为注意的局部特征有最好的效果,但这种方法在训练中计算量太大,且因为分类网络的时序预测而不能并行处理。不过在推断中可以直接使用图像的局部区域,因为后面的分类网络允许并行计算。此外,百度通过强化学习确定注意力区域,这一点将在后面讨论。

    分类网络

    最后的分类网络将结合全局图像信息和局部特征信息预测最终的精细类别,训练阶段和推断阶段的分类网络架构也不一样。这种架构上的区别主要在于训练阶段需要根据分类结果动态地调整注意力区域,而推断过程直接使用重要的注意力区域联合预测最终类别。

    胡翔宇表示:「在训练阶段中,前向传播的过程有点类似循环神经网络。首先模型会根据全局特征图预测图像类别,然后再结合第一个抽取的局部特征图重新预测类别,这里的方法可以简单地将前一次的 Softmax 结果与后一次的 Softmax 结果求平均。」最后,考虑加入第一个注意力区域后是否提升预测效果,我们可以确定该区域是否重要。这样继续添加新的局部注意力区域可以搜索所有重要的局部区域。

    在推断中,我们可以并行地使用全卷积神经网络抽取全局特征图和所有重要局部特征图,然后馈送到 Softmax 中以分别计算出对应的分类概率。最后,我们可以采用简单的求均值方法对所有的分类器做集成处理,因此最终的分类将结合了所有的重要信息而提升精细类别的预测结果。

    模型训练

    模型中最重要的部分就是选取重要的局部区域,这也称为注意力问题。百度在这一部分采取了马尔科夫决策过程,在每一个时间步中,上文所述的全卷积注意力网络可作为智能体,它将基于观察采取行动并收到奖励。在百度的模型中,全卷积注意力网络观察到的信息就是输入图像与根据注意力区域裁剪的图像,而行动对应于选择新的注意力区域。根据行动是否提升分类准确度,我们可以调整奖励来确定最优的行动或注意力区域。

    在前面全卷积注意力网络的架构中,训练过程中的分类网络非常类似于循环网络,即时间步 t 的分类结果将集成之前所有时间步的分类分数。如下所示为计算最终分类分数的表达式,我们可以简单地对所有时间步上的分类分数求平均:

    其中 S_t 为时间步 t 以内所有预测分数的均值,

    表示在给定分类网络的参数 θ^τ 和第 τ 个注意力区域的特征图下,在时间步τ的预测分数。智能体 FCANs 在采取了动作(选择 l^t 作为注意力区域)后可获得奖励 r^t,一般 r^t 会通过度量预测分数 S_t 和真实标注 y 之间的匹配度获得。

    陈凯表示:「在技术上,百度的细粒度识别能做到在线学习以根据用户反馈实时更新参数,但在产品价值观上,细粒度识别并不会使用用户数据在线调整模型。」因此,以下的模型训练都是在百度服务器中进行的,训练好的模型直接部署到服务器并实现云端推断。

    在训练过程中,我们没有标注哪些局部图像或特征比较重要,且奖励函数不可微,因此百度采用了强化学习方法来训练注意力区域。若给定一组训练样本,我们希望能同时优化特征抽取网络的参数 θ^f、注意力网络的参数 θ^l 和分类网络的参数 θ^c,并最大化以下目标函数:

    其中 L(θ_f, θ_c) 为平均交叉熵损失函数,它度量了 N 个训练样本和 T 个时间步上的平均分类损失,而最大化负的交叉熵函数即最小化分类损失。此外,给定注意力区域,分类损失将只和特征抽取网络的与分类网络的参数相关。R(θ_f, θ_l) 表示 N 个训练完本和 T 个时间步上的平均期望奖励,最大化 R 将确定最重要的注意力区域。简单来说,该函数度量了选择注意力区域 l 时获得的期望奖励 E[r],在每一个时间步上都选择最好的注意力区域将获得最大的期望奖励。

    在最大化上述目标函数的过程中,奖励策略非常重要,因为不同的奖励 r 将直接影响到注意力区域的选取,从而进一步影响分类损失。奖励策略主要体现在选择确定 r 值上,一般直观的奖励策略可以将最终分类结果作为度量整体注意力区域选择策略的标准,即如果 t=T 且

    ,则 r^t =1,否则 r^t 都等于 0。

    尽管使用以上朴素的奖励策略可以通过循环的方式学习,但它可能会造成不同时间步上选择区域的困难,且导致收敛问题。因此,百度提出了一种新型奖励策略:

    其中

    表示第 n 个样本在第 t 个时间步上的分类损失。如果图像在第一个时间步就分类正确,那么它能立即收到一个奖励 1,这相当于在仅使用全图特征的情况下能正确分类。当我们奖励不同的注意力区域时,我们要求当前时间步需要分类正确,且同时分类损失相比上一时间步有降低。如果不满足这两个条件,我们将不奖励注意力区域。

    胡翔宇解释说:「对于细粒度分类问题,裁剪出来的区域是好是坏比较容易确定。例如裁剪出一个局部细节,且它已经足够证明图像是怎样的细分类,那么我们就可以确定这个区域是有价值的。其实自然图像的信息冗余度非常大,甚至只需要 1 到 2 个细节就能帮助我们识别花的具体品种,那么我们也认为这样的策略是优秀的。」

    最后,结合上述所有过程就可构建整个模型的前向传播与反向传播过程。如下图所示,在前向传播的过程中,我们先使用全卷积神经网络 φ 抽取输入图像的特征图,然后使用注意力网络将多通道的特征图变换到单通道的置信图π。在依据置信图对完整特征图进行裁剪后,我们就得到了注意力区域 l。将注意力区域投入到分类网络就能计算出分类结果,并且当前时间步的结果和上一时间步的结果相结合就能给出对该注意力区域的奖励。

    在反向传播中,上文(2)式的目标函数需要对参数求梯度以将误差向前传,并更新参数。其中 L 是经典交叉熵损失函数,它的梯度很容易计算,而奖励的平均期望 R 是不可微的,所以百度采用了蒙特卡洛方法来逼近期望奖励 E[r] 的梯度。因此在上图(b)中,分类结果 s 将按常规实现反向传播,而期望奖励的梯度可直接调整注意力网络的参数,并向前传递调整特征卷积网络的参数。

    百度基于全卷积注意力网络和强化学习构建的细粒度识别应用目前已经部署到了云端,模型的实现都是通过 PaddlePaddle 架构完成的。胡翔宇表示:「该应用目前部署在云端,但随着移动端硬件的发展,我们会在一些场景中将网络部署到更靠近用户的地方。但即使部署在云端,考虑到推断的性价比,我们也会采用一些模型压缩方法。这些压缩方法一般可以分为两大类,首先是采用半精度(FP16)等和硬件相关的方法,其次就是将批归一化的参数压缩到卷积层等和硬件无关的方法。」

    说到移动端的部署,百度其实有开源 PaddlePaddle Mobile 框架,陈凯表示:「PaddlePaddle 的移动端框架其实也在和移动硬件的厂商合作,它后续会加强对 NPU 等硬件的优化,包括内存管理和功耗控制等。」

    展开全文
  • 深度学习中弱监督细粒度识别方法与应用综述,李阳光,王晨升,本文归纳介深度学习下基于弱监督的细粒度识别方法与应用综述深度学习下基于弱监督的细粒度识别方法与应用综述绍深度学习时代弱监
  • 使用深层连网从点击式日志中细粒度识别图像
  • 船舶识别 卫星图像中船只的细粒度识别 该项目旨在对复杂海况下的船舶进行细粒度识别,由于训练的模型太大,整个训练模型为2.6G,无法完全上传,主页上的图像为实际结果或原始图像。
  • 利用3D Bounding Boxes改进交通监控中车辆的细粒度识别
  • 度量学习、细粒度识别相关论文阅读笔记(二)——Look Closer to See Better:Recurrent Attention Convolutional Neural Network for Fine-grained Image Recognition—RA-CNN(细粒度、注意力机制) 细粒度分类...

    度量学习、细粒度识别相关论文阅读笔记(二)——Look Closer to See Better:Recurrent Attention Convolutional Neural Network for Fine-grained Image Recognition—RA-CNN(细粒度、注意力机制)

    细粒度分类(fine-grained)

    区分大类中的细小类别。如图中,在啄木鸟种细分不同的品种。由于细小类别间的差异非常小,所有细粒度分类问题的难点为:1.定位关键区域;2.从关键区域中提取有效信息。
    有监督方法:对训练数据标注bounding box
    无监督方法:无bounding box,通过网络自主学习
    通常采用无监督或有监督(目标检测)方法检测出指定区域->在指定区域中提取特征->分类
    在这里插入图片描述
    论文观点:人为标注的region不一定是最优的,同时定位关键区域与从关键区域中提取有效信息是具有相互促进关系的。

    RA-CNN

    网络优点

    1.多scale:训练过程中可以逐渐聚焦到关键区域,能更加准确
    2.两个子网络的设计以及交替训练的方式
    3.不需要bounding box的标注信息。

    网络流程

    RA-CNN网络分为3个子网络,3个子网络的网络结构都是一样的,但网络参数不一样。
    每个子网络包含一个分类网络和一个APN网络。具体流程为:
    (1)输入图像首先输入到第一个子网络中,通过分类网络进行分类。
    (2)然后第一个APN网络基于分类网络提取到的特征进行训练,得到attention区域。
    (3)在原始图像中将attention区域crop下来进行放大,再作为第二个子网络的输入。
    这样重复进行3次,得到3个子网络的输出进行融合。

    网络结构

    在这里插入图片描述
    图中(a1)、(a2)、(a3)分别表示3个不同scale的网络;(b1)、(b2)、(b3)分别表示3个不同scale网络的卷积层。这三个网络具有相同的网络结构。根据第bi个CNN提取到的特征,一方面使用fc层(因此三个网络的输入尺寸是固定的)和softmax层计算类别概率;另一方面通过APN网络(d1)、(d2)得到attention区域信息。
    其实本质与object detection类的算法是一样的,只不过这里的区域检测不是监督学习,也就是说不需要bounding box的标注信息,而是通过end-to-end训练得到的。

    分类和attention区域定位

    task 1:分类

    在这里插入图片描述
    Wc代表CNN的参数,f(*)代表fc层和softmax运算。上式表示分类网络的输出。

    task 2:attention区域检测

    在这里插入图片描述
    Wc同样是上述CNN的参数,g(*)表示APN网络的运算。APN网络可以用两个全连接层来实现,最后一个全连接层输出channel为3,分别对应tx,ty,tl。tx,ty对应attention区域的中心点,tl表示正方形区域边长的一半。
    因此,attention区域左上角点的坐标和右下角点的坐标可以用下式表示:
    在这里插入图片描述
    得到坐标值和尺寸后,为了crop出局部的信息,在整张图片上使用添加Mask的方法(element-wise multiplication)来近似裁剪操作。
    在这里插入图片描述
    文中使用logistic function(sigmoid函数)来构造mask,这样可以使函数连续,易于反向传播。
    在这里插入图片描述
    在这里插入图片描述
    当k设置为较大的正整数时(文中设为10),sigmoid函数类似于阶跃函数。因此当x在tx(tl)和tx(br)之间时,h(x-tx(tl))-h(x-tx(br))就趋近于1-0=1,y轴同理。这样的话只有当x在tx(tl)和tx(br)之间且y在ty(tl)和ty(br)之间时,M()才趋于1 * 1=1,其他情况都是趋于1 * 0或0 * 1或0 * 0。

    attention区域放大

    由于网络输入尺寸是固定的,因此在获取到attention区域位置后,使用双线性插值进行放大,输入到子网络中进行下一步处理。

    网络loss

    网络的损失函数包括两个部分:分类损失(Lcls)以及pairwise ranking loss(Lrank)。
    在这里插入图片描述
    Lrank为网络结构图右侧的红色大括号部分。第一个scale网络和第二个scale网络构成一个Lrank,同样第二个scale网络和第三个scale网络构成另一个Lrank。在训练这个网络的时候采取的是损失函数交替训练的策略。
    在这里插入图片描述
    Lrank的公式如下式:
    在这里插入图片描述
    pt(s)为Figure2中最后预测出来的概率条形图中的绿色部分。从Lrank损失函数可以看出,当更后面的scale网络的pt大于相邻的前面的scale网络的pt时,损失较小,通俗讲模型的训练目标是希望更后面的scale网络的预测更准。margin参数在实验中设置为0.05。

    交替训练

    1. 初始化分类子网络: 用预训练的VGG-Net初始化分类子网络中卷积层和全连接层的参数;
    2. 初始化APN: 查找分类子网络的最后一层卷积层(conv5_4 in VGG-19)具有最高响应值(highest response)的区域,用该区域的中心点坐标和原图边长的一半来初始化(tx,ty,tl);
    3. 固定APN的参数,训练分类子网络直至Lcls收敛; 随后固定分类子网络的参数,训练APN网络直至Lrank收敛.这个训练过程是迭代交替进行的,直到两个网络的损失收敛.
    展开全文
  • 弱监督学习下商品识别:CVPR 2018细粒度识别挑战赛获胜方案简介 细粒度视觉分类(FGCV,Fine-Grained Visual Categorization)即识别细分类别的任务,一般它需要同时使用全局图像信息与局部特征信息精确...

    弱监督学习下商品识别:CVPR 2018细粒度识别挑战赛获胜方案简介

     

    细粒度视觉分类(FGCV,Fine-Grained Visual Categorization)即识别细分类别的任务,一般它需要同时使用全局图像信息与局部特征信息精确识别图像子类别。细粒度分类是计算机视觉社区最为有趣且有用的开放问题之一,目前还有很多难题期待解决。

    2011 年,谷歌开始赞助举办第一届 FGVC Workshop,之后每两年举办一次,到 2017 年已经举办了第四届。而由于近年来计算机视觉的快速发展,FGVC 活动影响力也越来越大,从去年开始由两年一次改为了一年一次。

    从 2017 年开始,FGVC 开始运作两大挑战赛 iNaturalist 与 iMaterialist。今年的 iMaterialist 挑战赛是由国内创业公司码隆科技联合 Google Research、美国知名电商 Wish、Kaggle 举办。值得一提的是,从今年开始 FGVC 开始运行一系列子竞赛:iWildCamp、iFood 等。

    在 CVPR 2018 尾声的 FGVC Workshop 上,Google Research 资深工程师兼 FGVC5 联合主席张晓对 iMaterialist 2018 挑战赛与比赛解决方案进行了介绍。

    iMaterialist 2018 挑战赛

    如何让机器识别达到趋近乃至超过人眼判定的精准度?这是许多计算机视觉科学家们一直致力解决的问题。业内也有许多知名的挑战赛,如 ImageNet、COCO 等。但与 ImageNet 这样的的粗粒度分类竞赛相比,细粒度图像分类技术变得极具挑战性。

    以 iMaterialist 2018 挑战赛为例,由于细粒度属性的产品看起来非常相似,且商品在不同光线、角度和背景下拍摄,其识别精度也会受到影响。与此同时,不同商品的相似特征,也为机器识别增加了一定的难度:比如家具中的球椅和蛋椅,从某些特定角度来看十分相似;再比如服饰的宝蓝色和松绿色,在不同的光线条件下也存在一定的相似性。

    因此,细粒度识别相比于一般的图像分类不仅需要使用图像的整体信息,同时它应该注意到子类别所独有的局部特征。例如从总整体上确定球椅和蛋椅都从属于椅子,然后再根据局部细节确定具体是哪一种椅子。

    「但是相关技术具有更大的实际应用意义」码隆科技表示,「它可以直接转化为工业界的应用,提高效率、减少成本」。

    在此挑战赛中,码隆科技与美国知名电商平台 Wish 提供了所需的服装和家具图像数据,并会在之后向学术界开放 120 万带标注的商品图像数据集。此次 iMaterialist 2018 挑战赛分为 iMaterialist - Fashion 和 iMaterialist - Furniture 两个 Track。iMat Furniture 2018 的数据集为清理标注过的干净数据,而 iMat Fashion 2018 的数据集为未清理过的噪声数据。

    经过 3 个多月的角逐,iMaterialist 2018 挑战赛最终分出胜负:

    解决方案

    一般细粒度识别可以分为两种,即基于强监督信息的方法和仅使用弱监督信息的方法。基于强监督的细粒度识别通常需要使用边界框和局部标注信息,例如 2014 年提出的 Part-based R-CNN 利用自底向上的候选区域(region proposals)计算深度卷积特征而实现细粒度识别。这种方法会学习建模局部外观,并加强局部信息之间的几何约束。而 iMaterialist 2018 仅使用类别标签,因此是一种弱监督信息的细粒度识别。

    其实在这一次竞赛中,很多不同的方法都有它们各自独特的亮点。例如在服装第一名的解决方案中,虽然它也是利用预训练 resnet152、 xception 和 dn201 等模型并结合 XGBoost 做预测,但 Radek Osmulski 另外使用了 1 Cycle LR Policy 进行精调。

    1 Cycle 用两个等长的步骤组成一个 cycle:从很小的学习率开始,慢慢增大学习率,然后再慢慢降低回最小值。Radek Osmulski 在增大学习率的同时降低动量,这也印证了一个直觉:在训练中,我们希望 SGD 可以迅速调整到搜索平坦区域的方向上,因此就应该对新的梯度赋予更大的权重。其实在真实场景中,可以选取如 0.85 和 0.95 的两个值,在增大学习率的时候,将动量从 0.95 降到 0.85,在降低学习率的时候,再将动量重新从 0.85 提升回 0.95。

    在服装第二名的解决方案中,作者采用了如下网络架构。首先开发者会采用非常多的数据增强方法增加输入图像,例如水平翻转、旋转、高斯模糊、锐化、截取和归一化等方法。然后根据 DenseNet、inception_resnet_v2、Inception-v3、Nasnet 和 ResNet-50 等九个基础卷积网络抽取输入图像的特征,并分别作出预测。最后结合所有基础模型的预测就能得出非常不错的最终结果。

    如前所述细粒度识别需要很多局部图像信息才能实现子类别的判断,谷歌(需要确切身份)Xiao Zhang 表示:「选手这些网络最终层的 dimension 都比较小(比如 7x7),这种情况下最终做决策时很难兼顾不同尺度的信息。如果需要兼顾局部和整体需要使用 Feature Pyramid Network,或者类似于编码器/解码器的结构在最终层使用高维的预测。」

    在整个流程中,Stacking CNN 是非常有意思的过程。开发者会将九个模型的预测结果叠加在一起为 9×228×1 的张量,其中每一个基础模型提供一张 1×228×1 的张量,它代表了模型对 228 个类别的预测结果。如下所示当叠加为这种张量后,我们可以使用 3×1 的卷积在它上面执行步幅为 1 的卷积运算,这种卷积可以学习到各基础模型原始预测之间的相关性。

     

    上图输出张量 7×228×8(8 个 3×1 的卷积核),在经过 16 个 3×1 的卷积核执行卷积运算并馈送到全连接层后,就能做出最终的预测。因为 3×1 的卷积其实相当于在同一个类别上,加权三个模型的预测并输出到下一层。所以这也相当于一种集成方法,模型会自动学习不同基础模型预测的重要性,并结合所有基础模型作出最终预测。

    家具细粒度分类的两个解决方案也非常有特点,例如 Roman Khomenko 和 Lei Li 设计的家具第一名解决方案使用了一种称之为概率校准的技术。他们表示在训练集中,类别数量是非常不平衡的,但在验证集中类别数量是平衡的,因此我们可能需要使用概率校准以解决这种训练于验证之间的分布差异。

    Google Research 张晓表示:「校准分为两步: a) 对于每个 label 的预测概率,除以该类别的物体数,除以对应的先验概率; b) 对所有更新后的 label 的预测概率做归一化(相加得到 1)」

    Dmytro Panchenko 和 Alexander Kiselev 设计的解决方案获得了家具第二名,他们其实也使用了多个卷积网络的集成方案。总的来说,这四个解决方案都是使用多个预训练卷积网络,它们会分别在训练集与验证集中进行学习与调参,然后再使用不同的集成方案总结各个模型的预测结果。

    Dmytro Panchenko 等开发者集成的基础模型。

    因为细粒度识别很多时候需要使用注意力机制或 Faster R-CNN 等方法抽取局部特征,并用于预测最终细分类别,而挑战赛中的模型很多都是模型集成。因此我们可能会比较好奇为什么不在竞赛中使用前沿和优秀的细粒度识别模型呢?Dmytro Panchenko 团队解答到:「我们其实也考虑了这个问题,并花时间进行调查和查文献,也许我们可以训练出照片上分割目标的网络。但这些方法很多都需要额外的标注,而且我们也不知道哪些特征对不同类型的椅子是最重要的,因此我们只是采用了「默认」的方式(完全不是因为我们懒)。」

    此外,他们表示:「照片很多都来自在线购物网站,其中 99% 图像的主要目标都在图像中央,几乎是完美的剪裁。因此我们认为如果训练集足够大,那么 CNN 能从中抽取到足够好的特征。」

    最后,作为联合举办单位,码隆科技首席科学家黄伟林博士总结,在多年从事商品识别的研究和实践过程中,面临的三个主要难点。首先,细粒度商品识别,特别是对 SKU 级别的识别是至关重要的。如下图所示,不同种类的益达口香糖,在零售过程中通常价格会不太一样,因此需要作精确区分。其次,除了细粒度分析,SKU 级别的商品识别通常需要识别大量的商品种类,比如超过 10 万类,而常见的 ImageNet 物体识别通常只有 1,000 类。这是商品识别的另一个挑战,而常用的单层 softmax 分类模型很难解决。

    这就需要引进多层级联的细粒度分类算法,从而加大细粒度识别的难度。最后,由于商品类别多,就要去更多的海量训练数据和人工标注,比如 10 亿级别的。对于如此数量的人工标注和数据清洗,是很难完成的。因此,如何有效地利用海量网络爬去的商品图片,在没有或者只有少量人工标注和清洗的情况下,训练一个高性能的商品识别模型,成为一个关键的技术。码隆科技最近提出的弱监督学习算法- CurriculumNet,就是专门为训练海量无工人共标注的海量网络图片而设计的。

    此次 FGVC5 挑战赛是现实应用场景问题促进算法探究的一次实践,从数据集数量到参赛团队规模都上升到新的台阶,这也说明商品识别这类细粒度识别问题正在引起更多学者、技术从业者关注。据悉,码隆科技和 Google Research 正在积极探究更深入的细粒度人造物识别场景,并期待下一年继续共同举办相关挑战赛。

    转载于:https://www.cnblogs.com/yumoye/p/11025789.html

    展开全文
  • 带部分转移的细粒度识别 耶拿弗里德里希席勒大学计算机视觉组 作者:克里斯托夫·戈林、埃里克·罗德纳、亚历山大·弗雷塔格 接触: 需要的库和第三方软件 vlfeat - 用于提取特征 - yael - 快速,多线程 k 均值 - ...
  • 1.细粒度图像分析任务(又叫子类别图像分类)  分类:强监督(物体标准框、局部标注点)、弱监督(无人工标注信息...图 1 细粒度图像识别与粗类识别的区别   数据集描述:Caltech-UCSD Birds-200-2011    ...

    1.细粒度图像分析任务(又叫子类别图像分类)

            分类:强监督(物体标准框、局部标注点)、弱监督(无人工标注信息或者只包含物体标注框);

     

    图 1 细粒度图像识别与粗类识别的区别

     

    数据集描述:Caltech-UCSD Birds-200-2011

                                                     

                                                           图 2 数据集的描述展示                                         

    2.细粒度图像分割的相关任务

    2.1 两级注意力模型

               

                                                                                                                                     图 3 细粒度识别的框架

     

             两级注意力模型(关注的是两个不同层次级的特征,其中物体级(强监督模型中的物体标注框)和局部级(强监督模型中局部标注点)的特征)

    Selective Search产生大量的局部区域,对于对象级的分类有很多成熟的模型(比如alenet和VGGnet),对于局部级的分类首先对其进行谱聚类,然后进行特征提取,最后将这两类特征进行级联,得到较高的分类精度(77.9%)。

    2.2 星座模型

                                                                

                                                                                                                                        图 4 星座模型的图示

     

             此时使用卷积特征产生的关键点作为局部区域,因为此时通过实验对卷积特征的可视化发现,卷积特征享有比较高的区域往往是原图中潜在的局部区域,因此将卷积特征可以作为一种检测分数(这个分数的大小可以用于判断是否可以将该卷积特征作为局部的标注点区域);而对于前景图像,还是使用Selective Search方法进行提取,最后使用将这两类特征通过VGGnet进行级联进行分类。弱监督模型的工作主要在于检测到局部区域和前景图像;

    2.3 第一个强监督模型

                                     

                                                                                                                     图 5 基于R-CNN细粒度图像检测识别的框架

     

            具体思路为:先用Selective Search产生2000多个局部区域,分别对这2000个局部区域进行特征提取,然后使用SVM产生一个分数,根据分数可以产生标注框,根据以上方法可以产生三个标注框(物体、物体的头部、物体的身体);其实工作的本质是通过物体的标注信息训练出三个检测网络(一个全局物体标注框、两个局部头部和物体的身体),然后使用三个的检测网络将特征进行级联进行分类(有点简单粗暴,细节方面仍需优化)。实验表明,不同的网络的卷积特征会代表不同的语义信息,具体浅层代表边缘信息,深层的往往代表语义信息,而且在类内的干扰因素姿态有一个重要的影响,因此许多研究工作主要从姿态的对齐和特征的提取两个方面进行着手研究。

     

     

    3.LAC模型

                                   

                                                                                                                              图 6 LAC模型的框图

            主要目标是将定位、对齐、分类集成到一起;根据图6所示,具体流程包括首先定位到局部区域、然后将局部区域根据已有的模板进行放缩、旋转等进行对齐、然后将对齐以后的图像送入分类子网进行分类。

             LAC是一个整体的模型,它的难点主要在于如何将分类子网中的误差反向传播到定位子网,因为分类子网络中没有定位子网的相关约束,也没有相关定位子网络的参数,因此在反向传播求导的值为0(无参数肯定是0),因此需要对对齐子网进行精心地设计(文中通过设计VLF模型将定位和分类整合到一起)。

     

    3.1 VLF模型的实现

                                  

                                                                                                                                    图 7 VLF的模型框架

    3.1.1 定位子网

             这里的定位子网和分类子网都是选用的axlenet网络,对于定位子网,它的输出是一个边框坐标;图8给出了定位子网的目标函数设计:

                                                          

                                                                                                                                图 8 定位子网的目标函数

     

             从以上公式可以看出,L经过fl的输出就是预测的目标标注框,定位的目标函数就是使得预测的标注框尽可能的和真实标注框一致。定位子网的输出是4维的坐标信息,由于数据库中有200多个类别,所以分类子网输出的二维的分类信息;

     

    3.1.2 分类子网

     

     

                                                            

                                                                                                                图 9 分类子网的目标函数设计

     

    3.1.3 对齐子网

     

                                                                            

                                                                                                                图 10 对齐子网的目标函数设计

     

            网络的对其部分要实现对齐就要有参照的模板,图11公式就是介绍如何度量两个图像之间的相似度;

                                                                              

                                                                                                                 图 11 公式化介绍如何度量两个图片间的相似性

     

                                                              

                                                                                                                       图 12  如何度量两个图像的相似度方法介绍

     

                                                                       

                                                                                                                      图 13  具体对齐依据公式实现

     

            根据公式11,我们可以计算数据库中两两图像间的相似度矩阵,然后根据相似度为边组成一个带权的无向图,然后利用谱聚类的方法将无向图分割为K个簇,然后离每个族中心最近的图像以及它的镜面翻转就组成的模板集合;谱聚类的思想就是将带权无向图划分为两个或两个以上的最优子图,它的目的就是使类间尽量远离,类内尽量相似; (就是一个聚类的过程),此时有了模板集合,就可以进行最后的对齐工作,目标函数Ea中的S就表示让经过平移、旋转、缩放后的局部区域和模板图像尽可能的一致,第二项表示对平移进行约束,然平移竟可能的小,使式子尽可能的大。

                                                                

                                                                                                                    图 14 具体对齐的示意图

     

             如上图14所示,左边是已提取的模板,右边经过定位裁剪后的图像分别与模板中的图像进行目标函数的计算,找到使得目标函数最大的模板,然后得到此时的各项系数,然后执行此时的平移、旋转、缩放等,对定位的局部区域进行处理。这样就可以将待对齐的图像和模板图像进行分类对齐;

     

    4 VLF模型的分析

                                                                  

                                                                                                                         图 15 VLF的设计

     

              VLF其实是一个函数; 这里Ea是对齐子网的目标函数,分子指反向传播时的边框,后者分母Lf指定位子网络输出的边框;

                                                                 

                                                                                                                   图 16 反向更新如何求导

     

            将对齐子网的输出VLF作为分类子网的输入,现在将分类子网的输入改变,如红色下划线所示的那样;此时将定位子网的参数很自然的传递到分类子网,从而在使用链式法则就可以对定位子网的参数进行求导,从而实现定位子网参数的更新;

                                                                           

                                                                                                                                                                                 

                                                                                                                                         图 17 对齐子网的求导

            图 17 通过对代价函数的求导分析,从而实现了将分类子网中的误差通过构造VLF对齐子网模型传递到定位子网中,从而能够实现端对端的训练,这是一种集大成的思想啊!!!

     

    4.1 网络效果分析

                                                                

                                                                                                      图 18 对该鸟类数据集进行细粒度实验的结果展示

               试验分析:这种将定位、对齐、分类三网络集成在一起的设计架构对最后结果有一定的提升效果,然而这种方式更重要的目的是给我们提供一种设计思路(集成的思想);

    5  总结和展望

            LAC模型是包含定位和分类的,它是一个多任务的模型。它的缺点就是使用了强监督的标签信息;强监督模型使用很大的代价,包括全局的标签信息和局部的标签信息,而弱监督模型只包含全局的标签信息,所以在作细粒度图像分类时,如何采用弱监督的模型进行,如何准确地检测局部区域;前面讲到的星座模型提取局部区域也是比较好的方法;如何利用CNN提取特征方面,不同的卷积特征代表不同的语义信息,如采用对变形的卷积核进行处理;LAC启发我们如何将不同的模块进行组合统一合理地设计总的目标函数,可能对最后的结果产生帮助;

    参考:https://blog.csdn.net/qq_29184757/article/details/77981198

    展开全文
  • 一种在GCP中细粒度识别高成本资源的工具 先决条件 您必须启用功能 您必须具有创建BigQuery作业的权限 强烈建议对资源进行细化标记。 标签的粒度将反映在结果中。 安装 npm install -g 用法 执行gcp-accountant并
  • 度量学习、细粒度识别相关论文阅读笔记(一)——SoftTriple Loss 之前调研了几篇度量学习、细粒度识别相关领域的最新论文,现将之前做的论文笔记分享出来供大家一起探讨。 因为之前没有涉及过相关领域,如果有的...
  • 1.细粒度图像分析任务(又叫子类别图像分类)  分类:强监督(物体标准框、局部标注点)、弱监督(无人工标注信息或者只包含物体...图 1 细粒度图像识别与粗类识别的区别 数据集描述:Caltech-UCSD Birds-200-2011
  • 这次翻译的论文也是CVPR2018的,关于细粒度识别的论文,链接为:...与之前使用CNN特征的多级框架相比,最近的端到端的细粒度识别深度方法本质上提高了CNNs的中间层mid-level的...
  • 【valse】细粒度识别

    2020-11-17 15:21:49
    CVPR19:Class balanced loss and effective number of samples 针对数据的重复建模~ 数据量增加的时候带来的边际效益会递减 非参数化的方法~ Panel 细粒度识别与通用识别的区别 细粒度识别:归根到特征定位和特征...
  • 细粒度视觉分类(FGCV,Fine-Grained Visual Categorization)即识别细分类别的任务,一般它需要同时使用全局图像信息与局部特征信息精确识别图像子类别。细粒度分类是计算机视觉社区最为有趣且有用的开放问题之一,...
  • 预期搭建的网络如图: 通过keras搭建后: ...其实我们在做细粒度分类的时候,如果针对整幅图像分类的话,在不同缩小过程中,会忽略掉很多细节,尤其是池化这个过程,但是如果不池化的话,超大的...
  • 度量学习、细粒度识别相关论文阅读笔记(三)—— Destruction and Construction Learning for Fine-grained Image Recognition 破坏和构建学习 区域混淆机制 对抗性损失 区域对齐网络 除了标准分类骨干网络之外,...
  • 细粒度视觉分类(FGCV,Fine-Grained Visual Categorization)即识别细分类别的任务,一般它需要同时使用全局图像信息与局部特征信息精确识别图像子类别。细粒度分类是计算机视觉社区最为有趣且有用的开放问题之一,...
  • 《Destruction and Construction Learning for Fine-grained Image Recognition 》 论文:点这里. Yue Chen1∗, Yalong Bai2∗, Wei Zhang3, Tao Mei4 ...这是京东AI研究院在精细图像识别FGVC Cha
  • 深度细粒度图像识别研究综述.pdf
  • 细粒度图像识别

    千次阅读 2020-03-22 21:34:39
    大四上半年一直在做细粒度图像识别的相关研究工作,做了一个学期,也摸索出一些方案,最终把精度做到了和ICCV 2019一样——87.7%(数据集:CUB-200-2011,其他数据集暂时还没有验证性能),后面想接着做下去,超过...
  • 这几天刚好调研fine-grained这个领域,花两天时间近几年细粒度检测识别领域顶会论文,已经经过仔细筛选。
  • 细粒度识别的挑战:类间差异大,类内差异小 常用的数据集:鸟,花,汽车…… 不同的范式: 1. by localization-classification subnetworks 定位子网络,典型工作:ICCV,S3N
  • 目前最新的细粒度图像识别,哪个更NB?知道的麻烦把模型说一下,我看一下,谢谢!</p>
  • 细粒度图像识别指的是在一个大类中的数个子类进行识别(例如识别不同鸟类的种类),人们通常需要专业的知识才能达到很高的准确率...本博客讲解了一篇CVPR2016上的细粒度识别文章,在鸟类的识别方面准确率达到了84.5%。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 25,754
精华内容 10,301
关键字:

细粒度识别