当我将图像提供给经过训练的模型时,它为未在模型中训练的对象提供了 80% 以上的准确度

我正在研究识别手势的Unity-Android应用程序。我用来训练模型的图像是50x50 黑白图像,手部通过HSV 值进行分割。现在,在测试模型时也进行了同样的操作,但问题是:当相机中没有手时,它仍然会检测到某些东西(任何东西 - 通过移动相机),因为 HSV 不准确,并且当图像(没有手) ) 被提供给模型,它仍然给出了80%+ 的准确率,并为其确定了一个随机类。

训练模型的图像和代码被链接下来。

我正在使用TensorflowSharp加载我的模型。对于 openCV,我使用OpenCV for Unity 我有4 个手势(4 个类),其中每个类有 4-4.5k 个图像,总共 17k 个图像。样本图片

1级

http://img3.mukewang.com/637b83940001532b02360316.jpg

2级


http://img1.mukewang.com/637b83a00001c79702350316.jpg

3级

http://img1.mukewang.com/637b83ad0001e67402370316.jpg

4级

http://img4.mukewang.com/637b83b700011c6402350313.jpg

如果您需要任何其他信息,请告诉我,我们将不胜感激。

  • 我已经尝试过手部检测模型,因此它可以检测到什么时候没有手,但它们并不准确。

  • 我已经尝试从用户输入触摸他的手所在的位置,它工作正常但是当手被移开时它再次开始随机检测,因为 HSV。

  • 我尝试通过 SIFT 等进行特征匹配,但它们非常昂贵。

  • 我尝试了模板匹配,从我的角度来看,它应该有效,但给出了一些奇怪的结果。


胡说叔叔
浏览 71回答 1
1回答

慕仙森

根据我的说法,基本问题是您无法检测图像中是否存在手。你需要定位手。首先,我们需要检测手是否存在。您可以尝试Siamese 网络来完成这些任务。我已经成功地使用它们来检测皮肤异常。您可以参考这个 -> Harshall Lamba https://link.medium.com/xrCQOD8ntV的“使用 Keras 的 Siamese 网络的一次性学习”和 Harshvardhan Gupta 的“PyTorch 中的 Siamese 网络的面部相似性” https://link.medium .com/htBzNmUCyV网络将给出二进制输出。如果手存在,则将看到更接近 1 的值。否则,将看到接近零的值。其他,像 YOLO 这样的 ML 模型用于对象定位,但 Siamese 网络简单而清醒。Siamese 网络实际上使用相同的 CNN,因此它们是 siamese 或 conjoined。他们测量图像嵌入之间的绝对误差,并尝试近似图像之间的相似度函数。之后,进行适当的检测,就可以进行分类。
打开App,查看更多内容
随时随地看视频慕课网APP