基于 Yolact 的检测优化,训练优化不损推理效率,解决边缘模糊问题 !

向量数据库大模型机器学习

点击下方卡片,关注「集智书童」公众号

点击加入👉「集智书童」交流群

picture.image

picture.image

picture.image

picture.image

picture.image

想要了解更多:

前沿AI视觉感知全栈知识👉「分类、检测、分割、关键点、车道线检测、3D视觉(分割、检测)、多模态、目标跟踪、NerF」

行业技术方案 👉「AI安防、AI医疗、AI自动驾驶」

AI模型部署落地实战 👉「CUDA、TensorRT、NCNN、OpenVINO、MNN、ONNXRuntime以及地平线框架」

欢迎扫描上方二维码,加入「 集智书童-知识星球 」,日常分享论文、学习笔记、问题解决方案、部署方案以及全栈式答疑,期待交流!

免责声明

凡本公众号注明“来源:XXX(非集智书童)”的作品,均转载自其它媒体,版权归原作者所有,如有侵权请联系我们删除,谢谢。

确保自主驾驶列车在铁路表面的障碍物避免至关重要,其第一步是分割铁路区域。作者选择在Yolact的基础上进行工作。

为了解决模型预测的铁路边缘模糊问题,作者将边缘运算符提取的边缘信息纳入原始Yolact的损失函数,以强调模型对铁路边缘的重视。此外,作者应用了盒滤波器平滑由线性插值引起的 GT 边缘的破碎。

由于边缘信息和平滑过程仅在训练过程中整合,模型的推理速度不受影响。

作者在自定义铁路数据集上的实验结果表明,预测准确性得到了提高。此外,在Cityscapes上的结果表明,与Yolact相比, 和分别提高了4.1和4.6。

1 Introduction

自动驾驶是现代智能轨道交通系统中的一个重要研究领域。确保列车安全运行的关键是避障。为解决这一任务,一种常见的做法是利用激光雷达和高分辨率、高帧率摄像头作为数据采集和融合的基础设施,使列车运行区域中的障碍物得以检测并及时采取行动。这种方法可以进一步划分为几个主要步骤:铁路分割、图像与雷达数据的融合,以及障碍物检测。本文主要关注这个方法中的第一步——铁路分割。作者研究如何利用基于深度学习的实例分割算法准确、快速地分割收集到的视频中铁路区域。

鉴于列车的速度很高,迅速验证前方运行区域是否存在障碍物对做出及时决策和确保列车安全至关重要。如果算法错误地将轨道分割,将导致不准确的警告和错误的决策。因此,实现轨道区域实时、准确的分割尤为重要。为了实现实时性能,分割算法应至少以每秒20帧(fps)的速度运行。现有的实例分割算法可以广泛分为两阶段算法,例如Mask R-CNN[1],和基于修改的一阶段目标检测器如RetinaNet[2]的一阶段算法。两阶段实例分割算法提供了高的分割准确性,但通常推理速度小于10 fps,无法满足实际应用的实时要求。另一方面,尽管单阶段实例分割算法满足了速度要求,但它们生成的分割 Mask 通常较粗糙,尤其是在预测轨道边缘时。使用两阶段算法实现每秒20 fps的推理速度面临巨大的挑战。然而,对于相对简单的任务如轨道分割,将单阶段算法增强以满足准确性要求是可行的。

由于训练总是直接在铁路上方进行,并且摄像头安装在火车的前端,摄像头捕捉到的铁路始终显示为梯形。通过构建一个网络路径来加强上述规则描述的几何结构学习,单阶段实例分割算法在训练过程中可以更专注于铁路的边缘信息,从而提高其分割铁路的准确性。经过多次实验,作者选择Yolact模型作为改进的基础,因为它具有优越的性能,旨在增强实例边缘信息对作者铁路分割任务的关注度。作者的主要方法是在模型 Mask 生成的最后一步添加一个边缘检测分支。作者使用传统的边缘检测运算符从预测和 GT Mask 中提取铁路的边缘信息,然后计算被纳入损失函数的边缘信息的损失。

这使得模型能够获得铁路更全面的边缘信息理解。边缘检测运算符可以实现为一个没有可学习参数的卷积核,使作者的方法简单而高效。此外,直接生成高分辨率 Mask 会显著增加网络参数大小,导致算法速度下降。现有方法通常使用线性插值降低 GT Mask ,使其与算法生成的预测 Mask 对齐。然而,这些方法在网络学习到的真实值 Mask 上引入了锯齿边缘,导致预测出锯齿 Mask 。作者提出了一种基于盒滤波器的平滑策略来解决锯齿 Mask 边缘的问题。由于边缘信息处理仅在模型训练期间发生,作者的方法不会影响模型的推理速度。

2 Related Work

Instance Segmentation

实例分割是计算机视觉领域的一项任务,旨在将图像中的每个像素分配到特定实例。与语义分割不同,它关注于识别图像中的不同目标类别,而实例分割则更进一步,为每个实例分配唯一的标签。

随着深度学习的出现,特别是卷积神经网络的成功应用[5],在实例分割方面取得了显著的进展。2014年,Girshick等人提出了经典的目标检测方法,即Faster R-CNN [6],为实例分割奠定了基础。2017年,He等人进一步扩展了Faster R-CNN,并提出了Mask R-CNN [1],它将目标检测与语义分割相结合,实现了精确的像素级实例分割。

Yolact

为了提高实例分割任务的处理速度,Bolya等人提出了Yolact [4],它通过在单阶段检测器RetinaNet [2]的基础上添加第三个分支来预测原型的组合系数。此外,Yolact利用FCN [7]提取的图像特征从图像中生成一组原型。Yolact还引入了一个快速的NMS算法来替代传统的NMS,在最小化准确性的损失的同时加速了整体推理速度。

最后,对于通过NMS存活的每个实例,通过简单的矩阵乘法将原型的系数与原型相加,并通过Sigmoid非线性函数激活,从而在图像中生成每个实例的 Mask 。

Edge Detection

图像边缘处理一直是计算机视觉领域的一个重要研究领域。边缘检测涉及多种方法,其中最常见的方法利用了图像像素的局部特征变化和灰度级突然变化。

1968年,Irwin Sobel在其论文《An Isotropic 3x3 Image Gradient Operator》中提出了Sobel算子用于检测边缘。然而,Sobel滤波器只能检测水平或垂直方向的边缘,这一问题由拉普拉斯算子解决。在论文《Faster training of Mask R-CNN by Focusing on Instance Boundaries [8]》中,作者首次将边缘信息引入到Mask-R CNN中,从而显著提高了模型的性能。

3 Railroad

Edge Operator

3.1.1 Sobel Operator

索贝尔算子是一种二维滤波器,用于边缘检测,它可以使用固定卷积核实现,如公式(1)所示。通过将和算子应用于 Mask 中的每个像素,可以分别计算出 Mask 内的水平和垂直梯度值。将这两个方向上的梯度值组合在一起,作者可以确定每个像素的边缘强度和方向。

picture.image

图2展示了使用和运算符进行边缘检测的结果。

picture.image

3.1.2 Laplacian Operator

拉普拉斯算子是二维离散滤波器,其中最简单的各向同性导数算子就是拉普拉斯算子。对于二维数字图像f(x,y),其拉普拉斯算子定义如下:

∇2f=∂2f/∂x2+∂2f/∂y2 (2) 拉普拉斯算子可以通过卷积表示式(3)中的L来实现。算子可以通过积分对角项来包含对角像素信息。在接下来的实验中,作者将L选择为拉普拉斯算子的卷积核,并使用它来提取特定实例的边缘信息。

拉普拉斯提取的结果如图3所示,可以看出实例轮廓的提取边缘线比索贝尔算子得到的结果更细。

Fusion of the Edge Information

作者为Yolact添加了一个额外的分支,用于预测实例 Mask 轮廓,这一改进使整个网络能够优化实例边缘。作者将改进后的模型命名为RailYolact。增强算法的整体结构如图5所示。接下来,作者详细描述了RailYolact算法具体实现过程。在模型推理阶段,将原型 Mask 融合以产生输入图像中物体的预测实例 Mask ()。一个图像中的n个物体的实例 Mask 可以表示为n x w x h张量。这个n x w x h张量作为边缘信息预测分支的输入。在上一部分,作者已经详细介绍了两种边缘检测运算符。将这些运算符应用到预测的实例 Mask (),作者可以得到预测的实例边缘 Mask ()。同样地,将边缘检测运算符应用到真实的实例 Mask (),作者可以得到实例边缘 Mask ()。有了预测和 Token 的值,作者可以构建一个损失函数来优化和之间的差异,使网络在推理过程中优化实例边缘。在本论文中,作者将边缘检测运算符定义为K,它可以是Sobel算子或拉普拉斯算子。表示实例 Mask 。实例边缘 Mask 的提取过程可以表示为公式(4),其中操作是卷积运算。

picture.image

picture.image

图4显示了边缘信息提取头的结构。在这个图里,n x W x H表示n个实例的 Mask ,而3 x 3 x D表示边缘检测算子。这个算子可以作为卷积神经网络中的一个卷积核实现,参数已知且没有偏置项。

picture.image

Loss

模型的损失被定义为四种类型损失的加权和:分类损失(),边界框回归损失(),实例 Mask 损失()和边缘信息损失()。前三种损失的定义与Yolact论文一致。计算边缘损失时,作者采用二进制交叉熵损失函数,如公式(5)所示,类似于 Mask 损失。这种损失函数使作者能够衡量预测 Mask 的边缘与真实 GT Mask 的边缘之间的差异。

picture.image

在RailYolact模型训练过程中,、和的权重分别为1、1和1.125。在将纳入损失的过程中,最初的策略是直接将加到损失中。然而,这种方法并未产生令人满意的结果。为了建立一个有意义的关系,将最终定义为方程(6)。

picture.image

A Strategy to Eliminate Jagged Edges of Rail Masks

在网络训练过程中,输入图像实例 Mask 的大小被设置为800 x 800,而整个算法为每个实例生成的 Mask 大小为200 x 200。在计算 Mask 损失的过程中,需要将实际标签缩放至匹配预测 Mask 的大小,通常通过线性插值实现。然而,由于使用了较大的缩放因子,标签本身呈现出锯齿状,这在训练过程中被网络无意间学习到。因此,在网络进行推理时,输出中的分割 Mask 边缘也呈现出锯齿状。

盒形滤波器是最基本的低通滤波器类型,它通过将一个包含所有值都设置为1的数组乘以一个归一化常数来创建。可以表示为公式(7):

作者采用盒形滤波器对插值标签进行处理。由于实例 Mask 是二进制图像,在 Mask 灰度值恒定的区域内,像素值保持不变。相反,在像素变化较大的区域内,盒形滤波器核内的像素值得到平滑,从而减轻了实例边缘的锯齿状。盒形滤波器是一种简单的实现方式,但可以产生令人印象深刻的平滑效果。

在网络训练过程中,作者使用平滑的 Mask 作为预测 Mask 的目标标签来计算损失。由于平滑滤波器仅在训练过程中运行,不会影响推理速度。尽管平滑边缘处理会导致真实 Mask 标签的信息损失,从而对分割精度产生轻微影响,但这种权衡是值得的,因为它可以消除边缘的锯齿效应。

4 Experiments

作者对RailYolact与当前最先进水平进行了全面的比较,并进行了详细的消融实验。作者在作者自建的铁路数据集和Cityscapes [3]上进行了实验,并使用标准COCO指标[9](包括AP(IoU阈值平均)和)评估了结果。

Railway Datasets

作者自己构建了铁路段分割数据集,该数据集通过在铁路车辆的前部和后部装备视频捕获设备而收集。捕获的视频在固定的间隔内被分割成单个帧。在标注过程中,图像被格式化为COCO数据集。经过预处理后,数据集被分为一个训练集,包含7,275张图像,以及一个验证集,包含3,120张图像,所有图像的大小均为1280 x 720像素。

Results on Railway Datasets

为了评估本文提出的方法在工程应用中的实际价值,作者将RailYolact应用于铁路数据集。这使得作者能够在图像中快速准确地分割铁路位置。在将其输入网络之前,所有图像都进行了缩放,统一为800 x 800的大小。表1总结了Yolact和RailYolact在铁路分割数据集上的比较结果,其中S表示Sobel算子,L表示拉普拉斯算子。很明显,使用拉普拉斯算子从边缘信息中提取信息,与在RailYolact中使用Sobel算子相比,在FPS和AP方面都取得了更好的结果。

picture.image

尽管表格中呈现的结果表明,Yolact和RailYolact在AP评估指标方面差异很小,但在结果的视觉感知上有了显著提高。作者的分析认为这一发现可以归因于数据集中的每个图像都只包含一个铁路,代表了一个单一类别的巨大实例。

图6(a)呈现了原始的铁路图像。使用Yolact进行铁路分割的结果如图6(b)所示,添加Laplacian运算符提取的边缘信息后的Yolact结果如图6(c)所示,使用Laplacian运算符的RailYolact结果如图6(d)所示。显然,引入边缘信息可以提高分割结果中边缘的平滑度、准确度和可信度。应用盒滤波器有效地减少了预测的铁路分割 Mask 中的锯齿边缘。

Results on Cityscapes

4.3.1 Performance

为了评估改进方法在RailYolact中的影响及其泛化能力,作者在Cityscapes[3]上进行了额外的实验。由于公共数据集中的实例没有像单个铁路实例那样大的边,因此在本次实验中没有对实例 Mask 标签的锯齿边进行消除。表2中展示了两种算法在Cityscapes[3]上的比较结果,其中RailYolact-L和RailYolact-S分别表示使用拉普拉斯和索贝尔算子的RailYolact。R代表ResNet。

picture.image

从表2可以看出,作者的方法与Yolact相比,在AP上提高了4.1个百分点。值得注意的是,这种性能提升并未伴随着额外的速度损失,因为在网络推理过程中不会发生边缘信息的集成。表2的一个有趣的观察是,当RailYolact表现出更好的性能时,推理速度略有提高。这一现象可以归因于整个模型的优化效果,其中网络中的一些无关权重值可能会被消除,例如某些卷积核可能会稀疏,从而导致网络推理速度的轻微提升。

此外,可以观察到不同的边缘检测运算符对模型具有相似的影响。此外,为了比较不同 Backbone 特征提取网络之间的差异,作者进行了将ResNet50与ResNet101进行比较的实验。在ResNet101上,模型的总体AP表现相对较差。这可能归因于Cityscapes [3]的相对较小规模和数据集中每个类别实例的数量有限。

为了比较RailYolact与其他算法在分割 Mask 精度及推理速度方面的性能,作者在Cityscapes[3]数据集上对我国算法及其他算法的AP和推理速度进行比较分析,使用了RTX3080。由于大多数算法仅在MScoco数据集上进行了测试,因此作者只与Mask R-CNN[1]论文中提到的算法进行了比较,如表3所示。由于某些算法仅关注提高准确率而忽视速度,因此作者并未收集它们FPS的统计数据。可以看出,使用作者算法训练的网络模型在速度方面明显优于其他两个阶段的算法。这使得它们在需要快速推理速度的工程应用中具有很高的价值,适用于简单的场景。

picture.image

5 Conclusion

在本文中,作者提出了RailYolact,强调实例边缘信息,并将其应用于铁路分割。

作者使用了边缘算子来计算预测铁路掩膜和标注的真实铁路掩膜的边缘信息。

计算出的边缘信息损失随后被纳入损失函数中,以增强模型对铁路边缘的重视。

此外,为了解决铁路分割结果中的锯齿状边缘问题,作者使用了方框滤波器来处理由真实掩膜线性插值引起的掩膜锯齿状边缘。

在作者自定义的铁路数据集和Cityscapes[3]上进行的消融实验表明,这种改进提高了预测的准确性,同时保持了模型推理的实时性。

作者提出的模型也可以应用于其他需要满足实时性要求且对边缘信息敏感的任务。

参考文献

[0]. RAILYOLACT - A YOLACT FOCUSED ON EDGE FOR REAL-TIME RAIL SEGMENTATION.

picture.image

扫码加入👉「集智书童」交流群

(备注: 方向+学校/公司+昵称 )

picture.image

点击下方“ 阅读原文 ”,

了解更多AI学习路上的 「武功秘籍」

0
0
0
0
关于作者
关于作者

文章

0

获赞

0

收藏

0

相关资源
火山引擎大规模机器学习平台架构设计与应用实践
围绕数据加速、模型分布式训练框架建设、大规模异构集群调度、模型开发过程标准化等AI工程化实践,全面分享如何以开发者的极致体验为核心,进行机器学习平台的设计与实现。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论