随着机器视觉技术的飞速发展,许多需要人工操作的传统任务逐渐被机器所取代。
传统的目标识别方法大多是人工实现的,通过形状、颜色、长宽、长宽比和长宽比来判断识别的目标是否符合标准,最后定义一系列目标识别规则。 这种方法在一些简单的案例中得到了很好的应用唯一的缺点是,所有的规则和算法都必须随着识别对象的变化而重新设计和开发,即使它是相同的产品,不同批次的变化也会造成无法重用的现实。
随着机器学习和深度学习的发展,许多肉眼难以直接量化的特征,都可以通过深度学习自动学习,这是深度学习的优势和前所未有的吸引力。
有许多功能是我们无法用传统算法量化的,或者很难做到的,深度学习可以做到。 特别是,在图像分类和目标识别方面有显着改进。
视觉的常用对象识别方法有三种:斑点分析、模板匹配和深度学习。 下面就为大家介绍三种常用的目标识别方法。
斑点分析
blobanalysis
在计算机视觉中,斑点是指由相似颜色、纹理和其他特征组成的图像连接区域。 Blob 分析是对图像中同一像素的连接域的分析(此连接域称为 Blob)。 该过程是对图像进行二值化,对前景和背景进行分割,然后执行连接区域检测以获得 blob 块。 简单来说,斑点分析就是在“平滑”区域中找出具有“灰度突变”的小区域。
例如,假设有一块刚刚生产的玻璃,表面非常光滑平整。 如果这块玻璃上没有瑕疵,那么我们将无法检测到“灰度突变”; 另一方面,如果玻璃生产线中由于各种原因在玻璃上出现凸起的气泡、黑点或裂纹,那么我们可以检测玻璃上的纹理,二进制阈值图像中的色斑可以认为是一个斑点。 而这些零件都是生产过程造成的缺陷,这个过程就是斑点分析。
斑点分析工具可以将对象与背景隔离开来,并计算目标的数量、位置、形状、方向和大小,并提供关联点之间的拓扑。 处理过程不是逐个分析单个像素,而是处理图像行。 图像的每一行都由游程长度代码 (RLE) 表示,以表示相邻的目标范围。 与基于像素的算法相比,该算法大大提高了处理速度。
但另一方面,blob 分析不适用于以下图像:
1.低对比度图像;
2.必要的图像特征不能用 2 个灰度级别来描述;
3.根据模板进行检测(需要模式检测)。
一般来说,斑点分析是检测图像中的斑点,适用于背景单一、前景缺陷类别不分、识别准确率低的场景。
模板匹配方式
template matching
模板匹配是最原始、最基本的模式识别方法,它研究特定对象的图案在图像中的位置,然后识别对象,这是一个匹配问题。 它是图像处理中最基本和最常用的匹配方法。 换句话说,就是需要匹配的小图像,在大图像中搜索一个目标,知道地图中有一个目标要找,并且目标的大小、方向和图像元素与模板相同,可以在图中找到目标,并通过统计计算平均值来确定其坐标位置, 图像的渐变、距离、方差和其他特征。
这说明我们要找的模板就是图中的标准,这里的标准就是说标准一旦图片或模板被改变,比如旋转、修改某些像素、翻转图片等,我们就无法匹配,这也是这个算法的缺点。
因此,这种匹配算法是在待检测的图像上,从左到右、从上到下,将模板图像与小东西的图像进行比较。
该方法比斑点分析具有更好的检测精度,还可以区分不同的缺陷类别,相当于一种搜索算法,根据待检测图像上不同的ROIs,用指定的匹配方法搜索和匹配模板库中的所有图像,并要求缺陷的形状、大小和方法具有较高的一致性, 因此,有必要构建更完整的模板库,以获得可用的检测精度。
深度学习方法
deep learning method
2014年,R-CNN被提出,使得基于CNN的目标检测算法逐渐成为主流。 深度学习的应用提高了检测精度和检测速度。
卷积神经网络不仅可以提取更高层次和更好的表现力特征,还可以在同一模型中提取、选择和分类特征。
在这方面,主流算法主要有两种类型:
第一种是基于分类结合RPN网络的R-CNN系列二阶目标检测算法(TwoStage)
另一种类型是一阶目标检测算法(单阶段),它将目标检测转换为回归问题。
目标检测的任务是找出图像或**中感兴趣的对象,同时检测它们的位置和大小,这是机器视觉领域的核心问题之一。
目标检测过程中存在许多不确定因素,如图像中目标数量的不确定性,物体外观、形状和姿态的不同,以及目标成像过程中光线、遮挡等因素的干扰,导致检测算法存在一定的难度。
自进入深度学习时代以来,目标检测的发展主要集中在两个方向:R-CNN系列等两阶段算法和YOLO、SSD等一阶段算法。 两者的主要区别在于,两阶段算法需要提出建议(一个可能包含要检查对象的预选框),然后进行细粒度的对象检测。 OneStage算法将直接提取网络中的特征,以对对象进行分类和定位。
在二阶算法中,区域提取算法的核心是卷积神经网络CNN,它首先使用CNN骨干提取特征,然后找到候选区域,最后滑动窗口确定目标类别和位置。
R-CNN首先通过SS算法提取约2k个感兴趣区域,然后对感兴趣区域进行特征提取。 缺陷:感兴趣区域的权重不能相互共享,存在重复计算,中间数据需要单独存储以占用资源,影响输入强制缩放的检测精度。
SPP-NET在最后一个卷积层和第一个全连接层之间做一些处理,以保证输入全连接层的大小相同,从而解决了输入图像大小有限的问题。 SPP-NET候选区域包含整个图像,整个图像和所有候选区域的特征可以通过卷积网络一次性获得。
fastr-cnn利用SPP-Net的特征金字塔,提出将各种大小候选区域的特征图映射成统一尺度的特征向量,首先将不同大小的候选区域划分为Mn个块,然后对每个区块进行Maxpooling,得到一个值。 这样,所有候选区域特征图都统一为m-n维特征向量。 但是,使用 SS 算法生成候选框非常耗时。
特征图进入RPN网络后,针对每个特征点预设9个不同大小和形状的锚点框,计算锚点框与真实目标框的交偏比,该位置是否有目标,将预定义的锚点框分为前景或背景, 然后根据偏差损失对RPN网络进行训练,进行位置回归,对ROI的位置进行修正。最后,校正后的 ROI 被传递到后续网络。然而,在检测过程中,RPN网络需要对目标进行回归筛选,以区分前景和背景目标,后续检测网络对RPN输出的ROI进行精细分类和位置回归,导致模型参数大量。
Maskr-CNN 向 Fasterr-CNN 添加并行 MASK 分支,为每个 ROI 生成一个像素级二进制掩码。 在 Fasterr-CNN 中,使用 roipooling 来生成均匀比例的特征图,这样当原始图像被映射回来时,它就会错位,使像素无法准确对齐。 这对目标检测的影响相对较小,但对于像素级分割任务,该错误不容忽视。 maskr-cnn采用双线性插值来解决像素无法精确对齐的问题。 但是,由于两阶段算法的继承,实时性能仍然不理想。
一阶算法在整个卷积网络中进行特征提取、目标分类和位置回归,通过逆向计算得到目标位置和类别,在识别精度略弱于两阶段目标检测算法的前提下,大大提高了速度。
yolov1 将输入图像均匀缩放到 448 448 3,然后将其分成 7 7 个网格,每个网格负责两个边界框 bbox 的位置和置信度。 这两个b-box对应同一个类别,一个大目标和一个小目标。 bbox的位置不需要初始化,而是在权重初始化后由yolo模型计算,模型在训练过程中随着网络权重的更新而调整b-box的位置。 但是,该算法不能很好地检测小目标,并且每个网格只能有一个类别。
Yolov2将原始图像划分为13 13个网格,通过聚类分析确定每个网格设置了5个锚框,每个锚框**1个类别,目标位置通过锚框与网格之间的偏移量进行回归。
SSD 保留了网格划分方法,但从底层网络的不同卷积层中提取特征。 随着卷积层数的增加,锚盒的尺寸由小到大设置,从而提高SSD对多尺度目标的检测精度。
Yolov3 使用聚类分析为每个网格预设 3 个锚框,仅使用暗网的前 52 层,并使用大量残差层。 使用下采样来减少池化对梯度下降的负面影响。 Yolov3通过上采样提取深层特征,使其与待融合的浅层特征维度相同,但通道数不同,通过在通道维度上拼接实现特征融合,融合26 255和52 52 255的特征图,相应的检测头也采用全卷积结构。
Yolov4在原有YOLO目标检测架构的基础上,采用了近年来CNN领域最优的优化策略,在数据处理、骨干网络、网络训练、激活功能、损失功能等方面进行了不同程度的优化。 到目前为止,已经提出了许多高精度的目标检测算法,包括最近在视觉领域的Transformer研究,这也一直在提高目标检测算法的准确性。
总之,表示的选择会对机器学习算法的性能产生巨大影响用于监督学习培训的前馈网络可以被认为是表征学习的一种形式。 据此,传统的算法如斑点分析、模板匹配等是人工设计的来表示它们的特征,而神经网络则通过算法自动学习来学习对象的适当特征表示,比手动特征设计更高效、更快捷,不需要太多专业的特征设计知识,因此可以识别不同的形状, 不同场景下的大小、纹理等对象,检测的准确性会随着数据集的增加而进一步提高。
文章**:机器视觉沙龙。免责声明:本文的目的是传达更多信息,仅供读者学习和交流。 文章版权归原作者所有,如有侵权,请联系删除。