我想知道是否可以为图像创建密集的矢量表示,类似于您可以使用类似Word2Vec的算法来创建单词嵌入的方法吗?
我知道文本和图像数据之间存在一些较大的差异,特别是word2vec使用单词的上下文进行训练的事实,但我希望找到与图像相似的副本。
如果w2v(from Allison Parrish's GitHub Gist)的简单例子是:
| cuteness (0-100) | size (0-100) |
|–––––––––––|––––––––––––––––––|––––––––––––––|
| kitten | 95 | 15 |
| tarantula | 8 | 3 |
| panda | 75 | 40 |
| mosquito | 1 | 1 |
| elephant | 65 | 90 |
另一个例子是king - man + woman = queen
是否有用于图像的类似物(或创建某种类型的类似物的方式),在这些地方您通常会沿这些线(带有一些虚构的数字)得到某些东西:
| amount of people | abstract-ness |
| in image (0-100) | (0-100) |
|––––––––––––––––––––––––––––|––––––––––––––––––|–––––––––––––––|
| Starry Night | 0 | 75 |
| Mona Lisa | 1 | 9 |
| American Gothic | 2 | 7 |
| Garden of Earthly Delights | 80 | 50 |
| Les Demoiselles d'Avignon | 5 | 87 |
或(starry night) - (landscape) + (man) = (van Gogh self portrait)
或= (abstract self portrait)
或通常沿着这些线的内容。
[也许不是最好的例子,只是为了概述,我正在寻找一种算法,用于为图像创建抽象的n维学习表示,可以将其分组或与代表其他图像的矢量进行比较。
感谢您的帮助!
绝对!但是...
此类模型倾向于显着地需要较大和更深神经网络来学习表示。
Word2vec使用一个非常浅的网络,并且通常根据严格限制的词汇表对相邻词进行简单的预测,因为该训练目标(作为有益的副作用)会抛弃每个单词的紧缩向量。
以图像为中心的算法改为尝试解决标注/分类任务,或在压缩表示(或对抗分类器)约束下重新生成原始图像。他们使用“卷积”或其他多层构造来解释可能的像素值的更大空间,并且某些中间神经网络层可以解释为输入图像的紧凑向量。
请注意,即使在文本word2vec中,以无人监督的方式学习的各个“密集嵌入”维度也[[请勿具有清晰的人类可解释性(例如“大”,“可爱”等)。通常,高维空间的某些方向/邻域可以模糊地解释,但它们并不精确,也不与主要维轴精确对齐。
类似地,来自深层神经网络图像建模的任何紧凑表示都不会固有地具有清晰含义的个体维度(除非设计了这些目标的特定额外约束)–但是同样,高层的某些方向/街区维空间往往很有意义(“人群”,“汽车”,“微笑”等)。[基于深度学习的图像分析中的一些关键论文的综述–抛出紧凑而有意义的图像矢量摘要的算法,我刚刚在以下位置找到:
https://adeshpande3.github.io/The-9-Deep-Learning-Papers-You-Need-To-Know-About.html