用 CNN 分 100,000 类图像

本文作者郑哲东,原载于知乎专栏(http://suo.im/1cHlTJ )。

[Title]:Dual-Path Convolutional Image-Text Embedding

[arXiv]:http://cn.arxiv.org/abs/1711.05535

[Code]:layumi/Image-Text-Embedding(http://suo.im/uGOPg )

Motivation

在这篇文章中我们尝试了 用 CNN 分类 113,287 类图像 (MSCOCO)。

  • 实际上我们将每张训练集中的图像认为成一类。(当然, 如果只用一张图像一类,CNN 肯定会过拟合)。同时,我们利用了 5 句图像描述 (文本),加入了训练。所以每一类相当于 有 6 个样本 (1 张图像 + 5 句描述)。
  • 文章想解决的问题是 instance-level 的 retrieval,也就是说 如果你在 5000 张图的 image pool 中,要找 “一个穿蓝色衣服的金发女郎在打车。” 实际上你只有一个正确答案。不像 class-level 或 category-level 的 要找 “女性 “可能有很多个正确答案。所以这个问题更细粒度,也更需要 detail 的视觉和文本特征。
  • 同时我们又观察到好多之前的工作都直接使用 class-level 的 ImageNet pretrained 网络。但这些网络实际上损失了信息(数量 / 颜色 / 位置)。以下三张图在 imagenet 中可能都会使用 Dog 的标签,而事实上我们可以用自然语言给出更精准的描述。也就是我们这篇论文所要解决的问题(instance-level 的图文互搜)。

Method

1. 对于自然语言描述,我们采用了相对不那么常用的 CNN 结构,而不是 LSTM 结构。

来并行训练,finetune 整个网络。结构如图。结构其实很简单。

对于 TextCNN,我们是用了类似 ResNet 的 block。注意到句子是一维的,在实际使用中,我们用的是 1X2 的 conv。

2. Instance loss。

我们注意到,最终的目的是让每一个图像都有区分 (discriminative) 的特征,自然语言描述也是。所以,为什么不尝试把每一张图像看成一类呢。(注意这个假设是无监督的,不需要任何标注。)

这种少样本的分类其实在之前做行人重识别就常用,但行人重识别(1467 类,每类 9.6 张图像,有人为 ID 的标注。)没有像我们这么极端。

Flickr30k:31,783 类 (1 图像 + 5 描述), 其中训练图像为 29,783 类

MSCOCO:123,287 类 (1 图像 + ~5 描述), 其中训练图像为 113,287 类

注意到 Flickr30k 中其实有挺多挺像的狗的图像。

不过我们仍旧将他们处理为不同的类,希望也能学到细粒度的差别。

(而对于 CUHK-PEDES,因为同一个人的描述都差不多。我们用的是同一个人看作一个类,所以每一类训练图片多一些。CUHK-PEDES 用了 ID annotation,而 MSCOCO 和 Flickr30k 我们是没有用的。)

3. 如何结合 文本和图像一起训练?

其实,文本和图像很容易各学各的,来做分类。所以我们需要一个限制,让他们映射到同一个高层语义空间。

我们采用了一个简单的方法:在最后分类 fc 前,让文本和图像使用一个 W,那么在 update 过程中会用一个软的约束,这就完成了(详见论文 4.2)。 在实验中我们发现光用这个 W 软约束,结果就很好了。(见论文中 StageI 的结果)

4. 训练收敛么?

收敛的。欢迎大家看代码。就是直接 softmax loss,没有 trick。

图像分类收敛的快一些。文本慢一些。在 Flickr30k 上,ImageCNN 收敛的快,

TextCNN 是重新开始学的,同时是 5 个训练样本,所以相对慢一些。

5. instance loss 是无监督的么?

instance loss 的假设是无监督的,因为我们没有用到额外的信息 (类别标注等等)。而是用了 “每张图就是一类” 这种信息。

6. 使用其他无监督方法,比如 kmeans 先聚类,能不能达到类似 instance loss 的结果?

我们尝试使用预训练 ResNet50 提取 pool5 特征,分别聚了 3000 和 10000 个类。

(聚类很慢,虽然开了多线程,聚 10000 个类花了 1 个多小时,当中还怕内存不足,死机。大家请慎重。)

在 MSCOCO 采用 instance loss 的结果更好一些。我们认为聚类其实没有解决,黑狗 / 灰狗 / 两条狗都是 狗,可能会忽略图像细节的问题。

7. 比结果的时候比较难。

因为大家的网络都不太相同(不公平),甚至 train/test 划分也不同(很多之前的论文都不注明,直接拿来比)。

所以在做表格的时候,我们尽量将所有方法都列了出来。注明不同 split。

尽量 VGG-19 和 VGG-19 来比, ResNet-152 和 ResNet-152 比。欢迎大家详见论文。

和我们这篇论文相关的,很多是鲁老师的工作,真的推荐大家去看。

  • Multimodal convolutional neural networks for matching image and sentence(http://suo.im/1OSnaO )
  • Convolutional Neural Network Architectures for Matching Natural Language Sentences(http://suo.im/RfcoU )

8. 更深的 TextCNN 一定更好么?

这个问题是 Reviewer 提出的。

相关论文是 Do Convolutional Networks need to be Deep for Text Classification ?

确实,在我们额外的实验中也发现了这一点。在两个较大的数据集上,将文本那一路的 Res50 提升到 Res152 并没有显著提升。

9. 一些 trick(在其他任务可能不 work)

  • 因为看过 bidirectional LSTM 一个自然的想法就是 bidirectional CNN,我自己尝试了,发现不 work。插曲:当时在 ICML 上遇到 fb CNN 翻译的 poster,问了,他们说,当然可以用啊,只是他们也没有试之类的。
  • 本文中使用的 Position Shift 就是把 CNN 输入的文本,随机前面空几个位置。类似图像 jitter 的操作吧。还是有明显提升的。详见论文。
  • 比较靠谱的数据增强 可能是用同义词替换句子中一些词。虽然当时下载了 libre office 的词库,但是最后还是没有用。最后采用的是 word2vec 来初始化 CNN 的第一个 conv 层。某种程度上也含有了近义词的效果。(相近词,word vector 也相近)
  • 可能数据集中每一类的样本比较均衡(基本都是 1+5 个),也是一个我们效果好的原因。不容易过拟合一些 “人多” 的类。

Results

  • TextCNN 有没有学出不同词,不同的重要程度?(文章附录)

我们尝试了从句子中移除一些词,看移除哪些对匹配 score 影响最大。

  • 一些图文互搜结果(文章附录)
  • 自然语言找行人
  • 细粒度的结果

论文中可能细节说得还不是很清楚,欢迎看代码 / 交流。

原文发布于微信公众号 - AI研习社(okweiwu)

原文发表时间:2018-03-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器之心

学界 | 金字塔注意力网络:一种利用底层像素与高级特征的语义分割网络

在卷积神经网络的近期发展中,根据其丰富的层级特征和端到端的可训练框架,像素级语义分割方面有了可观的进步。但是在编程高维度代表的过程中,原本像素级的环境背景中的空...

1820
来自专栏大数据挖掘DT机器学习

隐马尔科夫模型 和动态贝叶斯网络

(一):定义及简介: 介绍(introduction) 通常我们总是对寻找某一段时间上的模式感兴趣,这些模式可能出现在很多领域:一个人在使用电脑的时候使用的命...

5775
来自专栏数据派THU

机器学习Top10算法,教你选择最合适的那一个!

本文共3800字,建议阅读6分钟。 选什么算法?本文为你梳理TOP10机器学习算法特点。

1062
来自专栏AI派

一份机器学习模型离线评估方法的详细手册

读完分类与回归算法的评估指标以及排序算法的评估指标之后,你已经知道了机器学习中分类、回归以及排序算法相关的评估指标。在这篇给大家介绍一些机器学习中离线评估模型性...

1552
来自专栏云时之间

EM算法学习(一)

EM算法是英文expectation-maximization算法的英文简写,翻译过来就是期望最大化算法,其实是一种根据求参的极大似然估计的一种迭代的优化策略,...

4676
来自专栏大数据挖掘DT机器学习

机器学习分类算法总结

目前看到的比较全面的分类算法,总结的还不错. 主要分类方法介绍解决分类问题的方法很多,单一的分类方法主要包括:决策树、贝叶斯、人工神经网络、K-近邻、支持向量...

4234
来自专栏机器之心

学界 | 新研究提出内省式学习方法:在分类和生成任务上均表现卓越

选自arXiv 机器之心编译 参与:吴攀 生成对抗网络(GAN)是近来人工智能研究的一大热门,在生成逼真的样本上已经取得了非常优异的表现。但这并不是唯一的生成方...

2959
来自专栏技术随笔

[译] 纹理网络:在前馈网络中进行纹理合成与风格化

4076
来自专栏专知

【深度学习最精炼中文讲义】前馈与卷积神经网络详解,复旦邱锡鹏老师《神经网络与深度学习》报告分享02(附报告pdf下载)

【导读】复旦大学副教授、博士生导师、开源自然语言处理工具FudanNLP的主要开发者邱锡鹏(http://nlp.fudan.edu.cn/xpqiu/)老师撰...

1.6K6
来自专栏机器之心

学界 | 机遇与挑战:用强化学习自动搜索优化算法

选自 BAIR 机器之心编译 参与:路雪、李泽南、蒋思源 自从去年 UC Berkeley 论文《Learning to Optimize》发表以来,有关优化器...

4979

扫码关注云+社区