0

我正在尝试构建一个程序,该程序可以正确,自信地识别Google Cloud Vision中的对象(表示为GCV)。返回的结果在大多数时间都是正确的,因此每个标签都有一定的准确度分数。如何自信地验证从Google Cloud Vision返回的对象检测结果

{ 
    "banana": "0.92345", 
    "yellow": "0.91002", 
    "minion": "0.89921", 
} 

我正在使用的环境具有不同的闪电条件组合,并且物体预期放置在随机位置。当放置不同位置的物体时,从GCV返回的结果会稍有不同,因为会查询不同的图像。例如,

{ 
    "banana": "0.82345", 
    "lemon": "0.82211", 
    "yellow": "0.81102", 
    "minion": "0.79921", 
} 

我的程序设计,即,与精确度高于一定值时检测到的对象banana时,则下一个动作将被分派的方式。

有3个对象类型的集群。例如,banana转到容器A,apple转到容器Borange转到容器C

当我向我的教授介绍我的工作时,他质疑我如何可以自信地定义和验证每个项目的阈值,并尊重其各自的群集。

我试图通过培训数百个香蕉图像来获得香蕉的平均分数,但最终我发现这可能不是定义阈值的正确方法。我的教授建议使用K Nearest Neighbor来找到这些图像的相似性,但这不是GCV的一部分?即使他的建议是正确的,使用GCV返回的有限数据来训练后GCV分类器的正确方法是什么?

回答

0

在我的练习中,我使用了NN算法和其他一些我不知道他们的名字的东西,直到我必须制作关于我的作品的幻灯片。这是关于预测Facebook的广告帖是否会被FB禁止。

NN需要两个元素的一些函数来测量它们之间的距离,以便找到我面临同样问题的最佳函数 - 测量选定方法的准确程度。如果你知道整个集合中真正的类,那么在你的模型分类之后,你会得到四个称为混淆矩阵的例子。
https://en.wikipedia.org/wiki/Confusion_matrix

您可以将不同的数据来混淆矩阵来衡量你已经得到了准确度和我选择似乎是被称为Fowlkes,锦葵指数度量。
https://en.wikipedia.org/wiki/Fowlkes%E2%80%93Mallows_index

我可以训练系统在一组图像,然后告诉另外一个分类,然后计算FM,但究竟如何我一分为二的整套?所以我没有。相反,对于一组N张图像,我从该组中取出一张图像,并在剩余的N-1张图像上重新训练模型N次。该技术被称为交叉验证。
https://en.wikipedia.org/wiki/Cross-validation_%28statistics%29#k-fold_cross-validation

这足以回答你当前的问题。在我的情况下,我有两个类别的2000个图像,结果FM等于0.6。以下是幻灯片(俄罗斯),他们有所有这些链接结尾: https://drive.google.com/file/d/0B3BLwu7Vb2U-SVhKYWVMR2JvOFk/view?usp=sharing


什么你以后会发现,如果你优化抛出了一些设定的精度可以提高很多那些教导模型错误假设的图像,或者只是在神经网络使用的空间中已经被相同类别的情况密集包围的情况下是无用的。所以我抛出了不同的子集并重新计算FM。
但是由于交叉验证需要重新训练,并且对于一组2000个图像,我有2^2000种缩小方法,这是一个非常缓慢的过程,所以我无法完全解决优化问题。您可以尝试深度优先遍历树的方式,以某些启发式方法抛出子集,但我已经使用了定制方法,并且能够在两小时内将FM从0.6提高到0.8,并且在98%的情况下分类正确。

相关问题