- 这是2004年ICME做image captioning的论文,在IEEE上下载的论文甚至是扫描版的,足见年代久远。
- 这里提到了许多当时的“现有方法”,如:
- 使用coocurrence statistics来建模图像区域与单词之间联系的:‘’ Y. Mon, H. Takahashi, R. Oka, “Image to word transformation based on dividing and vector quantizing images with words”, First Int. Workshop on Multimedia Intelligent Storage and Retrieval Management, 1999.‘’
- 使用EM算法来学习图像的region groups与单词之间映射的:" P. Duygulu, K. Barnard, N. de Freitas, D. Forsyth, “Object recognition as machine translation: learning a lexicon for a fixed image vocabulary”, In Seventh European Conference on Computer Vision (ECCV), Vol. 4, pp. 97-112, 2002."
- cross-media relevance model:“J. Jeon, V. Lavrenko, R. Manmatha, “Automatic Image Annotation and Retrieval using Cross-Media Relevance Models”, 26th Annual Int. ACM SIGIR Conference, Toronto, Canada, 2003.”
- latent semantic analysis(LSA) based models:“F. Monay, D. Gatica-Perez, “On Image Auto-Annotation with Latent Space Models”, Proc. ACM Int. Conf. on Multimedia (ACM MM), Berkeley, 2003.”
数据集
- 每个image region用颜色、纹理、形状、大小、位置编码的特征来表示,并用聚类方法分为B个聚类,每个image region被赋予对应聚类中心的特征作为标签,这些标签被称为blob-tokens。
- 如下,每张图像都会标注一些单词,并且图像的每个区域对应了一个聚类标签。目标就是建立一个模型可以获取聚类标签和单词之间的关系。
- blob-token是通过K-means算法进行聚类并生成的。本文改进为G-means算法,迭代地增加聚类的数量。
通过联系的唯一性来设置权重
- 根据数据集,现假设数据集一共有N张图片,W个单词,B个blob-tokens,那么标注可以表示为一个 N × ( W + B ) N\times(W+B) N×(W+B)的矩阵 D 0 D_0 D0,矩阵中, N × W N\times W N×W的部分每个位置的值表示的是每张图片中该单词的出现次数, N × B N\times B N×B的部分每个位置的值表示的是每张图片中对应了该blob-token的region的数量。
- 唯一性的意思是,如果一个单词 w o r d x word_x wordx只在数据集中出现了一次,那么对应这个单词对应的图片 I i I_i Ii所对应的blob-tokens B i B_i Bi则是这个单词唯一对应的blob-tokens。只有当 B i B_i Bi出现时我们才会预测 w o r d x word_x wordx作为图片的caption。
- 同理,如果这个单词在数据集中对应多张图片都出现过,那么这个单词就更常见,用它来找到单词与blob-tokens之间的联系就更难,不确定性更高。
- 为此,为数据集中,高频词汇设置更低的权重,低频词汇设置更高的权重,这就是“weighting by uniqueness”,加权的公式如下,加权后的
D
0
D_0
D0就是
D
D
D:
Image captioning
- 这里到了核心方法。文章定义的image captioning问题是要估计一个
W
×
B
W\times B
W×B的矩阵
T
T
T,矩阵的第i行第j列表示的是给定blob-tokens
b
j
b_j
bj时对应word
w
i
w_i
wi出现在image caption中的概率。这个
T
T
T矩阵可以用以下几种方法来估计:
相关性矩阵
- 用上面数据集中的 D D D来定义矩阵 T c o r r , 0 = D W T D B T_{corr, 0}=D_W^TD_B Tcorr,0=DWTDB,也就是说利用数据集标注的频次的两个矩阵归一化后的转置乘来定义,并将 T c o r r , 0 T_{corr, 0} Tcorr,0按列进行归一化使得每列和为1,得到 T c o r r T_{corr} Tcorr,这个矩阵衡量的是word和blob-tokens之间的相关性(共同出现的次数)。
余弦方法
- 另一种得到相关矩阵 T T T的方法是计算 D W D_W DW的每一列和 D B D_B DB的每一列之间的余弦相似度,得到矩阵 T c o s , 0 T_{cos, 0} Tcos,0,并按列归一化后得到 T c o s T_{cos} Tcos,这时是通过出现模式的相似度来衡量相关性。
- 相关工作"G. W. Furmas, S. Deerwester, S. T. Dumais, T. K. Landauer, R. A. Harshman, L. A. Streeter and K. E. Lochbaum, “Information retrieval using a singular value decomposition model of latent semantic structure,” Proc. of the 11th ACM SIGIR conf., pp. 465-480, 1998."中提到,通过设置小的 σ \sigma σ阈值,SVD可以用来抑制数据集中的噪声并保留有效的信息。
- 于是,本文提出先对D利用SVD方法来去噪,然后再利用上述两种方法之一构建矩阵T。
- 构建矩阵
T
[
W
×
B
]
T_{[W\times B]}
T[W×B]后,测试阶段,对于每张图片,我们事先得知了图片每个region对应的blob-tokens,那么预测caption的方式则如下:
- 首先构建query vector q = [ q 1 , . . . , q B ] T q=[q_1, ..., q_B]^T q=[q1,...,qB]T,其中 q i q_i qi表示该图片对应blob-token b i b_i bi的region的个数。
- 然后计算单词的likelihood vector p = T q p=Tq p=Tq,得到的 p = [ p 1 , . . . , p W ] T p=[p_1, ..., p_W]^T p=[p1,...,pW]T 的每个元素表示该图片的caption中出现每个单词的概率。
- 接着只需要取p中最高的前m个,其对应的单词就可以作为caption。