基于我们正在研究的项目,我进行了有趣的讨论:为什么在模板匹配算法上使用CNN视觉检查系统?
背景:我展示了一个简单的CNN视觉系统(网络摄像头和笔记本电脑)的演示,该系统检测特定类型的对象是否“损坏” /有缺陷-在这种情况下,是PCB电路板。我的CNN模型显示了在静态背景下正确和断裂的电路板(每个电路板大约100张图像)的示例。我们的模型使用了预先训练的VGG16的前几个conv / maxpool层(在imagenet上),然后我们添加了一些可训练的conv / pool,并带有一些密度,从而得到了dim-3一个热编码的矢量输出用于分类:(is_empty,has_good_product,has_defective_product)。
该模型非常容易训练,并且达到99%的验证准确无误;由于我们知道我们的数据集很小,因此我们还进行了各种数据扩充方面的培训。实际上,它的工作效率约为10的9倍,但是同一块电路板的几次随机平移/旋转有时会使其处于相反的类别。也许更积极的数据增强会有所帮助。无论如何,对于原型概念项目,我们感到很高兴。
现在我们正在向另一位工程师和他的同事介绍,他提出了这样的论点,即NN对于此而言是过大的,应该只使用模板匹配,为什么要做CNN?
对于为什么我们的方法在某些应用程序(例如要检查的其他零件)中会更好,我们没有一个很好的答案。我们提出了一些要点:
1)对不变性更健壮(例如通过数据增强)
2)可以进行在线学习以改进系统(例如,人可以告诉软件哪个示例出错了)
3)不需要像传统计算机视觉算法中那样设置阈值,您认为呢,对于这种类型的检查任务,CNN系统还有更多优势吗?在什么情况下会比模板匹配更好?
对于何时将深度NN用作工作的技术,还有一些随机的想法:对于需要3D深度感测作为输入一部分的系统,或者可以变形/拉伸/挤压但仍然“好”的任何类型的对象,以及没有缺陷(例如毛绒动物,电线等)。很好奇听到您的想法:)