统一文本和图像分类(Python)
Posted
技术标签:
【中文标题】统一文本和图像分类(Python)【英文标题】:Unify text and image classification (Python) 【发布时间】:2019-06-28 09:50:08 【问题描述】:我正在编写对科学文章文本进行分类的代码(使用标题和摘要)。为此,我使用了 SVM,它提供了良好的准确度 (83%)。同时我使用 CNN 对这些文章的图像进行分类。我的想法是将文本分类器与图像分类器合并,以提高准确性。
有可能吗?如果是这样,您会对我如何实施它或某种指导方针有所了解吗?
谢谢!
【问题讨论】:
【参考方案1】:您可以同时使用 CNN。为此,您需要两个(甚至三个)输入。一个用于文本(或两个用于摘要,另一个用于标题),第二个用于图像输入。然后,在将它们合并到某个点之前,您将拥有一些 conv-max 池化层。然后插入一些额外的 CNN 或密集层。
您还可以在此模型中拥有多个输出。例如,一个组合,一个用于文本,一个用于图像。如果您使用的是 keras,则需要功能 API。 A picture of an example model can be found here(他们在示例中使用了 LSTM,但我想你应该坚持使用 CNN。)
【讨论】:
也感谢您的意见 :) 我正在尝试应用类似的方法,但我总是在数组维度上遇到错误。因为图像数组看起来像这样:[256, 256, 3] 和文本 [9460, 1000]。我目前的错误是:ValueError: Graph disconnected: cannot obtain value for tensor Tensor("input_19:0", shape=(?, 256, 256, 3), dtype=float32) at layer "input_19". The following previous layers were accessed without issue: []
抱歉,如果没有代码,我无法帮助您解决这个问题
没问题,我解决了,谢谢。但现在我有以下疑问:我的训练集中是否必须有文本及其对应的图像?因为我随机选择了我的文本和我的图像到我的训练集。但我现在对集合的匹配感到困惑。你明白吗?
您需要确保将带有相应文本的图像输入到神经网络进行训练。如果您给出不属于图像的文本,它将学到其他东西。所以随机选择样本是好的,但你需要确保图像与训练/测试集中的文本相对应。
好的,我知道了。非常感谢=]【参考方案2】:
如果您从两个分类器中获得概率,则可以对它们进行平均并获取组合结果。但是,采用加权平均可能是更好的方法,在这种情况下,您可以使用验证集来找到合适的权重值。
prob_svm = probability from SVM text classifier
prob_cnn = probability from CNN image classifier
prob_total = alpha * prob_svm + (1-alpha) * prob_cnn # fine-tune alpha with validation set
如果您可以获得另一个分类器(可能是这两个分类器中任何一个的不同版本),您也可以进行多数投票,即选择两个或所有三个分类器都同意的类。
【讨论】:
感谢您的意见!在多数投票的情况下......我的验证集应该如何?我应该有一个混合集还是只有文本或只有图像?这让我在实现中很困惑。 应该由混合集组成。您将按文档拆分数据,文档的文本和图像都将在训练数据或验证数据上(不像一个在训练中,一个在验证中) 我认为我的数据类型可能是个问题。因为我有单独的图像和文本。文件夹中的图像根据其类别和 .csv 文件中的文本。你觉得还有可能吗?再次感谢您,@xashru =) 您可以单独训练单个模型,但需要确保同一文档的图像和文本不会在训练和验证集中混合。 谢谢!我知道了,我一定会尝试的。以上是关于统一文本和图像分类(Python)的主要内容,如果未能解决你的问题,请参考以下文章
Python遥感图像处理应用篇(二十八):Python绘制遥感图像分类结果混淆矩阵和计算分类精度
Python遥感图像处理应用篇(二十八):Python绘制遥感图像分类结果混淆矩阵和计算分类精度
Python遥感图像处理应用篇(二十八):Python绘制遥感图像分类结果混淆矩阵和计算分类精度
Serverless 实战:用 20 行 Python 代码轻松搞定图像分类和预测