细粒度图像分类论文研读-2013

Fine-Grained Crowdsourcing for Fine-Grained Recognition

Abstract

将人类纳入循环,帮助计算机选择有区分的特征。本文介绍了一款名为“Bubbles”的游戏,揭示了人类使用的判别性特征。

玩家的目标是识别严重模糊的图像类别。在游戏中,玩家可以选择暴露圆形区域的细节并受到一定的惩罚。

在适当的设置下,游戏能够生成具有质量保证的、有区分度的气泡。

之后,本文提出了”Bubble Bank“算法,利用人类选择的气泡来提高机器识别性能。

Introduction

在有限的数据条件下,自动选择具有区分度的特征变得十分困难。大量不相关的特征会导致严重的过拟合。

为了解决特征选择的挑战,一种方法是应用专门的领域知识,但是要求研究者对特定领域有深入了解。

另一个有前途的方向是,通过让人类标记或提出部件和属性。这类方法可以减少特定领域的研究负担,本文称之为“fine-grained crowdsourcing”。

在这里,所谓“细粒度”有两层含义:

  1. 群体不仅提供了标明对象是什么的类标签,而且提供了如何实现细粒度识别的详细信息;
  2. 学习算法在优化分类精度的同时还结合了人群的细粒度提示。

这类方法的挑战在于如何设计有效的注释任务。目前的方法要么要求人类标记预定义的部分或属性,要么分配开放式的任务。前者带来了一定的负担,后者很难对质量进行控制。

本文属于开放式的任务,但是具有自动质量控制的属性。

具体地说,我们提出了一个新的网络游戏“气泡”,揭示了鉴别特征。以鸟类种类鉴定为例。在每一轮游戏中,玩家会看到两种鸟类的示例图像。然后她会得到一张新图片,并被要求将这只鸟归类为两个物种中的一个。她在正确的识别上得分,否则就会扣分。不管结果如何,游戏进入下一轮,会有新的图像,可能还会有一对新的鸟类。游戏的关键是,新图像总是非常模糊,所以玩家只能看到鸟的大致轮廓。然而,玩家可以点击显示图像的小圆形区域(“气泡”)来查看完整的细节,但会被扣分。通过适当的奖励设置,游戏可以保证成功的人类玩家所选择的气泡包含有辨别性的特征。

The Bubbles Game

请添加图片描述

对于气泡的扣分机制能够在一定程度上保证气泡的质量。

The BubbleBank Algorithm

基本思想是为每一个气泡生成一个探测器,并将每个图像表示为气泡检测器的响应的集合。

The Bubble Detectors

由于每个气泡都是在区分两个类的背景下绘制的,我们首先假设只有两个类别。本文的想法是,因为每个气泡都包含有区分度的特征,它足以在测试图像中检测到这样的模式,自然而然就给每个气泡安排一个探测器。

那么,我们如何来表示每个气泡探测器?由于每个气泡通常是一个很小的区域,它可以由单个描述子或简单描述子的串联来表示。

这个描述子充当一个图像过滤器,与测试图像中进行密集采样的图像块中提取的特征进行卷积,然后将这些图像块得到的特征进行maxpooling,从而获得测试图像是否包含有该bubble。

每个探测器不是与整个图像卷积,而是在一个固定的矩形区域上工作。该区域的中心由原始图像中气泡的相对位置决定。换句话说,本文对预期探测气泡的位置有很强的空间先验。

现在,假设已经收集到了多个气泡。可以形成一个气泡探测器库,并用图像中每个气泡的最大响应的向量表示图像,在此表示之上学习二分类器。

多分类的方法略。

大体来看,就是找玩家找了一些有区分度的区域,之后拿这些区域去测试图像上提特征,再分类。该组的上一篇论文则是随机选取图像块以提取特征。

Hierachical Part Matching for FIne-Grained Visual Categorization

Abstract

  1. 提出了功能强大的流程图,称之为分层部件匹配模块来处理细粒度分类任务。
  2. 对特征袋模型进行了扩展,引入了新的模块到图像表示中,包括了前景插入和分割、分层结构学习和集合短语池。

Introduction

BoF模型是一种流行的图像分类算法,本质上是将每张图像表示为一个长向量,并用机器学习算法训练分类器。

基于手工的局部特征,他受到低级特征和高级概念之间的语义鸿沟的困扰。图像表示和视觉概念之间的联系仍然比较薄弱。

HPM充分利用GT部分的注释来帮助获得更好的图像对齐和分割(有什么用处、怎么实现的)。并且,通过在局部特征和分割区域上构建中层结构来提供更有描述性的图像表示(什么是中层结构)。

HPM具体可以描述为:

  1. 利用GT注释来推断图像上的目标,并将其进行语义分割;
  2. 提出层次结构学习算法来发现基本部件以外的中层概念(mid-level concept);
  3. 利用GPP捕获局部特征组中的中层结构(mid-level structure);

Baseline System

本文采用BoF模型作为Baseline,大致流程如下:

  1. 为图像提SIFT特征;
  2. 在此基础上训练一个codebook,对特征进行编码(什么是codebook);
  3. 最终特征用最大池化计算codeword上的最大响应(逐元素、全局);
  4. 将图像划分为各个最大池化的分层子区域(局部),将池化后的向量串联为超向量。

Foreground Inference and Segmentation

  1. 前景推断:细粒度数据集的一个显著特性是背景的高度相似性。这些背景在BoF模型中引入了不相关的特征,所以只在对象上执行前景推断和特征提取。本文使用Grab-Cut算法进行前景的推断。
  2. 能量函数和分割:从得到的前景图出发,对对象的部位进行进一步的语义分割。

这一部分得到了基本部件;

Hierarchical Structure Learning

眼睛由左眼和右眼组成,头由额头、冠、喙、眼睛组成。所谓中级概念指的是眼睛、头,而其组成部分称为基本部件。

分层学习算法描述为:

  1. 初始化:从最初的基本部件开始;
  2. 学习:为所有的子集根据代价函数计算,判断其是否可以组合为中层概念;
  3. 将所有基本部件和学习到的中层概念整合为一个层次结构。

这一步实现了中层概念的挖掘。

Geometric Pooling Strategy

原始的池化无法捕获几何信息。因此采用GPP算法。

对每个区域的每个视觉词汇,都找到他周围的K个邻居,和最大的邻居相加。之后再对重塑的区域向量找到最大的向量作为特征。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
细粒度图像分类通常需要大量的数据和复杂的模型,训练代码的具体实现会随着具体的场景和需求而有所不同。这里提供一些常见的细粒度图像分类训练代码框架和工具,供参考: 1. TensorFlow:TensorFlow是一个流行的深度学习框架,提供了各种工具和API,可以方便地进行细粒度图像分类的训练。例如,可以使用Keras API搭建卷积神经网络(CNN)模型,并使用ImageDataGenerator类读取和预处理图像数据。 2. PyTorch:PyTorch是另一个流行的深度学习框架,也提供了各种工具和API,可以进行细粒度图像分类的训练。例如,可以使用torchvision包中的各种模型和数据集,以及自定义数据集和数据读取器,训练CNN模型。 3. Caffe:Caffe是一个高效的深度学习框架,也可以用于细粒度图像分类的训练。例如,可以使用CaffeNet或GoogLeNet等预训练模型,并通过微调(fine-tuning)和数据增强(data augmentation)等方法进行模型优化和训练。 4. MXNet:MXNet是一个快速、灵活、可扩展的深度学习框架,也可以用于细粒度图像分类的训练。例如,可以使用Gluon API搭建CNN模型,并使用ImageFolderDataset类读取和预处理图像数据。 以上是一些常见的细粒度图像分类训练代码框架和工具,具体实现会涉及到模型选择、数据集准备、超参数调整等方面,需要针对具体场景进行优化和调整。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

右边是我女神

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值