5.12 使用应用程序在进行高难度测试
把你想要检测的物体都收集起来,运行BeanCounter,然后观察分类器是否运行成功.同时,检查探测器是否工作正常.为了达到最佳效果,请遵循以下指导原则:
- 在光线充足的地方工作,比如阳光充足的房间。
- 使用平整的白色背景,比如一张干净的纸。
- 一次只查看一个对象。
- 保持iOS设备的稳定。如有必要,使用三脚架或其他支架。
- 确保物体处于焦点位置。如果有必要,点击屏幕对焦。
- 如果物体有光泽,确保它没有反射。
在这些理想的条件下,你的分类器的准确率是多少?使用BeanCounter保存一些对象的图像,然后选择其中一些作为参考图像添加到Xcode项目中。重建和重复。通过训练分类器,你能达到80%,90%,甚至95%的准确率吗?
现在,打破规则!查看检测器和分类器在非理想条件下的性能。下面的小节演示了非理想情况下的工作情况,证明BeanCounter是健壮的.
5.12.1 不均匀照明背景
有时,照明条件和背景材料的组合可能会在背景区域之间产生亮度的变化。例如,在下面的截图中,背景是一张皱巴巴的纸:
在这里,检测器发现许多小斑点实际上只是皱纹周围的细微的亮点和阴影。即使如此,检测到的最大斑点是硬币,分类器正确地将其标记为loonie,加元。
下面的截图展示了一个更极端的情况。背景是笔记本电脑的铝制外壳。来自笔记本电脑屏幕的昏暗光线,在金属表面产生一种渐变效果:
同样,探测器发现许多小斑点实际上只是光线(也许还有噪声)的变化。硬币所在的区域光线明显开始减弱。尽管如此,探测器发现了大部分硬币,分类器生成了正确的标签——加拿大镍。这对于探测器和分类器来说都是一个很好的成果,因为我们可能会认为它们会与硬币和背景的类似金属颜色进行斗争。
5.12.2 运动模糊
如果用户的手在颤抖,或者由于光线昏暗而曝光缓慢,图像可能会出现运动模糊。然而,即使有明显的运动模糊,图像仍然可能产生有用的关键点。此外,模糊对直方图没有显著影响。下面的截图显示了一个有运动模糊的镍硬币:
尽管有轻微的运动模糊,镍的特点是可见的。BeanCounter显示正确的分类,加拿大镍。
5.12.3 失去焦点
有时,相机无法聚焦目标。然后,图像可能过于模糊,无法产生有用的关键点。然而,再次强调,模糊对直方图的影响很小。下面的截图显示了一个极度失焦的loonie:
尽管自动对焦效果不佳,但由于其独特的颜色,loonie仍然可以分类。在我们的分类范围内,它是唯一完全金色的对象。BeanCounter正确地将其标记为加元。
当然,豆子比硬币还厚。当背景处于焦点中时,bean可能处于焦点之外。考虑一下下面的罗马诺咖啡豆的屏幕截图,它稍微偏离了焦点:
像往常一样,我们看到豆的独特颜色和它反弹的光。BeanCounter正确地告诉了我们正在查看罗马诺咖啡豆。
5.12.4 反射
有时,一枚硬币可能会捕捉到iOS设备、用户的手或其他物体的反射。反射可能在亮度或颜色上产生不寻常的变化——换句话说,直方图的失真。然而,这种反射不太可能掩盖硬币的关键点,甚至可能有助于阐明它们。下面的截图是我的手在一角硬币上的倒影:
请注意一角硬币右边明亮的粉红色区域。尽管存在这种异常,BeanCounter还是生成了正确的分类,Canadian dime。
5.12.5 斑点重叠
有时,一个物体可能靠近另一个物体或背景中的某些元素。然后,斑点斑点检测器就不能在背景的区域中裁剪出一个单独的对象。例如下图中,靠近toonie硬币的pinto豆的截图:
探测器正确地裁剪了豆子和它反射的光。然而,矩形区域也包含了一个toonie硬币的一角.尽管有这些无关的元素,分类器仍然生成正确的结果,pinto bean。
下面的截图显示了一个更加极端的情况.背景包含文字,且文字和romano豆的轮廓相交:
在这里,斑点检测器漏掉了一半的豆子,但它检测到的是豆子的下半部分,并在背景的纯白色区域中反射光线。即使基于这种部分检测,blob分类器也会生成正确的结果romano bean。