论文 | 《Webly Supervised Learning of Convolutional Networks》利用web数据进行网络模型的学习

一 写在前面

未经允许,不得转载,谢谢~~

文章基本信息:

  • CVPR 2015
  • 原文链接

文章主要内容:

  • 利用大量的web数据来学习CNN网络特征;
  • 并基于curriculum learning课程学习(由易到难的过程)提出了用于CNN训练的two-stage方法;

虽然是15年的顶会文章,但是看一下文章的训练过程以及类间关系的利用方面的想法也是挺好的。

二 基本介绍

人工标注数据往往需要耗费大量的时间和精力,所以文章就想能否在没有任何人工标注信息的前提下利用网上成千上万的图像自动学习图像特征表示。

也有很多这个方向的研究,但是效果都是不及人工标注,这其中的差距可能有以下两点:

  1. 训练数据本身

    • 网上的数据标签会有很多噪声干扰;
    • 像google本身得到的图像为了保证高精度低召回率会倾向于返回一些只在图像中间部分有物体,背景很整洁甚至空白的图像,我们称之为has bais.
  2. 用于学习数据的算法

    • 像HOG这样的手工特征或者是SVM这样的分类器本身包含的参数很少,记忆的能力就会比较差,很难利用大规模的训练数据;
    • 基于记忆的最近邻算法KNN在大量数据下能获取到比较好的信息,但是对于噪声数据很敏感。

幸运的是CNN网络表现出了强大的学习能力,本文又考虑到重头训练一个网络的难度,引入curriculum learning的学习过程,即让模型先在简单的训练数据上进行学习,然后再逐渐地增加训练数据的难度。

如下图所示为easy image与hard image的对比图;


论文 | 《Webly Supervised Learning of Convolutional Networks》利用web数据进行网络模型的学习_第1张图片
  • easy image:Google直接图片搜索得到的结果如图所示,常常只突出了物体本身,属于easy image,非常适用于初期对网络进行训练;
  • hard image: 只有easy image训练出来的网络模型通用性和鲁棒性太差,所以文章还选用了用户发在Fickr上的真实图像进行后期训练;

以上就是文章two-stage训练方法的体现;

但是Filckr的image还是会很复杂,所以文章还提出利用类间的关系构建类与类之间的关系图模型,并对关系图模型进行优化,从而达到一个从easy image到hard image训练的平稳过渡。

三 具体方法

整篇文章的pipline可以描述为如下所示:

论文 | 《Webly Supervised Learning of Convolutional Networks》利用web数据进行网络模型的学习_第2张图片

接下来我们来看一下整个过程大概是什么样子的:

  1. 整个结构可以分成上面的easy image训练与下面的hard image训练两个阶段;
  2. 上面easy image训练好的CNN有两个作用(向下的2个灰色箭头):
    • 初始化下面的CNN网络(hard image);
    • 用于发现类间关系并生成初始relationship graph;
  3. 下面的hard image用以上的模型参数做初始化,然后结合类间关系继续学习,它学出来的特征又反过来用于做localize objects和clean up data。

: 关于detection的部分和实验的部分这里就不再介绍了,主要看一下训练方法和类间关系的利用;

3.1 initial network 网络初始化

1. 数据获取

用ImageNet、SUN、NEIL三个数据库的类别列表,对他们做一定的处理,去Google Image上搜索对应的图片,这一步没有做任何其他的预处理。最后得到每个query大约600张图像,直接作为easy image训练数据;

2. 模型选择

选用了BLVC网络结构,如上图所示主要包括5个卷积层,2个全连接层;

3.2 representation adaptation with graph 关系图做特征的更新

文章为了更好的利用hard image进行模型的训练,用了data-driven的方法来发现数据关系,文章假设不同类别之间都是有关联的,并旨在将这种关联信息提取出来;

文章用了很简单的confuse matrix的方式来表示类间关系:


  • i,j 分别表示两种不同的类别;
  • Ri,j表示类别(i,j)之间的关系;
  • Ci表示所有属于类别i的图像集合;
  • | |表示集合中元素的个数;
  • CNN( j | Ik) 表示给定图像k的像素点或者理解为feature map的情况下被分成类别j的概率是多大;
  • 在实际中为了让整个关系图更宽,取了top k(k=5)
  • 这样就能得到类与类之间的关系图(表现形式为矩阵)

得到关系图之后,我们将这个图(矩阵)放在网络第7层后的后面,就能得到新的softmax损失函数为:


  • 其中lk表示第k个图像的label;

这样整个网络就可以用BP算法进行反向求梯度,然后更新网络参数进行训练了;

写在最后

剩下还有一点是讲怎么样最后生成的feature又反过来指导物体检测任务中bounding box的标注的,这一部分我没有仔细看就不写出来给大家了。

还有对实验的设置以及结果感兴趣的小伙伴们也建议去看一看原文,这篇文章虽然有点久了,但是个人觉得idea还是不错的,而且整篇文章读下来也很顺畅。

你可能感兴趣的:(论文 | 《Webly Supervised Learning of Convolutional Networks》利用web数据进行网络模型的学习)