如果现有图像说明与图像匹配,则进行无监督学习

数据挖掘 无监督学习 图像识别
2022-02-20 10:57:54

我需要在大量图像和相关标题上训练一个系统,以确定哪些(图像、标题)对是正确的,哪些不是。我没有任何带标签的配对,但我可以假设正确的配对比不正确的配对要多。此外,图像和标题具有相当相似但不完全相似的小子集。

目前的想法

我目前的想法是构建一种 GAN 架构,其中我有一个生成器和一个鉴别器,除了生成器只是从现有的图像和字幕语料库中采样以生成错误对,而鉴别器负责确定哪些对是正确与否。

images, captions = [], []
bpg = bad_pair_generator(images, captions)

clfr = classifier()

for epoch in range(epochs):
    good_pairs, bad_pairs = zip(images, captions), bpg.generate(N)
    X, y = good_pairs + bad_pairs, [1]*len(good_pairs) + [0]*len(bad_pairs)

    clfr.train(X, y)

    trickiness = [yi == yi_pred for yi, yi_pred in zip(y, clfr.predict(X))]
    bpg.fit(bad_pairs, trickiness[-len(bad_pairs):])

在此之后,我希望分类器受到足够的压力,以学习一个好的模型来判断配对是否好。

问题

  1. 有更好的研究方法吗?
  2. 如果不是,这种方法看起来是否合理且相当安全?
  3. 我可以使用哪种模型将图像与文本进行比较?显然 CNN/RNN 对图像/文本有好处,但是如何将它们结合起来呢?
1个回答

一个想法:

也许像Show and Tell:神经图像字幕生成器这样的方法会很有用。在那里,他们使用 CNN(用于图像)特征和 LSTM(用于文本)+ 搜索的组合来生成给定图像特征的文本。

然后可以使用鉴别器来了解“生成的文本”是否足够接近“给定的标签”,以便给出最终结果。

您也可能不需要鉴别器,而不是直接使用 show 和 tell 网络的输出(如删除最后一个线性层)并提供较早的步骤之一(表示可能文本的概率分布generate) 到鉴别器中,以便它有更多可能的文本输出组合可以使用......

这可能比你想要的更受监督,但也许从这个模型的预训练权重开始可以让你更快地到达某个地方。