【问题标题】:Predict an estimate based on image and numerical value [closed]根据图像和数值预测估计值
【发布时间】:2018-08-25 18:25:51
【问题描述】:

我正在尝试根据图像和数值来预测数字。把它放在一个实际的问题上,假设我试图在标准房价预测器中添加一个图像。因此,在其他特征(价格、平方米、房间数量等)中,会有一个图像。所以最终,要预测的价格将基于提供的图像。以前有没有实施过?另外,如何将图像与数字一起添加为特征?有没有项目可以使用?

【问题讨论】:

  • 是的。从图像中提取特征将是一项简单的任务。说save feature = model.predict(image_n),然后save features[image_n] = feature.所以我不认为你的困惑就在这里。您需要进一步做的是与其他输入一起进行训练,您必须使用输入,例如 model = Model(inputs=[inputs1, inputs2], outputs=outputs)。其中 input1 将提取每个图像的特征,inputs2 将是其他可用的数字输入特征。在将它们解析为神经网络函数的输入之后使用 layer_ = add([inputs1, inputs2]) 是明智的。

标签: computer-vision deep-learning conv-neural-network


【解决方案1】:

我理解您的问题的方式:如何在预测房价时包含从照片中获取的信息?

  • 我认为,图片可以分类为例如[豪宅|别墅|联排别墅|海滨别墅|沙格]

这给你留下了:

  • 如何让 ImageNet 的竞争对手(如 VGG16)生成一个字符串,该字符串为我提供 5 个值之一?

一般的想法是使用预训练的 ImageNet(这里:VGG16)并在最后删除一些层,尤其是将输出归一化为 1000 个类(BatchNormalization)并用例如替换该层的层。 5 个输出(参见上面的示例类)。

您可能需要几千张带注释的图像,可以批量使用这些图像来重新训练现有网络(修剪/更改的 VGG16)。

我不知道您使用的是哪种深度学习环境,https://keras.iohttps://caffe2.ai 将是目前最流行的两个。两者都有您在其 Model Zoo 或存储库中提到的所有网络,并为 ImageNet 数据集预训练了权重。

一旦您重新训练了 DNN(并在您的测试图像集上获得足够高的准确度),您就可以运行它以获得最佳拟合类,并将其用作您的下一个 ML 模型的一个输入,或者作为字符串/枚举(仅使用最好的)或作为 5 个数字,对于 5 个类中的每一个类都具有 DNN 的确定性。

然后,您可以再次使用 NN,或者基本上可以使用 Data Mining Group 的 PMML 标准页面 (http://dmg.org/pmml/v4-3/GeneralStructure.html) 上列出的任何 ML 模型。

SciKit learn (https://en.wikipedia.org/wiki/Scikit-learn) 有很多——如果你喜欢 Python——如果你的数据质量很好,随机森林或支持向量机应该会产生相当好的结果。

希望对你有帮助!

【讨论】:

    【解决方案2】:

    你有两个任务。

    1.从图像中获取特征作为最终预测任务的输入之一。或者将图像预测作为最终预测任务的输入。 2.接收到的特征提取或图像预测应与其他数值输入一起用作另一个输入,例如“平方英尺”、“卧室数量”。

    model = VGG16()
    model.layers.pop()
    model = Model(inputs=model.inputs, outputs=model.layers[-1].output)
    for image_name in listdir(directory_of_images):
        imagefile = path.join(directory_of_images, image_name)
        image = load_img(imagefile, target_size=(224, 224))
        image = img_to_array(image)
        image = image.reshape((1, image.shape[0], image.shape[1], image.shape[2]))
        image = preprocess_input(image)
        feature = model.predict(image, verbose=0)
        image_id = imagename.split('.')[0]
        features[image_id] = feature
    return features
    

    使用这些预测特征作为您的其他输入列以及“numberOfBedroom”、“square_feet_length”值列来预测价格。

    【讨论】:

      【解决方案3】:

      您可以从在 imagenet 上预训练的任何标准卷积网络(vgg16、vgg19 或 googlenet)中提取图像特征。 将图像特征与其他特征(价格、平方米、房间数量等)连接起来,并将其用作 mlp 的输入来预测房价。

      【讨论】:

        猜你喜欢
        • 2021-12-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-18
        • 2016-04-24
        • 2022-11-17
        • 2017-05-20
        • 2022-08-16
        相关资源
        最近更新 更多