开发基于相机的检测系统需要不断迭代、理解采样和清晰度对图像质量的影响,并使用数据集来评估系统性能。
由于使用低成本和资源受限的体系结构等要求, 使得基于嵌入式相机的检测系统的设计工作变得更加复杂。因此,在启动算法开发工作时,就要充分考虑视觉系统涉及的方方面面。
从视觉系统开始很重要,原因有两个。首先,算法性能受限于视觉系统生成的图像质量。虽然可以提升算法的能力,但在某些时候,算法的性能受到图像质量的限制。其次,视觉系统较为复杂,多个组件之间存在许多交互参数,因此如果在开发周期后期再更改参数的话,将会导致高昂的开发成本。
在本文中,基于相机的检测系统由图1所示的以下组件构成:场景中的感兴趣目标;场景成像的环境;视觉系统(图像传感器、镜头和光源);捕获的数字化场景,要包括感兴趣目标;以及识别场景内感兴趣目标的算法。
图1:在本文中,基于相机的检测系统由以下组件构成:场景中的感兴趣目标;场景成像的环境;视觉系统(图像传感器、镜头和光源);捕获的数字化场景,要包括感兴趣目标;以及识别场景内感兴趣目标的算法。
开发方法:构建-测量-学习
在开发之初,通常存在“鸡或蛋”的问题:检测算法的能力将对视觉系统提出要求,而视觉系统产生的图像质量也将对检测算法提出要求。成功的设计是:要保持视觉系统和检测算法的功能协调一致,从而满足商业目标。在开发过程中,必须要同时考虑算法和视觉系统。为了做好这一点,需要有效的迭代。
一种称为“构建-测量-学习循环”的灵活迭代方法,基于精益启动原则,通过集中学习提供有效迭代框架。要使用这种方法,请在每次迭代开始时提出以下三个问题:
1. 我们需要学习什么?这应该建立在以前的学习基础上。
2. 为了学习目标,我们需要测量什么?
3. 为了实现测量,我们需要构建什么?
然后,仅构建学习所需要的东西。
例如,我们将构建-测量-学习循环方法应用于设计基于相机的低成本线性条形码阅读器,这种阅读器可以在单一图像捕获中,以大视场解码尽可能多的条形码。想象一下,在一个高度动态的环境中,条形码阅读器可以在任何方向快速移动的场景。不同尺寸的条形码在整个环境中处于随机位置,并且与条形码阅读器之间的角度和距离也都是随机的。
使用构建-测量-学习循环的方法,第一步是确定图像传感器和镜头所需的“类”,这将设置一个基础的硬件成本目标(见图2)。为此,需要测量基础相机生成图像质量的能力,使用解码精度作为测量基准。为了进行测量,我们使用现成的镜头和图像传感器开发套件构建相机系统。收集一个小数据集,并使用现成的块开发算法的第一个版本。
图2:实际使用中的构建-测量-学习循环方法,显示了设计基于相机的低成本线性条形码阅读器的例子。
第一次迭代学习产生的不仅仅是所需的图像传感器和镜头,还有基础相机的成本估算。我们还学习到运动模糊是限制检测精度的主要噪声源。
我们将这些学习结果带入迭代二,并关注于解决运动模糊问题。为了学习这一点,我们测量了相机在快速运动场景中生成高质量图像的能力。利用迭代一的学习结果,我们利用短曝光时间和全局快门图像传感器,设计了一种减少运动模糊的方法。使用现成的组件和全局快门传感器,就构建了一台新相机。收集另一个数据集,修改算法,评估图像质量和算法性能。
迭代二的关键学习是全局快门工作方法,以及进一步提高算法能力,使得能够使用更低成本的图像传感器。随着继续进行更多次迭代,更多的学习将指导“如何利用现成的镜头、全局快门图像传感器和功能强大的算法,构建定制视觉系统的”成功设计决策。使用这种构建-测量-学习循环方法,有助于将重点聚焦在下一个重要的学习上,并减少非增值调查。它提高了迭代的有效性,并使设计满足商业目标,其中视觉系统的能力与算法的能力相辅相成。
设计起点:采样与清晰度
空间分辨率可以说是最具影响力的图像质量特征,因此在设计基于相机的检测系统时,空间分辨率是一个合乎逻辑的起点。空间分辨率定义了可以在图像中检测到的最小特征或目标的尺寸,可以分为两个部分:采样和清晰度。
采样是一个给定区域内的像素数,通常以每英寸像素数或每毫米像素数表示。由于它是光学系统放大倍数的函数,因此随物距而变化。采样不足将减少鉴别细节并增加了混叠伪影。为了确定系统的采样要求,必须要知道需要鉴别的特征的物理尺寸、最大检测距离和精确检测所需要的像素数。
为了适应具有挑战性的应用情况,在最大检测距离处(在放大率最低的区域内)开始,此处区别特征的像素数为4-5像素。通常,在开始的时候不清楚鉴别特征是什么,特别是在应用机器学习或深度学习时。开始时,最好采用冗余采样,因为在软件中减少采样比增加采用更容易,允许使用算法进行实验以确定所需要的最小采样。
使用薄透镜方程,可以轻松地根据采样要求推导出视觉系统参数。对于具有最小失真的光学叠加尤其如此。最终,采样要求将决定图像传感器的像素数、图像传感器的像素尺寸和镜头焦距。关于薄透镜方程,最令人兴奋的是,在购买图像传感器或透镜组件之前,可以在纸上计算和评估这些参数。Twisthink公司使用这些薄透镜方程创建了一个Excel工作表(见图3),用于快速选择图像传感器和镜头产品,工作表可以从http://bit.ly/VSD-TWI下载。
图3:Twisthink公司使用这些薄透镜方程创建了一个Excel工作表,用于快速选择图像传感器和镜头产品,工作表可以从http://bit.ly/VSD-TWI下载。
如果光学系统具有大约5%或更大的失真,则薄透镜方程不能精确地对系统建模。这时候通过采样确定视觉系统参数变得更具挑战性。
清晰度是图像空间频率的测量。通常区分细节将具有很高的空间频率。在评估影响清晰度的视觉系统参数时,最简单的方法是从两种不同的场景来看:静止状态和运动状态。
在静止状态下,清晰度的三大影响因素分别是环境、镜头和图像传感器:
· 环境中的雾、灰尘和微粒会引发图像模糊,因此在系统设计中需要考虑这些因素。
· 低质量镜头和镜头在图像传感器上的聚焦,会引发图像模糊。其他因素包括温度和制造——由于制造差异,模糊程度随温度变化,而且每个镜头可能情况都不一样。
· 图像传感器因像素串扰引入图像模糊。这种模糊情况随光谱波长而变化,大多数图像传感器供应商会根据要求提供此类信息。
在运动状态下,运动速度与曝光时间共同决定了图像的模糊程度。为了减少模糊,可以限制最大运动速度和/或将曝光时间降到最短,当然这将影响许多其他的视觉系统参数,如图像亮度、照明强度等等。
评估系统的性能
构建完系统后,评估系统性能的一个好方法就是使用数据集。数据集用于训练机器学习和深度学习算法。利用数据集,还可以频繁有效地评估系统的性能,并且可以为“判断解决方案是否符合预期”给出有价值的参考。
Twisthink使用一种称为算法开发框架的工具来收集数据、管理和处理数据,并有效地开发和评估。该框架包括五个部分,分别为视觉系统、数据集收集、标定的真实数据或标签、算法开发和性能评估,如图4所示。
图4:Twisthink使用一种称为算法开发框架的工具来收集数据、管理和处理数据,并有效地开发和评估。
为了实现准确的系统评估,必须在代表性环境中使用代表性视觉系统收集数据集。理想情况下,应使用视觉系统的最终版本来收集数据集。如果无法做到这一点,请在设计视觉系统时收集含代表性部分的小的初步数据集。
得到算法与数据集应产生的答案是评估的关键。这称为真实数据或标签。通常,真实数据需要人工解释,这通常是一个昂贵的步骤。具有真实数据的数据集可以成为支持产品开发的专有资产。
一旦开发出算法,就可以用数据集和真实数据来评估系统的性能。性能评估需要定义一个基准来测量系统的性能。使用预先记录的数据集来评估系统性能,可以加速开发,但是,解决方案的可信度是由数据集的内容决定的。因此,设计表征应用空间的数据集非常重要。
使用数据集评估系统性能,就像软件世界中的黑盒测试一样。但是,有时必须执行较低级别的“单元”测试。一种方法是通过对信号路径建模来理解噪声源及其对图像质量的影响。图5显示了基于相机的检测系统的主要组成部分。每个部分都受到不同噪声源的影响,每个噪声源都会影响捕获的图像质量。在每个部分中不同传输功能或噪声源,将影响初始信号。
图5:信号路径建模有助于开发人员理解噪声源及其对图像质量的影响。
对信号路径建模可以深入了解不明显的噪声源以及它们是否具有合适的解决方案。它还可以帮助确定哪些噪声源需要进一步研究或实验。最后,可以帮助理解组件之间的相互作用,并通过优先考虑“容易实现的目标”来指导开发。
当您设计基于嵌入式相机的检测系统时,一定记得在开始算法开发的时候就要充分考虑视觉系统的方方面面。并且请记住使用迭代开发方法,从最高图像质量特征(采样和清晰度)开始,并使用数据集来评估系统性能。
审核编辑 :李倩
全部0条评论
快来发表一下你的评论吧 !