【botvs 源码】【图龙源码】【飞月源码】PanopticFPN源码
1.ICCV2021 FaPN: Feature-aligned Pyramid Network for Dense Image Prediction
2.Panoptic FCN:真正End-to-End的全景分割
3.PanopticFCN一个全新的做全景分割的模型
4.Panoptic-FlashOcc:目前速度和精度最优的全景占用预测网络
5.Detectron2 快速开始,使用 WebCam 测试
6.图像分割经典算法简介
ICCV2021 FaPN: Feature-aligned Pyramid Network for Dense Image Prediction
密集预测是计算机视觉任务的集合,旨在为图像中的每个像素分配预定义的类别。在场景理解中扮演着基础角色,对于自动驾驶、医学成像、botvs 源码增强现实等实际应用极为重要。现代解决方案建立在卷积神经网络(CNN)之上,随着CNN架构的最新进展,密集预测任务如对象检测、语义分割、实例分割和全景分割取得了显著的进展。
面临的挑战是,密集预测需要丰富的空间细节进行对象定位,以及强大的语义进行对象分类,这些可能分布在不同的分辨率/尺度级别。如何有效地生成不同尺度的特征层次结构是处理密集预测任务的关键障碍之一。通常有两种方法解决这一问题:DRN(Dilated Residual Network)形式,通过使用具有不同空洞率的空洞卷积来捕获远程信息,而无需降低空间分辨率;另一种是FPN(Feature Pyramid Network)形式,基于ConvNet的默认自下而上路径构建自上而下的特征金字塔。
然而,自下而上和上采样特征之间存在不准确的对应关系,这会对后续层的学习产生不利影响,导致错误分类,特别是在对象边界周围。为了解决这个问题,提出了一个特征对齐模块,它通过学习调整每个采样位置的卷积核中的学习偏移量来学习将上采样特征图与一组参考特征图对齐。此外,还提出了一个特征选择模块,用于适应性地强调包含过多空间细节的自下而上的特征图以进行准确定位。
从概念上讲,特征对齐金字塔网络(FaPN)可以很容易地与现有的自下而上的ConvNet骨干网结合,以生成多个尺度的特征金字塔。我们实现了FaPN在现代密集预测框架(如Faster R-CNN、Mask R-CNN、PointRend、MaskFormer、PanopticFPN、PanopticFCN)中,并证明了其在目标检测、语义、实例和全景分割方面的功效。广泛的评估表明,FaPN可以显著提高密集预测性能,图龙源码特别是在小型对象和对象边界上。此外,FaPN还可以通过与轻量级自下而上的主干配对,轻松扩展到实时语义分割。
具体方法包括FAM(Feature Alignment Module)和FSM(Feature Selection Module)。FAM类似于SFNet中的对齐操作,但使用3x3可变形卷积进行对齐。FSM是纯粹的通道注意力,但作者解释了二者之间的区别。实验充分表明了FaPN的有效性,并与最新最高的方法进行了对比,验证了其实时性。各模块的有效性在各项任务上的提升显著,与最佳方法的比较也显示了其优势。实时性方面的比较进一步证明了FaPN的性能。
CV作为实验科学,实验的稳健性至关重要。本文提供了一个实例,展示了如何通过全面的实验和与先进方法的比较,来展示新方法的有效性和实用性。
Panoptic FCN:真正End-to-End的全景分割
在计算机视觉领域,全景分割作为语义分割和实例分割的结合体,旨在全面解析图像中的视觉信息,通过同时预测每个像素点的类别标签和实例ID,实现对图像的完备描述。此概念自年FAIR提出后,成为解决复杂场景解析的关键技术,对无人驾驶、虚拟现实等应用具有重要意义。
全景分割涉及评价指标,如PQ、SQ、RQ和PC,其中PQ综合评估分割质量和实例识别准确性,PC则强调大物体分割指标的权重,更适应特定应用场景。
Panoptic FPN作为经典box-based全景分割方法,通过FPN提取多尺度语义信息,接着利用实例分割分支预测实例,同时增加语义分割分支预测类别,实现thing和stuff的统一处理。然而,其依赖于box预测,导致结果受制于box预测精度,并存在重叠区域,飞月源码需通过后处理解决。
DeeperLab为box-free全景分割代表,通过直接预测thing和stuff,去除box预测的影响,支持更大feature map上的全景分割。其结构包含Encoder、Decoder和Prediction部分,通过ASPP模块增强特征表达,S2D和D2S模块高效融合不同尺度特征。
Panoptic FCN则被视作真正意义上的End-to-End全景分割方法,通过统一预测thing和stuff,消除冗余和复杂的信息融合操作,实现简洁高效。该方法由Kernel Generator、Kernel Fusion和Feature Encoder组成,Kernel Generator生成thing和stuff的kernel weights,Kernel Fusion合并不同stage的kernel weights,保证一致性,Feature Encoder编码高分辨率特征,与Kernel Fusion的输出进行卷积,得到最终预测结果。
实验结果表明,Panoptic FCN在速度与精度的平衡上超越了前代算法,标志着全景分割领域的重大进展,其在解决复杂视觉场景解析问题上具有突破性意义。
PanopticFCN一个全新的做全景分割的模型
本文不涉及具体公司或个人,而是聚焦在介绍一种新模型——PanopticFCN,用以解决全景分割问题。本文旨在为初学者提供借鉴,而非针对特定行为或个体。若任何相关行为触及底线,请大家遵守合理尺度。
PanopticFCN模型创新之处在于统一化表达方式。传统方法分为基于实例分割的途径,以及单独处理stuff分支的策略,但PanopticFCN通过结合所有对象及背景进行单一编码,简化了全景分割。每个object/背景类别在卷积核权重中独立编码,从而实现高效融合,无需额外的box定位。
此模型不通过nms等方式过滤密集预测,而是生成实例感知化的卷积核权重,去除密集预测和nms的需求。此外,对于背景处理采用与实例相同的征途换皮源码处理技术,直接预测背景kernel权重,避免了传统FCN的繁琐。
总体来看,PanopticFPN结构相对简单,分为FPN分支进行权重和特征的分割。通过最后一层1x1卷积的通道数体现物体数量的动态性,巧妙地解决了部署时的问题。该模型输出两部分:带权重的通道和编码特征,两者经过卷积操作即可得到最终结果,避免了分次计算的繁琐。实验证明,此模型在速度和精度上超越了PanopticDeeplab和UPSNet等模型,成为当前不错的全景分割选择。未来,可能有更多工程化优化和加速技术加入,使得小网络也能实现高可用的全景分割。
Panoptic-FlashOcc:目前速度和精度最优的全景占用预测网络
宣传一下小伙伴最新的工作Panoptic-FlashOcc,这是一种高效且易于部署的全景占用预测框架(基于之前工作 FlashOcc),在Occ3DnuScenes上不仅取得了最快的推理速度,也取得了最好的精度。
全景占用(Panoptic occupancy)提出了一个新的挑战,它旨在将实例占用(instance occupancy)和语义占用(semantic occupancy)整合到统一的框架中。然而,全景占用仍然缺乏高效的解决方案。在本文中,我们提出了Panoptic-FlashOcc,这是一个简单、稳健、实时的2D图像特征框架。基于FlashOcc的轻量级设计,我们的方法在单个网络中同时学习语义占用和类别感知的实例聚类,联合实现了全景占用。这种方法有效地解决了三维voxel-level中高内存和计算量大的缺陷。Panoptic-FlashOcc以其简单高效的设计,便于部署,展示了在全景占用预测方面的显著成就。在Occ3D-nuScenes基准测试中,它取得了.5的RayIoU和.1的mIoU,用于语义占用,运行速度高达.9 FPS。此外,它在全景占用方面获得了.0的RayPQ,伴随着.2 FPS的快速推理速度。这些结果在速度和准确性方面都超过了现有方法的性能。源代码和训练模型可以在以下github仓库找到: / Yzichen/FlashOCC。心水推荐源码
在本节中,我们概述了如何利用所提出的实例中心将全景属性集成到语义占用任务中。我们首先在第3.1节提供架构的概述。然后,我们在第3.2节深入到占用头,它预测每个体素的分割标签。随后,在第3.3节中,我们详细阐述了中心度头,它被用来生成类别感知的实例中心。最后,在第3.4节中,我们描述了全景占用处理,它作为一个高效的后处理模块,用于生成全景占用。
如图2所示,Panoptic-FlashOcc由四个主要部分组成:BEV生成、语义占用预测、中心度头和全景占用处理。BEV生成模块将环视图像转换为BEV特征[公式],其中H、W和C分别表示特征的高度、宽度和通道维度。这个转换是通过使用图像编码器、视图转换和BEV编码器来实现的,这些可以直接从[, , , ]中采纳。为了确保在边缘芯片上高效部署,我们坚持使用FlashOCC[]的配置,其中ResNet[8]被用作图像编码器,LSS[9, ]作为视图转换器,ResNet和FPN被用作BEV编码器。
语义占用预测模块以上述扁平化的BEV特征[公式]作为输入,并生成语义占用结果[公式],其中[公式]表示垂直于BEV平面的体素数量。同时,中心度头分别生成类别感知的热图[公式]和实例中心的回归张量[公式],其中[公式] 代表"thing"类别的语义数量。
最后,语义占用结果[公式]和上述实例中心信息通过全景占用处理,生成全景预测[公式]。需要注意的是,全景占用处理作为后处理步骤,不涉及任何梯度反向传播。
为确保方案轻量且易于部署,语义占用预测模块的架构直接继承自FlashOCC[]。它由一个占用头和一个channel-to-height的模块组成,能够预测"thing"和"stuff"类别的语义标签。占用头是一个子模块,包含三个2D卷积层。根据[, ]中提出的损失设置,损失函数通过引入距离感知(distance-aware)的focal loss[公式] [],改进了FlashOcc中使用的pixel-wise交叉熵损失。此外,为了增强3D语义场景完成(Semantic Scene Completion, SSC)处理遮挡区域的能力,采用了语义亲和损失 [公式] [2]和几何亲和损失 [公式]。此外,lovasz-softmax损失[公式] []也被引入到训练框架中。
我们框架中提出的centerness head,有两个目的:如图2底部中心块所示,中心度头包括中心回归头和中心热图头。两个模块都包含三个卷积层,搭配3×3的核心。Center Heatmap Head. 中心点表示对于"thing"和"stuff"的重要性已在包括目标检测[9, , , ]、实例分割[6]和全景分割[3, ]等多项研究中得到广泛证明。在训练过程中,gt实例中心度值使用2D高斯分布进行编码,其标准差等于标注实例的对角线大小。focal loss被用来最小化预测的class-aware热力图[公式]与对应gt之间的差异。
全景占用处理模块充当实例标签的分配模块,设计得既简单又有效。它完全依赖于矩阵运算和逻辑运算,不包含任何可训练参数。这种设计使得全景占用处理的实现直接而高效。
给定class-aware热力图[公式],我们通过局部最大置信度提取候选实例中心索引。具体是将maxpool应用于[公式],kernel大小为3×3,找到那些被maxpool筛选出的索引。这个过程类似于目标检测中的非极大值抑制(NMS)。随后,保留置信度最高的前个索引,并使用顺序得分阈值[公式](设置为0.3)来过滤置信度低的索引。最后,我们获得了[公式]个实例中心索引提案[公式],其中[公式]、[公式]和[公式]分别代表沿[公式]、[公式]和[公式]轴的索引。[公式]的值对应于相应实例的语义标签。使用中心回归张量[公式],我们可以进一步获得与精确的3D位置和语义标签配对的实例中心提案,表示为[公式]:
[公式]
这里的[公式] 和 [公式] 分别代表沿 [公式] 轴和 [公式] 轴的体素大小,[公式] 是沿 [公式] 轴的感知范围。
我们使用一个简单的最近邻分配模块来确定[公式]中每个体素的实例ID。Algorithm 1给出了相关处理的伪代码。给定语义占用[公式]和实例中心[公式]作为输入,最近邻分配模块输出全景占用[公式]。首先,我们将实例ID号[公式]初始化为0。对于语义标签中的每个类别[公式](共有[公式]个语义类别),我们首先收集在[公式]中值为[公式]的索引集[公式]。然后,我们根据[公式]是否属于“stuff”对象或“thing”对象,采取不同的处理方式。
这些结果在速度和准确性方面都超过了现有方法的性能。在具有挑战性的Occ3DnuScenes测试中,Panoptic-FlashOcc不仅取得了最快的推理速度,也取得了最好的精度。这使得它成为目前速度和精度最优的全景占用预测网络。
总结:本文介绍了Panoptic-FlashOcc,这是一种高效且易于部署的全景占用预测框架。它基于已建立的FlashOcc,通过整合centerness head和全景占用处理,将语义占用增强为全景占用。Panoptic-FlashOcc在具有挑战性的Occ3DnuScenes测试中不仅取得了最快的推理速度,也取得了最好的精度。
Detectron2 快速开始,使用 WebCam 测试
本文旨在快速上手使用 Detectron2 并进行实时目标检测。首先,需确保环境配置到位。
安装 Detectron2 并进行基础环境检查,确保一切准备就绪。
从 Detectron2 的 model zoo 选取一个感兴趣的模型,这里以 COCO R-FPN 3x 训练的模型为例进行演示。
下载选定模型至指定路径,准备进行推断。
运用 Faster R-CNN 模型执行推断操作,直观展示实时目标检测效果。
接着,转向实例分割任务,使用 Mask R-CNN 模型执行推断,观察实例分割结果。
进一步探索姿态估计,通过 Keypoint R-CNN 模型执行操作,展示姿态估计效果。
最后,全景分割任务中,Panoptic FPN 模型执行推断,呈现全景分割结果。
为了实现摄像头实时测试,获取本机 WebCam 列表,并根据需求调整摄像头和分辨率。
通过修改 demo/demo.py 文件,配置所需摄像头及参数。
执行测试脚本,实际效果得以展现,直观感受摄像头下实时目标检测的动态过程。
GoCoding 团队通过个人实践经验分享,鼓励关注公众号,获取更多技术实践与指导。
图像分割经典算法简介
概述
目前图像分割主要分为三大领域:语义分割、实例分割与全景分割,它们之间的关系为:
语义分割每个像素对应一个类标签,实例分割每个对象的掩码和类标签,全景分割每像素类+实例标签。全景分割任务最为复杂,相较于语义与实例分割,对精度要求更高。
与检测的关系
分割相较于检测,提供更准确的位置信息,利于后续计算如IoU或面积,但数据标注难度增大,因分割需细化至每个像素点,且个人主观感受差异。
数据集
常用2D分割数据集包括PASCAL VOC、PASCAL Context、MS COCO、Cityscapes、ADEK。
语义分割
FCN()全卷积网络,为图像分割领域开山之作,通过反卷积层进行上采样,以匹配原始图像大小。损失函数为交叉熵损失。优点是首次将CNN引入图像分割,但上采样层未考虑多尺度信息,影响精度。
U-Net()简化网络结构,通过上采样、复制特征图与通道拷贝,实现多尺度信息传递。损失函数仍为交叉熵损失。简洁清晰的结构是其优势。
FPN()通过横向连接、自顶向下传输,解决多尺度问题,结构美观、易于理解,适合作为图像检测的Backbone。
实例分割
实例分割通常与目标检测使用同一套网络参数,Mask-RCNN()最具代表性,其Mask模块用于实例分割。
全景分割
相关概念包括Things(可数物体)、Stuff(无定形区域)。Panoptic FPN()使用一个网络实现语义分割与实例分割,采用FPN作为Backbone,包含语义分割、实例分割与前景、背景分支。损失函数融合两任务损失,平衡不同部分权重。优点为统一模型实现全景分割。
AUNet()融合多种主流技术,通过注意力机制提高BG理解能力,包含RPN与FC分割掩码的注意力,结构合理,逻辑清晰,但未公开代码。
UPSNet()统一处理语义与实例分割,采用FCN与RPN、RCNN、Mask等部件,Panoptic Head整合两分支输出。结构清晰,提供代码。
Panoptic FCN()提出“generate-kernel-then-segment”框架,Kernel Generator与Fusion组件生成与整合权重,Feature Encoder编码高分辨率特征。使用Focal Loss与Dice Loss作为损失函数。
YOSO:实时全景分割网络
引领全景分割新纪元:YOSO实时框架解析 在深度学习领域,YOSO崭露头角,它凭借其创新的实时全景分割框架,通过动态卷积技术实现了高效且精确的图像分割。这个革命性的框架旨在优化计算效率,精心设计了特征金字塔聚合器和独特的可分离动态解码器,为视觉处理带来新的可能。 高效融合与特征提取 YOSO的核心在于其ResNet backbone,它如同强大的视觉引擎,负责提取图像的丰富特征。接着,FPN(特征金字塔网络)如同一座桥梁,巧妙地融合了多级特征,确保了信息的全面性和准确性。CFA(卷积优先聚合)则采用创新的卷积优先策略,犹如信息高速公路,加速了特征的高效融合,显著提升了整体性能。 动态解码器的革新 解码器是YOSO的心脏,其中的可分离动态卷积注意力模块是亮点。传统多头交叉注意力模块繁琐且计算量大,YOSO通过1D卷积的轻量化设计,巧妙地降低了复杂度。Pre-Attention模块引入了自注意力机制,而Post-Attention则进一步提升了预测的精度。通过N个Block(这里N=2)的递进处理,生成的全景Kernels Output如丝般流畅。 预测输出的精准呈现 预测部分分为mask和class预测两个步骤。首先,mask预测通过一系列FC(全连接)层和LayerNorm(层归一化)操作,生成Mask1,再经过一次全连接,得到Mask2,最后与FPN特征进行融合,生成高分辨率的mask预测结果。Class预测则采用类似的过程,生成的Cls预测包含了丰富的类别信息,为全景分割增添了更深层次的理解。 无限可扩展的堆叠结构 YOSO的block_T模块可灵活堆叠,从第二个block开始,它结合了FPN特征、Panoptic Kernels和上一block的mask信息,形成了一个递进优化的过程,确保了模型的精度和速度并存。 总结来说,YOSO以创新的架构和高效的计算策略,重塑了全景分割的未来。它不仅实现了实时性能,还兼顾了精度,无疑为图像分割领域带来了革命性的突破。