当前位置: 首页 > news >正文

DETR End-to-End Object Detection with Transformers

End-to-End Object Detection with Transformers

论文链接:http://arxiv.org/abs/2005.12872

代码地址:https://github.com/facebookresearch/detr

一、摘要

  提出了一种将目标检测视为直接集合预测问题的新方法。该方法简化了检测流程,有效地消除了许多手工设计的组件,如非极大值抑制或先验框的生成。这个名为DEtection TRansformer或DETR的新框架的主要组成部分是一种基于集合的全局损失,通过二部匹配强制进行一对一预测,并且采用了transformer编码器-解码器架构。给定一组固定的学习目标查询,DETR通过推理对象之间的关系和全局图像上下文直接并行输出最终的预测集。这个新模型在概念上简单,不需要专门的库,不像许多其他现代检测器。DETR在具有挑战性的COCO目标检测数据集上展示了与经过充分优化的Faster R-CNN基线相当的准确性和运行时性能。此外,DETR可以轻松推广为以统一方式生成全景分割。
在这里插入图片描述

DETR的主要特点是二部匹配损失和transformer与(非自回归)并行解码的结合

文章目录

  • End-to-End Object Detection with Transformers
    • 一、摘要
    • 二、创新点
    • 三、原理
      • 1、Object detection set prediction loss
      • 2、DETR architecture
    • 四、实验
      • 4.1 Comparison with Faster R-CNN
      • 4.2 Ablations
      • 4.3 Analysis
      • 4.4 DETR for panoptic segmentation
    • 五、总结
    • 六、附录(仅介绍Loss函数部分)

二、创新点

  • 将目标检测视为直接的集合预测问题,简化了训练流程。采用基于transformer的编码器-解码器架构[47],这是一种用于序列预测的流行架构。

  • 一次性预测所有对象,并通过一种集合损失函数进行端到端训练,该函数在预测对象和地面真实对象之间执行二部匹配

  • 实验表明,该模型达到了可比较的性能。更确切地说,对比Faster RCNN,DETR在大物体上表现出显著更好的性能。

三、原理

  在检测中,直接进行集合预测需要两个关键要素:(1) 一种集合预测损失,强制预测框与实际框之间的一对一匹配;(2) 一种能够在单次传递中预测一组对象并建模它们关系的架构。

1、Object detection set prediction loss

  DETR通过解码器的单次传递推断出一组固定大小的 N N N个预测,其中 N N N被设置为明显大于图像中典型对象数量的值。训练的主要困难之一是将预测对象(类别、位置、大小)与地面真实值进行评分。损失函数在预测对象和地面真实对象之间产生最优的二部匹配,然后优化特定对象(边界框)的损失。

  设 y y y为地面真实对象集合, y ^ = y i ^ i = 1 N \hat{y} = {\hat{y_{i}}}^{N}_{i=1} y^=yi^i=1N N N N个预测的集合。假设 N N N大于图像中对象的数量,将 y y y视为一个大小为 N N N的集合,用 ϕ \phi ϕ(无对象)进行填充。为了在这两个集合之间找到一个二部匹配,寻找具有最低成本的N个元素的排列 σ ∈ S N σ \in S_{N} σSN

σ ^ = a r g m i n σ ∈ S N ∑ i N L m a t c h ( y i , y σ ( i ) ^ ) , ( 1 ) \hat{σ} = argmin_{σ \in S_{N}} \sum^{N}_{i} L_{match}(y_{i}, \hat{y_{σ(i)}}), \ (1) σ^=argminσSNiNLmatch(yi,yσ(i)^), (1)

其中 L m a t c h ( y i , y ^ σ ( i ) ) L_{match}(y_{i}, \hat{y}_{σ(i)}) Lmatch(yi,y^σ(i))是地面真实标签 y i y_{i} yi和索引为 σ ( i ) σ(i) σ(i)的预测之间的一对一匹配损失。这种最佳分配是通过匈牙利算法高效计算得出的。

匹配损失考虑了类别预测和预测框与地面真实框的相似性。地面真实集合的每个元素 i i i可以看作 y i = ( c i , b i ) y_{i} = (c_{i},b_{i}) yi=(ci,bi),其中 c i c_{i} ci是目标类别标签(可能为 ∅ ∅ ), b i ∈ [ 0 , 1 ] 4 b_{i} \in [0,1]^{4} bi[0,1]4是一个向量,定义了地面真实框的中心坐标以及相对于图像尺寸的高度和宽度。对于索引为 σ ( i ) σ(i) σ(i)的预测,定义类别 c i c_{i} ci的概率为 p ^ σ ( i ) ( c i ) \hat{p}_{σ(i)}(c_{i}) p^σ(i)(ci),预测框为 b ^ σ ( i ) \hat{b}_{σ(i)} b^σ(i)。根据这些符号,定义 L m a t c h ( y i , y ^ σ ( i ) ) L_{match}(y_{i}, \hat{y}_{σ(i)}) Lmatch(yi,y^σ(i)) − 1 c i ≠ ϕ p ^ σ ( i ) ( c i ) + 1 c i ≠ ϕ L b o x ( b i , b ^ σ ( i ) ) −1_{c_{i} \not = \phi}\hat{p}_{σ(i)}(c_{i})+1_{{c_{i} \not = \phi}}L_{box}(b_{i},\hat{b}_{σ(i)}) 1ci=ϕp^σ(i)(ci)+1ci=ϕLbox(bi,b^σ(i))

  这种匹配过程与现代检测器中用于将提议([37])或锚点([22])与地面真实对象匹配的启发式分配规则起着相同的作用。主要区别在于,需要为直接集合预测找到一对一匹配,而不允许重复

  第二步是计算损失函数,即在前一步中匹配的所有成对样本的匈牙利损失。类似于常见目标检测器的损失定义,即类别预测的负对数似然和稍后定义的框损失的线性组合

L H u n g a r i a n ( y , y ^ ) = ∑ i = 1 N [ − l o g p ^ σ ^ ( i ) ( c i ) + 1 c 1 ≠ ϕ L b o x ( b i , b ^ σ ^ ( i ) ) ] , ( 2 ) L_{Hungarian}(y, \hat{y}) = \sum^{N}_{i=1}[−log \hat{p}_{\hat{σ}(i)}(c_{i}) + 1_{c_{1} \not=\phi }L_{box}(b_{i}, \hat{b}_{\hat{σ}(i)})], \ (2) LHungarian(y,y^)=i=1N[logp^σ^(i)(ci)+1c1=ϕLbox(bi,b^σ^(i))], (2)

其中 σ ^ \hat{σ} σ^是在第一步计算得到的最优分配(1)。在实践中,当 c i = ϕ c_{i} = \phi ci=ϕ时,通过因子 10 10 10降低对数概率项的权重,以考虑类别不平衡。这类似于Faster R-CNN训练过程通过子采样平衡正负提议[37]。请注意,对象与 ϕ \phi ϕ之间的匹配成本不依赖于预测,这意味着在这种情况下损失是一个常数。在匹配损失中,使用概率 p ^ σ ^ ( i ) ( c i ) \hat{p}_{\hat{σ}(i)}(c_{i}) p^σ^(i)(ci)而不是对数概率。这使得类别预测项与 L b o x ( ⋅ , ⋅ ) L_{box}(\cdot, \cdot) Lbox(,)(下文描述)可比,观察到了更好的实证表现。

Bounding box loss. 匹配损失的第二部分和匈牙利损失是 L b o x ( ⋅ ) L_{box}(\cdot) Lbox(),用于评分边界框。与许多检测器不同,这些检测器将边界框预测为相对于一些初始猜测的 ∆ ∆ 。直接进行边界框预测,尽管这种方法简化了实现,但在损失的相对缩放方面存在问题。最常用的 ℓ 1 ℓ_{1} 1损失会使小框和大框具有不同的尺度,即使它们的相对误差相似。为了缓解这个问题,使用 ℓ 1 ℓ_{1} 1损失和广义IoU损失 [38] L i o u ( ⋅ , ⋅ ) L_{iou}(\cdot,\cdot) Liou(,)的线性组合,这是尺度不变的。总体上,边界框损失是 L b o x ( b i , b ^ σ ( i ) ) L_{box}(b_{i},\hat{b}_{σ(i)}) Lbox(bi,b^σ(i)),定义为 λ i o u L i o u ( b i , b ^ σ ( i ) ) + λ L 1 ∣ ∣ b i − b ^ σ ( i ) ∣ ∣ 1 \lambda_{iou}L_{iou}(b_{i},\hat{b}_{σ(i)}) + \lambda_{L1}||b_{i} − \hat{b}_{σ(i)}||_{1} λiouLiou(bi,b^σ(i))+λL1∣∣bib^σ(i)1,其中 λ i o u \lambda_{iou} λiou, λ L 1 ∈ R \lambda_{L1} \in R λL1R是超参数。这两个损失由批次内的对象数量进行归一化。

2、DETR architecture

  整体DETR架构非常简单,如图2所示。它包含三个主要组件,将在下面描述:一个CNN主干用于提取紧凑的特征表征一个编码器-解码器transformer,以及一个简单的前馈网络(FFN)用于最终的检测预测。与许多现代检测器不同,DETR可以在任何提供常见CNN主干和transformer架构实现的深度学习框架中实现,只需几百行代码。在PyTorch [32]中,DETR的推断代码可以用不到50行实现。
在这里插入图片描述

  DETR使用传统的CNN骨干网络来学习输入图像的2D表征。该模型对其进行扁平化处理,并在传入 transformer 编码器之前补充位置编码。然后,transformer 解码器以一小固定数量的学习位置嵌入(称之为对象查询)作为输入,并额外关注编码器的输出。将解码器的每个输出嵌入传递给一个共享的前馈网络(FFN),该网络预测检测(类别和边界框)或“无对象”类别。

Backbone. 从初始图像 KaTeX parse error: Undefined control sequence: \tuimes at position 18: …{img} \in R^{3 \̲t̲u̲i̲m̲e̲s̲ ̲H_{0} \times W_… (具有3个色彩通道),传统的CNN主干网络生成一个较低分辨率的激活图 f ∈ R C × H × W f \in R^{C \times H \times W} fRC×H×W。通常使用的典型值为 C = 2048 C = 2048 C=2048 H , W = H 0 32 , W 0 32 H,W = \frac{H_{0}}{32} , \frac{W_{0}}{32} H,W=32H0,32W0

Transformer encoder. 首先,一个 1 × 1 1 \times 1 1×1卷积将高级激活图 f f f的通道维度从 C C C减小到一个较小的维度 d d d,创建一个新的特征图 z 0 ∈ R d × H × W z_{0} \in R^{d \times H \times W} z0Rd×H×W。编码器期望一个序列作为输入,因此将 z 0 z_{0} z0的空间维度折叠成一个维度,得到一个$d \times HW$特征图。每个编码器层具有标准的架构,包括一个多头自注意力模块和一个前馈网络(FFN)。由于transformer模型是置换不变的,补充了固定的位置编码 [31,3],这些编码被添加到每个注意力层的输入中。详细的架构定义在补充材料中,该架构遵循了[47]中描述的架构。

Transformer decoder. 解码器遵循transformer的标准架构,使用多头自注意力和编码器-解码器注意力机制,将大小为 d d d N N N个嵌入进行转换。与原始transformer的不同之处在于,所提模型在每个解码器层同时解码 N N N个对象,而Vaswani等人[47]使用一个自回归模型逐个元素地预测输出序列。对于对这些概念不熟悉的读者,将其指引至补充材料。由于解码器也是排列不变的, N N N个输入嵌入必须不同以产生不同的结果。这些输入嵌入是学习到的位置编码,称之为对象查询,类似于编码器,将它们添加到每个注意力层的输入中。解码器将 N N N个对象查询转换为输出嵌入。然后,通过一个前馈网络(在下一小节中描述),它们被独立地解码为框坐标和类别标签,得到$N$个最终预测。通过对这些嵌入进行自注意力和编码器-解码器注意力,模型在全局上推理所有对象之间的成对关系,同时能够使用整个图像作为上下文。

Prediction feed-forward networks (FFNs). 最终的预测是通过具有ReLU激活函数和隐藏维度 d d d的一个 3 3 3层感知器计算得出的,以及一个线性投影层。第一个前馈神经网络预测了相对于输入图像的标准化中心坐标、高度和宽度的框,而线性层则使用softmax函数预测类别标签。由于预测了一个固定大小的 N N N个边界框,其中N通常远大于图像中感兴趣对象的实际数量,因此使用了额外的特殊类标签 ∅ ∅ 来表示在一个槽内未检测到对象。这个类在标准目标检测方法中扮演着类似于“背景”类的角色。

Auxiliary decoding losses. 在训练过程中发现,在解码器中使用辅助损失非常有帮助,特别是帮助模型输出每个类别的正确对象数量。在每个解码层之后添加预测FFN(前向神经网络)和匈牙利损失。所有预测FFN共享参数。还使用一个额外的共享层归一化,以规范化来自不同解码层的输入到预测FFN。

四、实验

Dataset. 在 COCO 2017 检测和全景分割数据集上进行实验[24,18],其中包含 118k 张训练图像和 5k 张验证图像。每个图像都标注有边界框和全景分割。每个图像平均有 7 个实例,在单个图像中最多可达到 63 个实例,训练集中的实例大小从小到大不等。如果未特别说明,将报告AP作为 bbox AP,即在多个阈值上的综合度量。与 Faster R-CNN 进行比较时,报告最后一个训练轮次的验证AP,对于消融实验,报告最后10 个轮次验证结果的中位数。

Technical details. 使用DETR [-DC5]符号定义了文中所提模型的一个具体实例,其中 d d d是transformer的维度。所有模型的其他超参数相同,并在补充材料中详细描述。使用AdamW [26]训练DETR,transformer的初始学习率为 1 0 − 4 10^{−4} 104,骨干网络的初始学习率为 1 0 − 5 10^{−5} 105,权重衰减为 1 0 − 4 10^{−4} 104。所有transformer权重使用Xavier初始化 [11],骨干网络是使用ImageNet预训练的ResNet模型[15],来自torchvision,并冻结批归一化层。使用两种不同的骨干网络报告结果:一个是ResNet-50,另一个是ResNet-101。相应的模型分别称为DETRDETR-R101。根据 [21],还通过在骨干网络的最后阶段添加扩张和从该阶段的第一个卷积移除一个步幅来增加特征分辨率。相应的模型分别称为DETR-DC5和DETR-DC5-R101(扩张的C5阶段)。这种修改使分辨率提高了两倍,从而改善了小物体的性能,但会导致编码器的自注意力成本增加16倍,从而导致整体计算成本增加2倍。这些模型和Faster R-CNN的FLOPs的全面比较见表1。
在这里插入图片描述
在这里插入图片描述

  使用尺度增强,调整输入图像的大小,使最短边至少为480像素,最长边至多为1333像素 [50]。为了通过编码器的自注意力学习全局关系,还在训练过程中应用随机裁剪增强,将性能提高了约1个AP。具体来说,训练图像以0.5的概率被裁剪为一个随机矩形补丁,然后再次调整大小为800-1333。transformer使用默认的0.1的dropout进行训练。在推断时,一些槽预测为空类为了优化AP,使用次高分数类别覆盖这些槽的预测,使用相应的置信度。这比过滤空槽提高了2个AP

  消融实验中训练了300轮,在200轮后学习率下降10倍,其中一轮是对所有训练图像的一次遍历。在128个V100 GPU上训练基线模型300轮大约需要24小时,每个GPU一个图像(因此总批量大小为128)。用于与Faster R-CNN比较的更长计划训练900轮,从第600轮开始,每50轮学习率下降2次。这个策略比短的300轮计划增加了3个AP。

4.1 Comparison with Faster R-CNN

  Transformer通常使用Adam或Adagrad优化器进行训练,训练时间较长,并且使用了dropout,这对DETR也是如此。然而,Faster R-CNN使用SGD进行训练,数据增强较少,作者不清楚是否成功应用了Adam或dropout。尽管存在这些差异,作者尝试加强Faster R-CNN基线。为了与DETR对齐,在框损失中添加了广义IoU [38],采用了相同的随机裁剪增强和长时间训练,这些方法已被证明可以改善结果[13]。结果见表1。在顶部部分,展示了Detectron2 Model Zoo [50]中使用 3 x 3x 3x训练的Faster R-CNN结果。在中间部分,展示了相同模型使用 9 x 9x 9x(109轮次)训练以及上述增强的结果(带有“+”),总体上增加了1-2 AP。表1的最后一部分展示了多个DETR模型的结果。为了在参数数量上进行比较,选择了一个模型,其中包含6个transformer和6个解码器层,宽度为256。与具有FPN的Faster R-CNN一样,该模型有4130万参数,其中2350万在ResNet-50中,1780万在transformer中。尽管Faster R-CNN和DETR都有可能通过更长时间的训练进一步改进,可以得出结论,DETR可以与具有相同参数数量的Faster R-CNN竞争,在COCO验证子集上达到42 AP。DETR实现这一点的方式是通过改进APL,但请注意该模型在APS方面仍然落后。Faster R-CNN和具有ResNet-101骨干的DETR也显示出可比的结果。

4.2 Ablations

  Transformer解码器中的注意力机制是模型不同检测特征表征之间关系的关键组件。消融分析探讨了所提架构和损失的其他组件如何影响最终性能。研究选择了基于ResNet-50的detr模型,具有6个编码器、6个解码器层和宽度256。该模型有41.3M参数,在短期和长期时间表上分别达到40.6和42.0的AP,帧率为28,与具有相同骨干的Faster R-CNN-FPN类似。

Number of encoder layers. 通过改变编码器层数的数量来评估全局图像级自注意力的重要性(表2)。没有编码器层,整体AP下降了3.9个点,大物体的下降更为显著,为6.0 AP。假设通过使用全局场景推理,编码器对于解开对象之间的关系是重要的。图2可视化了经过训练模型的最后一个编码器层的注意力图,聚焦于图像中的几个点。编码器似乎已经分开了实例,这可能简化了解码器对对象的提取和定位。
在这里插入图片描述
在这里插入图片描述

Number of decoder layers. 在每个解码层之后应用辅助损失,因此,预测FFNs被设计为通过每个解码器层的输出来预测对象。通过评估在解码的每个阶段将会预测的对象来分析每个解码层的重要性(图4)。每一层之后,AP和AP50都有所提升,使得第一层和最后一层之间的AP提升非常显著+8.2/9.5。由于其基于集合的损失,DETR模型在设计上不需要NMS。为了验证这一点,对每个解码器的输出运行了一个带有默认参数的标准NMS过程 [50]。NMS 对第一个解码器的预测性能有所提升。这可以解释为transformer 的单个解码层无法计算输出元素之间的任何交叉相关性,因此容易对同一对象进行多次预测。在第二层及其后续层中,自注意机制允许模型抑制重复预测。观察到随着深度的增加,NMS 带来的改进逐渐减少。在最后几层观察到AP略微下降,因为NMS错误地移除了真正的正面预测。类似于可视化编码器的注意力,在图2中可视化解码器的注意力,为每个预测的对象着色不同颜色的注意力图。观察到解码器的注意力相当局部化,主要关注对象的极端部分,如头部或腿部。假设在编码器通过全局注意力分离实例后,解码器只需要关注极端部分以提取类别和对象边界
在这里插入图片描述
在这里插入图片描述

Importance of FFN. transformer内部的FFN可以被视为 1 × 1 1 \times 1 1×1卷积层,使编码器类似于注意力增强卷积网络[3]。实验尝试完全移除它,只保留transformer层中的注意力。通过将网络参数数量从41.3M减少到28.7M,只在transformer中保留10.8M,性能下降了2.3 AP,因此得出结论,FFN对于取得良好结果至关重要

Importance of positional encodings. 所提模型中有两种位置编码:空间位置编码和输出位置编码(对象查询)。尝试了各种固定和学习编码的组合,结果可以在表3中找到。输出位置编码是必需的,不能被移除,因此尝试在解码器输入时要么传递它们一次,要么在每个解码器注意力层中添加到查询中。在第一个实验中,完全移除了空间位置编码,并在输入时传递输出位置编码,有趣的是,模型仍然达到了超过32的AP,比基准线损失了 7.8 的AP。然后,在输入时传递了固定的正弦空间位置编码和输出编码,就像原始的transformer [47] 中一样,发现与直接在注意力中传递位置编码相比,这导致了 1.4 的AP下降。传递给注意力的学习空间编码产生了类似的结果。还发现在编码器中不传递任何空间编码只会导致轻微的1.3 AP下降。当将编码传递给注意力时,它们在所有层之间共享,并且输出编码(对象查询)始终是学习的。
在这里插入图片描述

  考虑到这些消融实验,得出结论,transformer 组件:编码器中的全局自注意力,FFN,多个解码器层以及位置编码,都显著地对最终目标检测性能做出贡献

Loss ablations. 为了评估匹配成本和损失的不同组件的重要性,训练了几个模型并将它们打开和关闭。损失有三个组成部分:分类损失, ℓ 1 ℓ_{1} 1 边界框距离损失和 GIoU [38] 损失。分类损失对训练至关重要,无法关闭,因此训练了一个没有边界框距离损失的模型,以及一个没有 GIoU 损失的模型,并与基线进行比较,基线使用了所有三种损失进行训练。结果见表2。

  GIoU成本在小物体上表现出更好的结果(+2.9 AP差异),而边界框成本改善了大物体的结果(+5.5 AP差异),高于基准线。

  GIoU损失本身占据了大部分模型性能,仅与基准线相比损失了0.7 AP。仅使用 ℓ 1 ℓ_{1} 1而不使用GIoU显示出较差的结果。

  仅研究了不同成本(损失)的简单消融(每次使用相同的加权),但其他组合方式可能会获得不同的结果。

4.3 Analysis

在这里插入图片描述

  图3展示了 COCO 2017 验证集中所有图像中不同槽位预测的框。DETR为每个查询槽位学习了不同的专业化。观察到每个槽位都有几种操作模式,专注于不同的区域和框大小。特别地,所有槽位都有用于预测整个图像的框的模式(在图中以红色点对齐在中间可见)。假设这与COCO中对象的分布有关。

Generalization to unseen numbers of instances. 在COCO数据集中,一些类别的实例分布不均匀,同一类别的实例可能在同一张图像中出现多次。例如,在训练集中没有一张图像中出现超过13只长颈鹿。创建了一幅合成图像,以验证DETR的泛化能力(见图5)。所提模型能够在这张明显不符合分布的图像中找到全部24只长颈鹿。这个实验证实了每个对象查询中没有强烈的类别特化。

4.4 DETR for panoptic segmentation

  最近,全景分割[19] 引起了计算机视觉界的广泛关注。类似于将Faster R-CNN [37] 扩展为 Mask R-CNN [14],DETR可以通过在解码器输出之上添加一个掩码头来自然扩展。本节演示了这样一个头部可以用来生成全景分割 [19],通过以统一的方式处理物和物体类别。在COCO数据集的全景注释上进行实验,该数据集除了有 80 个物体类别外,还有 53个物体类别。

  训练DETR在 COCO 上预测围绕“物”和“事物”类别的框,使用相同的方法。预测框对于训练是必要的,因为匈牙利匹配是使用框之间的距离计算的。还添加了一个掩码头,它为每个预测框预测一个二进制掩码,参见图4。它以每个对象的transformer 解码器输出作为输入,并计算该嵌入在编码器输出上的多头(具有 M M M 个头)注意力分数,为每个对象生成 M M M 个小分辨率的注意力热图。为了进行最终预测并增加分辨率,使用类似 FPN 的架构。在补充中更详细地描述了这个架构。掩码的最终分辨率为 4 4 4 的步幅,每个掩码都独立地使用 DICE/F-1 损失[28] 和 Focal 损失[23] 进行监督。

  掩码头可以同时训练,也可以分两步进行,其中首先仅训练DETR的框,然后冻结所有权重,仅训练掩码头 25 25 25 个轮次。实验上,这两种方法给出了类似的结果,报告使用后一种方法的结果,因为它导致更短的总时间训练。

  为预测最终的全景分割,简单地在每个像素上使用掩码分数的argmax,并将相应的类别分配给生成的掩码。这个过程保证了最终的掩码没有重叠,因此,DETR不需要一个常用的启发式[19] 来对齐不同的掩码。
在这里插入图片描述在这里插入图片描述

Training details. 按照边界框检测的配方训练DETR、DETR-DC5和DETR-R101模型,以预测COCO数据集中物体和物品类别周围的框。在推断过程中,将同一物体类别的不同掩模预测合并为一个。新的掩模头经过25轮次训练(详见补充资料)。与[19]类似,移除面积小于256像素(物体)或4像素(物品)的小物体(或物品)预测,因为它们可能是虚假分割,仅保留置信度高于75%的检测结果

Main results. 定性结果如图4所示。在表4中,将统一全景分割方法与几种将物体和背景区分对待的已建立方法进行了比较。实验报告了**全景质量(PQ)以及对物体(PQth)和背景(PQst)**的详细情况。还报告了掩膜AP(在物体类上计算),在进行任何全景后处理之前(在所提方法的情况下,是在进行像素级argmax之前)。展示了DETR在COCO-val 2017上优于已发表的结果,以及我们强大的PanopticFPN基线(使用与DETR相同的数据增强进行训练,以进行公平比较)。结果详细说明DETR在背景类上特别占优势,假设编码器注意力所允许的全局推理是这一结果的关键因素。对于物体类,尽管在掩膜AP计算中与基线相比存在高达8mAP的严重赤字,DETR获得了具有竞争力的PQth。实验还在COCO数据集的测试集上评估了所提方法,并获得了46 PQ。
在这里插入图片描述
在这里插入图片描述

五、总结

  文中提出了 DETR,这是一种基于 transformer 和二分匹配损失的目标检测系统的新设计,用于直接集合预测。该方法在具有挑战性的COCO 数据集上取得了与经过优化的Faster R-CNN 基线相当的结果。DETR实现简单,并具有灵活的架构,易于扩展到全景分割,并取得了具有竞争力的结果。此外,它在大型目标上的性能明显优于 Faster R-CNN,可能归功于自注意力执行的全局信息处理。

六、附录(仅介绍Loss函数部分)

  详细介绍了文中方法中使用的损失函数。所有损失函数都通过批次中的对象数量进行归一化。在分布式训练中需要格外小心:由于每个GPU接收一个子批次,仅通过本地批次中的对象数量进行归一化是不够的,因为一般来说,子批次在GPU之间不是平衡的。相反,重要的是通过所有子批次中的对象总数进行归一化

Box loss. 类似于[41,36],在损失函数中使用了交并比的软版本,同时还使用了 L 1 L_{1} L1损失函数对KaTeX parse error: Expected group after '_' at position 5: \hat_̲{b}进行优化:

L b o x ( b s i g m a ( i ) , b i ^ ) = λ i o u L i o u ( b s i g m a ( i ) , b i ^ ) + λ L 1 ∣ ∣ b s i g m a ( i ) − b i ^ ∣ ∣ 1 , ( 9 ) L_{box}(b_{sigma(i)},\hat{b_{i}}) = \lambda_{iou}L_{iou}(b_{sigma(i)},\hat{b_{i}}) + \lambda L_{1}||b_{sigma(i)} − \hat{b_{i}}||_{1} , \ (9) Lbox(bsigma(i),bi^)=λiouLiou(bsigma(i),bi^)+λL1∣∣bsigma(i)bi^1, (9)

其中, λ i o u , λ L 1 ∈ R \lambda_{iou},\lambda_{L_{1}} \in R λiou,λL1R 是超参数, L i o u ( ⋅ ) L_{iou}(\cdot) Liou() 是广义IoU [38]:
L i o u ( b s i g m a ( i ) , b ^ i ) = 1 − ( ∣ b s i g m a ( i ) ∩ b i ^ ∣ ∣ b s i g m a ( i ) ∪ b i ^ ∣ − ∣ B ( b s i g m a ( i ) , b ^ i ) b s i g m a ( i ) ∪ b i ^ ∣ B ( b s i g m a ( i ) , b ^ i ) ∣ ) . ( 10 ) L_{iou} (b_{sigma(i)}, \hat{b}_{i}) = 1 −(\frac{| b_{sigma(i)} \cap \hat{b_{i}}|}{| b_{sigma(i)} \cup \hat{b_{i}}|} − \frac{|B(b_{sigma(i)},\hat{b}_{i}) \ b_{sigma(i)} \cup \hat{b_{i}}}{| B(b_{sigma(i)},\hat{b}_{i})|}). \ (10) Liou(bsigma(i),b^i)=1(bsigma(i)bi^bsigma(i)bi^B(bsigma(i),b^i)B(bsigma(i),b^i) bsigma(i)bi^). (10)

∣ ⋅ ∣ |\cdot| 表示“面积”,box坐标的并集和交集被用作box本身的简写。并集或交集的面积由 b s i g m a ( i ) b_{sigma(i)} bsigma(i) b i ^ \hat{b_{i}} bi^的线性函数的 m i n / m a x min /max min/max计算得出,这使得损失对随机梯度具有足够的良好行为。 B ( b s i g m a ( i ) , b i ^ ) B(b_{sigma(i)},\hat{b_{i}}) B(bsigma(i),bi^)表示包含 b s i g m a ( i ) b_{sigma(i)} bsigma(i), b i ^ \hat{b_{i}} bi^的最大box(涉及 B B B的面积也是基于box坐标的线性函数的 m i n / m a x min /max min/max计算得出)

DICE/F-1 loss [28] DICE系数与交并比密切相关。如果用 m ^ \hat{m} m^表示模型的原始掩模logits预测, m m m表示二进制目标掩模,则损失定义为:
L D I C E ( m , m ^ ) = 1 − 2 m s i g m a ( m ^ ) + 1 s i g m a ( m ^ ) + m + 1 . ( 11 ) L_{DICE}(m, \hat{m}) = 1 − \frac{2m \ sigma(\hat{m}) + 1}{sigma(\hat{m}) + m + 1}. \ (11) LDICE(m,m^)=1sigma(m^)+m+12m sigma(m^)+1. (11)

  其中 s i g m a sigma sigma是 sigmoid 函数。这个损失值是由物体的数量进行归一化的。

相关文章:

DETR End-to-End Object Detection with Transformers

End-to-End Object Detection with Transformers 论文链接:http://arxiv.org/abs/2005.12872 代码地址:https://github.com/facebookresearch/detr 一、摘要 提出了一种将目标检测视为直接集合预测问题的新方法。该方法简化了检测流程,有效…...

【后端面试题】【中间件】【NoSQL】ElasticSearch 节点角色、写入数据过程、Translog和索引与分片

中间件的常考方向: 中间件如何做到高可用和高性能的? 你在实践中怎么做的高可用和高性能的? Elasticsearch节点角色 Elasticsearch的节点可以分为很多种角色,并且一个节点可以扮演多种角色,下面列举几种主要的&…...

【TB作品】玩具电子琴,ATMEGA128单片机,Proteus仿真

题目 7 :玩具电子琴 基于单片机设计一能够发出中音八个音阶的音乐信号的电子琴,能够实现弹奏和音符显示功 能。 具有 8 个音阶按键,每按下一个按键时,所对应的 LED 点亮,音符进行显示。 具体要求如下: &…...

1974Springboot医院远程诊断管理系统idea开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 springboot医院远程诊断管理系统是一套完善的信息系统,结合springboot框架和bootstrap完成本系统,对理解JSP java编程开发语言有帮助系统采用springboot框架(MVC模式开发),系统具有完整的源代码和数据库…...

SQL游标的应用场景及使用方法

SQL游标的应用场景及使用方法 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将深入探讨SQL中游标的应用场景及使用方法。游标在SQL中是一种重要的数据…...

LLama-Factory使用教程

本文是github项目llama-factory的使用教程 注意,最新的llama-factory的github中训练模型中,涉及到本文中的操作全部使用了.yaml配置。 新的.yaml的方式很简洁但不太直观,本质上是一样的。新的readme中的.yaml文件等于下文中的bash指令 PS: …...

Java面试题:讨论在Java Web应用中实现安全的认证和授权机制,如使用Spring Security

在Java Web应用中,实现安全的认证和授权是至关重要的,Spring Security是一个强大的框架,可以简化这项工作。以下是详细讨论如何在Java Web应用中使用Spring Security实现安全的认证和授权机制。 Spring Security简介 Spring Security是一个…...

如何在Vue3项目中使用Pinia进行状态管理

**第一步:安装Pinia依赖** 要在Vue3项目中使用Pinia进行状态管理,首先需要安装Pinia依赖。可以使用以下npm命令进行安装: bash npm install pinia 或者如果你使用的是yarn,可以使用以下命令: bash yarn add pinia *…...

【初阶数据结构】深入解析队列:探索底层逻辑

🔥引言 本篇将深入解析队列:探索底层逻辑,理解底层是如何实现并了解该接口实现的优缺点,以便于我们在编写程序灵活地使用该数据结构。 🌈个人主页:是店小二呀 🌈C语言笔记专栏:C语言笔记 &#…...

Go 语言环境搭建

本篇文章为Go语言环境搭建及下载编译器后配置Git终端方法。 目录 安装GO语言SDK Window环境安装 下载 安装测试 安装编辑器 下载编译器 设置git终端方法 总结 安装GO语言SDK Window环境安装 网站 Go下载 - Go语言中文网 - Golang中文社区 还有 All releases - The…...

javascript v8编译器的使用记录

我的机器是MacOS Mx系列。 一、v8源码下载构建 1.1 下载并更新depot_tools git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git export PATH/path/to/depot_tools:$PATH 失败的话可能是网络问题,可以试一下是否能ping通,连…...

C语言--vs使用调试技巧

1.什么是bug? 1.产品说明书中规定要做的事情,而软件没有实现。 2.产品说明书中规定不要做的事情,而软件确实现了。 3.产品说明书中没有提到过的事情,而软件确实现了。 4.产品说明书中没有提到但是必须要做的事情,软件确没有实…...

Spring Boot中的国际化配置

Spring Boot中的国际化配置 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将探讨如何在Spring Boot应用中实现国际化配置,使得应用能够轻松…...

WPF的IValueConverter用于校验和格式化TextBox的数字输入

在数据绑定(Data Binding)的上下文中,我们经常使用继承 IValueConverter 接口的类,用于在源值和目标值之间进行转换。该接口定义了两个方法:Convert 和 ConvertBack,这两个方法分别用于从源值到目标值的转换…...

SQL Server的守护神:Always On 高可用性详解

🛡️ SQL Server的守护神:Always On 高可用性详解 在企业级应用中,数据的可用性和业务连续性至关重要。SQL Server的Always On功能提供了一个高可用性解决方案,确保数据库服务的持续运行和快速故障恢复。本文将详细解释SQL Serve…...

Eureka入门

Eureka是一种服务发现工具,广泛应用于微服务架构中。它主要由Netflix开源,帮助服务在分布式系统中自动注册和发现。以下是Eureka的基本入门指南。 前提条件 在开始之前,确保你已经安装了以下软件: JDK 8或更高版本Maven或Gradl…...

高阶面试-netty部分

介绍下netty Netty 是一个基于 Java 的异步事件驱动的网络应用框架,提供了用于快速开发高性能、高可扩展性的协议服务器和客户端的工具 BIO、NIO、AIO 的区别是什么 BIO blocking io,同步阻塞IO,比较简单,为每个请求分配一个线…...

在 C++的跨平台开发中,如何处理不同操作系统和编译器之间的细微差异,以确保程序能够稳定且高效地运行?

在 C 的跨平台开发中,处理不同操作系统和编译器之间的细微差异是非常重要的。以下是一些处理差异的技巧: 使用条件编译:使用预处理指令,根据不同的操作系统和编译器来编写不同的代码。 #if defined(_WIN32)// Windows 特定代码 …...

独孤思维:脑子不好使,副业稳赚钱

01 副业,贴身级模仿。 比如独孤最近在测试dy虚拟资料项目。 跑了三个多月。 赚了点下小钱。 从最开始的自动生成视频,到后来的抽帧优化,再到先做的矩阵玩法。 一直都在迭代。 是独孤脑子好使吗? 恰恰相反。 正式因为独孤…...

【数据结构】(C语言):二叉搜索树

二叉搜索树: 树不是线性的,是层级结构。基本单位是节点,每个节点最多2个子节点。有序。每个节点,其左子节点都比它小,其右子节点都比它大。每个子树都是一个二叉搜索树。每个节点及其所有子节点形成子树。可以是空树。…...

泛微开发修炼之旅--23基于ecology自研的数据库分页组件(分页组件支持mysql、sqlserver、oracle、达梦等)

一、使用场景 ecology二开开发过程中,经常要使用到分页查询,随着信创项目的到来,各种国产数据库的出现,对于数据库分页查询兼容何种数据库,就迫在眉睫。 于是,我自己基于ecology开发了一个分页插件&#…...

《昇思25天学习打卡营第4天 | mindspore Transforms 数据变换常见用法》

1. 背景: 使用 mindspore 学习神经网络,打卡第四天; 2. 训练的内容: 使用 mindspore 的常见的数据变换 Transforms 的使用方法; 3. 常见的用法小节: 支持一系列常用的 Transforms 的操作 3.1 Vision …...

【Python时序预测系列】基于LSTM实现多输入多输出单步预测(案例+源码)

这是我的第312篇原创文章。 一、引言 单站点多变量输入多变量输出单步预测问题----基于LSTM实现。 多输入就是输入多个特征变量 多输出就是同时预测出多个标签的结果 单步就是利用过去N天预测未来1天的结果 二、实现过程 2.1 读取数据集 dfpd.read_csv("data.csv&qu…...

git客户端工具之Github,适用于windows和mac

对于我本人,我已经习惯了使用Github Desktop,不同的公司使用的代码管理平台不一样,就好奇Github Desktop是不是也适用于其他平台,结果是可以的。 一、克隆代码 File --> Clone repository… 选择第三种URL方式,输入url &…...

ai除安卓手机版APP软件一键操作自动渲染去擦消稀缺资源下载

安卓手机版:点击下载 苹果手机版:点击下载 电脑版(支持Mac和Windows):点击下载 一款全新的AI除安卓手机版APP,一键操作,轻松实现自动渲染和去擦消效果,稀缺资源下载 1、一键操作&…...

Unity获取剪切板内容粘贴板图片文件文字

最近做了一个发送消息的unity项目,需要访问剪切板里面的图片文字文件等,翻遍了网上的东西,看了不是需要导入System.Windows.Forms(关键导入了unity还不好用,只能用在纯c#项目中),所以我看了下py…...

利用谷歌云serverless代码托管服务Cloud Functions构建Gemini Pro API

谷歌在2024年4月发布了全新一代的多模态模型Gemini 1.5 Pro,Gemini 1.5 Pro不仅能够生成创意文本和代码,还能理解、总结上传的图片、视频和音频内容,并且支持高达100万tokens的上下文。在多个基准测试中表现优异,性能超越了ChatGP…...

极狐GitLab 17.0 重磅发布,100+ DevSecOps功能更新来啦~【一】

GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab :https://gitlab.cn/install?channelcontent&utm_sourcecsdn 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署…...

python实现符文加、解密

在历史悠久的加密技术中,恺撒密码以其简单却有效的原理闻名。通过固定的字母位移,明文可以被转换成密文,而解密则是逆向操作。这种技术不仅适用于英文字母,还可以扩展到其他语言的字符体系,如日语的平假名或汉语的拼音…...

【解释】i.MX6ULL_IO_电气属性说明

【解释】i.MX6ULL_IO_电气属性说明 文章目录 1 Hyst1.1 迟滞(Hysteresis)是什么?1.2 GPIO的Hyst. Enable Field 参数1.3 应用场景 2 Pull / Keep Select Field2.1 PUE_0_Keeper — Keeper2.2 PUE_1_Pull — Pull2.3 选择Keeper还是Pull 3 Dr…...

02-《石莲》

石 莲 石莲(学名:Sinocrassula indica A.Berger),别名因地卡,为二年生草本植物,全株无毛,具须根。花茎高15-60厘米,直立,常被微乳头状突起。茎生叶互生,宽倒披…...

MySQL之聚簇索引和非聚簇索引

1、什么是聚簇索引和非聚簇索引? 聚簇索引,通常也叫聚集索引。 非聚簇索引,指的是二级索引。 下面看一下它们的含义: 1.1、聚集索引选取规则 如果存在主键,主键索引就是聚集索引。如果不存在主键,将使…...

Web后端开发之前后端交互

http协议 http ● 超文本传输协议 (HyperText Transfer Protocol)服务器传输超文本到本地浏览器的传送协议 是互联网上应用最为流行的一种网络协议,用于定义客户端浏览器和服务器之间交换数据的过程。 HTTP是一个基于TCP/IP通信协议来传递数据. HTT…...

520. 检测大写字母 Easy

我们定义,在以下情况时,单词的大写用法是正确的: 全部字母都是大写,比如 "USA" 。 单词中所有字母都不是大写,比如 "leetcode" 。 如果单词不只含有一个字母,只有首字母大写&#xff0…...

vue的跳转传参

1、接收参数使用route,route包含路由信息,接收参数有两种方式,params和query path跳转只能使用query传参,name跳转都可以 params:获取来自动态路由的参数 query:获取来自search部分的参数 写法 path跳,query传 传参数 import { useRout…...

docker配置镜像源

1)打开 docker配置文件 sudo nano /etc/docker/daemon.json 2)添加 国内镜像源 {"registry-mirrors": ["https://akchsmlh.mirror.aliyuncs.com","https://registry.docker-cn.com","https://docker.mirrors.ustc…...

MySQL高级-SQL优化-insert优化-批量插入-手动提交事务-主键顺序插入

文章目录 1、批量插入1.1、大批量插入数据1.2、启动Linux中的mysql服务1.3、客户端连接到mysql数据库,加上参数 --local-infile1.4、查询当前会话中 local_infile 系统变量的值。1.5、开启从本地文件加载数据到服务器的功能1.6、创建表 tb_user 结构1.7、上传文件到…...

认识100种电路之振荡电路

在电子电路领域,振荡是一项至关重要的功能。那么,为什么电路中需要振荡?其背后的原理是什么?让我们一同深入探究。 【为什么需要振荡电路】 简单来说,振荡电路的存在是为了产生周期性的信号。在众多电子设备中&#…...

SSH 无密登录配置流程

一、免密登录原理 非对称加密: 由于对称加密的存在弊端,就产生了非对称加密,非对称加密中有两个密钥:公钥和私钥。公钥由私钥产生,但却无法推算出私钥;公钥加密后的密文,只能通过对应的私钥来解…...

Python自动化运维 系统基础信息模块

1.系统信息的收集 系统信息的收集,对于服务质量的把控,服务的监控等来说是非常重要的组成部分,甚至是核心的基础支撑部分。我们可以通过大量的核心指标数据,结合对应的检测体系,快速的发现异常现象的苗头,进…...

如何安装和配置Monit

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 关于 Monit Monit 是一个有用的程序,可以自动监控和管理服务器程序,以确保它们不仅保持在线,而且文…...

【redis】redis分片集群基础知识

1、基本概念 1.1定义 分片:数据按照某种规则(比如哈希)被分割成多个片段(或分片),每个片段被称为一个槽(slot)。槽是Redis分片集群中数据的基本单元。节点:Redis分片集…...

Python 面试【★★★★】

欢迎莅临我的博客 💝💝💝,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…...

Knife4j 2.2.X 版本 swagger彻底禁用

官方文档配置权限:https://doc.xiaominfo.com/v2/documentation/accessControl.html#_3-5-1-%E7%94%9F%E4%BA%A7%E7%8E%AF%E5%A2%83%E5%B1%8F%E8%94%BD%E8%B5%84%E6%BA%90 通常有时候我们碰到的问题如下: 在开发Knife4j功能时,同很多开发者经常讨论的问…...

linux下mysql的定时备份

备份是容灾的基础,是指为了防止系统出现操作或系统故障导致数据丢失,而将全部或部分数据集合从应用主机的硬盘或阵列复制到其他的存储介质的过程为什么备份 硬件故障软件故障误操作病毒入侵保留历史记录灾难性事件 存储介质 光盘磁带硬盘磁盘阵列DAS:直接…...

【13】地址-比特币区块链的地址

1. 比特币区块链的地址 这就是一个真实的比特币地址:1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa。这是史上第一个比特币地址,据说属于中本聪。 比特币地址是完全公开的,如果你想要给某个人发送币,只需要知道他的地址就可以了。实际上,所谓的地址,只不过是将公钥表示成人类可读…...

【数据结构】数据结构前置知识

这里写目录标题 基本概念与术语数据数据元素数据项数据对象数据结构 逻辑结构和物理结构物理结构顺序存储结构链式存储结构 逻辑结构集合结构线性结构树形结构图形结构 算法时间复杂度和空间复杂度大O的渐进表示法时间复杂度常数阶线性阶对数阶平方阶常见时间复杂度 空间复杂度…...

企业数据挖掘平台产品特色及合作案例介绍

泰迪企业数据挖掘平台是一款通用的、企业级、智能化的数据分析模型构建与数据应用场景设计工具,能够一体化地完成数据集成、模型构建、模型发布,为数据分析、探索、服务流程提供支撑,提供完整的数据探索、多数据源接入、特征处理、模型搭建、…...

C++初学者指南-3.自定义类型(第一部分)-基本自定义类型/类

C初学者指南-3.自定义类型(第一部分)-基本自定义类型/类 文章目录 C初学者指南-3.自定义类型(第一部分)-基本自定义类型/类1.类型种类(简化)2.为什么选择自定义类型?单向计数器提升序列 3.限制成员访问成员函数公共(public) vs. 私有(private…...

iOS之如何创建.framework静态库

番外:想要查看如何创建.a静态库可前往看我iOS之如何创建.a静态库-CSDN博客这篇文章。 一、创建framework项目 创建framework工程要选择iOS --> Cocoa Touch Framework输入项目名称PrintFramework也是编译生成的framework的名称。framework的名称也可以以后在项目…...

开源发布Whistle: 基于弱音素监督推进数据高效多语言和跨语言语音识别

论文地址:https://arxiv.org/abs/2406.02166 开源代码及模型: https://github.com/thu-spmi/CAT/blob/master/egs/cv-lang10/readme.md 摘 要 Whistle和Whisper一样,均采用弱监督方式训练ASR基座模型。不同于Whisper采用基于子词&#xff0…...

【计算机网络】应用层(作业)

1、万维网上的每个页面都有一个唯一的地址,这些地址统称为(A)。 A. 统一资源定位符URLB. IP地址C. 域名地址D. WWW地址 解析: 2、下列TCP/IP应用层协议中,可以使用传输层无连接服务的是(D)。…...

Kafka~消息发送过程与ISR机制了解

消息发送过程 使用Kafka发送消息时,一般有两种方式分别是: 同步发送异步发送 同步发送时,可以在发送消息后,通过get方法等待消息结果,这种情况能够准确的拿到消息最终的发送结果,要么是成功、要么是失败…...

java之静态属性方法

在java中有一个static的关键字,它用来修饰类的成员。如果用static修饰属性,该属性被称为静态属性 静态属性的访问格式如下 类名.属性名 如果没有修饰静态属性示例代码如下 class Xuesheng1{String name;int age;String school"A大学";publ…...

Python商务数据分析知识专栏(五)——Python数据分析的应用③使用Pandas进行数据预处理

Python商务数据分析知识专栏(五)——Python数据分析的应用③使用Pandas进行数据预处理 使用Pandas进行数据预处理1.合并数据2.清洗数据3.标准化数据4.转换数据 使用Pandas进行数据预处理 1.合并数据 2.清洗数据 3.标准化数据 4.转换数据...

分解+降维+预测!多重创新!直接写核心!EMD-KPCA-Transformer多变量时间序列光伏功率预测

分解降维预测!多重创新!直接写核心!EMD-KPCA-Transformer多变量时间序列光伏功率预测 目录 分解降维预测!多重创新!直接写核心!EMD-KPCA-Transformer多变量时间序列光伏功率预测效果一览基本介绍程序设计参…...

SQLServer2022新特性Window子句

SQLServer2022新特性Window子句 参考官方文档 https://learn.microsoft.com/zh-cn/sql/t-sql/queries/select-window-transact-sql?viewsql-server-ver16 1、本文内容 语法参数一般备注示例 1.1、新特性适用于: SQL Server 2022 (16.x)Azure SQL 数据库Azure …...

SOL 交易机器人基本知识

有没有可以盈利的机器人? 是的,各行各业都有许多盈利机器人。在金融领域,交易机器人被广泛用于自动化投资策略并根据预定义的算法执行交易。这些机器人可以分析市场趋势并做出快速决策,从而可能带来可观的回报。同样,在…...

Pi 母公司将开发情感 AI 商业机器人;Meta 科学家:Sora 不是视频生成唯一方向丨RTE 开发者日报 Vol.214

开发者朋友们大家好: 这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「…...

DiffBIR论文阅读笔记

这篇是董超老师通讯作者的一篇盲图像修复的论文,目前好像没看到发表在哪个会议期刊,应该是还在投,这个是arxiv版本,代码倒是开源了。本文所指的BIR并不是一个single模型对任何未知图像degradation都能处理,而是用同一个…...

【Unity AR开发插件】五、运行示例程序

专栏 本专栏将介绍如何使用这个支持热更的AR开发插件,快速地开发AR应用。 链接: Unity开发AR系列 热更数据制作:制作热更数据-AR图片识别场景 插件简介 通过热更技术实现动态地加载AR场景,简化了AR开发流程,让用户可…...

接口测试及接口测试常用的工具详解

🍅 视频学习:文末有免费的配套视频可观看 首先,什么是接口呢? 接口一般来说有两种,一种是程序内部的接口,一种是系统对外的接口。 系统对外的接口:比如你要从别的网站或服务器上获取资源或信息…...