根据图像和数值预测估计值

时间:2018-03-16 15:57:17

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

我试图根据图像和数值来预测数字。为了说明实际问题,我想说我试图在标准房价预测器中增加一个图像。因此,在其他功能(价格,平方米,没有房间等)中会有一个图像。因此,最终预测的价格将基于所提供的图像。以前是否实施过?另外,如何将图像与数字一起添加为特征?是否已有项目,我可以使用吗?

3 个答案:

答案 0 :(得分:3)

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

  • 我假设,图片可以分类为例如[mansion | villa | town house | beach house | shag]

这会让你:

  • 我如何让ImageNet的竞争者(如VGG16)产生一个字符串,给我一个5个值?

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

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

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

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

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

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

希望它有所帮助!

答案 1 :(得分:3)

你有两个任务。

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'用于预测价格的值列。

答案 2 :(得分:0)

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