Delving into Localization Errors for Monocular 3D Object Detection 论文学习

news2024/11/15 20:03:30

论文地址:Delving into Localization Errors for Monocular 3D Object Detection
Github地址:Delving into Localization Errors for Monocular 3D Object Detection

1. 解决了什么问题?

从单目图像准确地估计 3D 框是自动驾驶领域的重要功能,但很具有挑战性。本文以 CenterNet 为基线模型,逐个地将预测项替换为 ground-truths。为了更好地分析误差的规律,作者以深度范围的方式做评测,在下图展示了各实验的结果。下图是在 KITTI 验证集上做的评测,用 Car 类别的 AP 40 \text{AP}_{40} AP40作为指标,采样区间是 10 m 10m 10m。比如,横轴上的 20 20 20表示样本的整体表现在 15 m 15m 15m 25 m 25m 25m区间。作者有三点发现:
在这里插入图片描述

  • 使用 ground-truth location 时,表现的提升最明显,甚至接近 LiDAR 方法的表现,这说明定位误差是制约 3D 检测的关键因素。此外,除了深度估计,检测到 3D 目标的投影中心点对于恢复目标的 3D 位置也很重要。CenterNet 将 2D 框中心点当作 3D 框在图像平面的投影中心,然后用预测的深度和相机参数反投回到 3D 空间。但是,2D 框中心和 3D 框的中心并不一样,于是,作者探讨了 2D 框中心和 3D 目标投影中心不对齐的问题,认为应该在单目 3D 检测器中保留 2D 检测分支,用 3D 投影中心替换 2D 框的中心能提升定位的准确率。2D 检测作为辅助任务,有助于特征学习。
  • 随着目标的距离增大,检测准确率会显著降低。超过一定的距离后,所有的模型都无法准确预测目标。作者发现,现有的方法都受到定位误差影响,无法准确地检出远距离物体。因此,作者认为可以从训练集中去除这些目标。“坏”样本和“容易检测”的样本之间有明显的域差异,强迫网络学习这些样本会降低其表征能力,不利于网络的整体表现。于是作者将远距离样本从训练集中剔除,并降低这些样本的损失权重。
  • 除了定位误差,尺寸估计也束缚了单目 3D 检测的表现(即便用了 ground-truth location,仍有 27.4 % 27.4\% 27.4%的提升空间)。现有的方法单独优化 3D 框的每个部分,但没有在一个最终的度量(即 3D IoU)里考虑每个损失项,这种优化并不是最优的。于是作者提出了 IoU 朝向损失来做尺寸预测。该损失根据样本的每一个面对 3D IoU 的贡献,动态地调节它的损失权重。

2. 提出了什么方法?

本文通过大量的消融实验,对每个子任务做定量分析,发现定位误差是制约单目 3D 检测重要的因素。作者也研究了造成定位误差的底层原因,分析它们带来的问题,从而提出了三个策略。

  • 2D 框中心点和 3D 目标的投影中心点之间存在不对齐的问题,这会造成定位准确率偏低。
  • 用现有的方法要想定位远距离物体,几乎是不可能的,远距离目标会误导网络的学习。作者认为应将这些样本从训练数据集中去除,从而提升检测器的整体表现。
  • 针对目标的尺寸估计任务,作者提出了 3D IoU 朝向损失,它不会受到“定位误差”影响。

2.1 问题定义

给定一张 RGB 图像及相机参数,我们要对 3D 空间中感兴趣的目标做分类和定位。每个目标都有它的类别、2D 框 B 2 D \bf{B}_{2D} B2D、3D 框 B 3 D \bf{B}_{3D} B3D B 2 D \bf{B}_{2D} B2D用中心点 c i = [ x ′ , y ′ ] 2 D \mathbf{c^i}=[x',y']_{2D} ci=[x,y]2D和图像平面的尺寸 [ h ′ , w ′ ] 2 D [{h',w'}]_{2D} [h,w]2D表示,而 B 3 D \bf{B}_{3D} B3D用它在 3D 世界空间的中心 [ x , y , z ] 3 D [x,y,z]_{3D} [x,y,z]3D、尺寸 [ h , w , l ] 2 D [h,w,l]_{2D} [h,w,l]2D和朝向角 γ \gamma γ表示。

2.2 基线模型

架构

作者基于单阶段 anchor-free 的 CenterNet 构建基线模型。主干网络为 DLA-34,它平衡了速度和精度。然后是七个轻量级的 heads(由一个 3 × 3 3\times 3 3×3卷积层和 1 × 1 1\times 1 1×1卷积层实现),分别用于 2D 检测和 3D 检测。

2D 检测

模型输出热力图,表示分类得分和目标大概的中心位置 c = ( u , v ) \mathbf{c}=(u,v) c=(u,v) c \mathbf{c} c用 ground-truth 2D 框的中心点的坐标监督。另一个分支则预测 c \mathbf{c} c和实际中心位置的偏移量 o i = ( Δ u i , Δ v i ) \mathbf{o^i}=(\Delta{u^i},\Delta{v^i}) oi=(Δui,Δvi),然后得到最终的 2D 框中心坐标 c i = c + o i \mathbf{c^i}=\mathbf{c}+\mathbf{o^i} ci=c+oi。最后,还有一个分支预测 2D 框的尺寸 [ w ′ , h ′ ] 2 D [w',h']_{2D} [w,h]2D

3D 检测

一个分支预测 c \mathbf{c} c和 3D 框中心投影 c w \mathbf{c^w} cw( c w = [ x w , y w ] T = c + o w \mathbf{c^w}=[x^w, y^w]^T=\mathbf{c}+\mathbf{o^w} cw=[xw,yw]T=c+ow) 之间的偏移量 o w = ( Δ u w , Δ v w ) \mathbf{o^w}=(\Delta{u^w},\Delta{v^w}) ow=(Δuw,Δvw)。通过相机参数 K ∈ R 3 × 3 \mathbf{K}\in \mathbb{R}^{3\times 3} KR3×3,我们可以恢复 3D 世界中目标的中心位置:
[ x y z ] 3 D = K − 1 [ c w ⋅ z z ] = K − 1 [ x w ⋅ z y w ⋅ z z ] 2 D \left[\begin{array}{c} x\\ y \\ z \end{array}\right]_{3D}=\mathbf{K^{-1}} \left[\begin{array}{c} \mathbf{c^w}\cdot z\\ z \end{array}\right]=\mathbf{K^{-1}}\left[\begin{array}{c} x^w \cdot z\\ y^w \cdot z \\ z \end{array}\right]_{2D} xyz 3D=K1[cwzz]=K1 xwzywzz 2D
z z z是深度分支预测的值。其余两个分支分别预测 3D 尺寸 [ h , w , l ] 3 D [h,w,l]_{3D} [h,w,l]3D和朝向角 γ \gamma γ
损失
总共有七项损失,一个用于正负样本分类,两个(中心位置和尺寸)用于 2D 检测,四个(中心位置、深度、尺寸、朝向角)用于 3D 检测。

  • 分类任务使用了 Focal Loss。
  • 对于 2D 检测的中心位置和尺寸回归,使用了 L1 损失。
  • 对于 3D 检测,
    • 用不确定性建模深度估计,
    • 3D 中心坐标优化采用了 L1 损失,
    • 朝向角估计使用了 multi-bin loss(考虑了 12 12 12个不重叠的 bins),
    • 尺寸估计使用了 L1 损失,以及本文提出的 IoU 损失。
      所有损失项权重都是 1 1 1

2.3 误差分析

作者探究了制约单目 3D 检测表现的因素。作者在 KITTI 验证集上进行误差分析,将每一项预测结果替换为 ground-truths,然后评测其表现。如上表所示,如果将预测的 3D 中心 c w \mathbf{c^w} cw替换为 ground-truths,准确率从 11.12 % 11.12\% 11.12%提升到了 18.97 % 18.97\% 18.97%。此外,ground-truth 深度值可以将准确率提升至 38.01 % 38.01\% 38.01%。如果深度和 3D 中心投影都考虑了,再将预测 3D 坐标 [ x , y , z ] 3 D [x,y,z]_{3D} [x,y,z]3D替换为 ground-truths 能带来最显著的提升。所以作者认为,单目 3D 检测效果差,主要是定位误差造成的。根据上式,深度估计和中心位置一起决定了 3D 空间内目标的位置。在单目图像中做深度估计是不适当的,优化中心点的检测效果是更加合理的努力方向。
在这里插入图片描述

上表展示了图像平面(以像素为单位)上中心点偏移造成的定位误差(以米为单位)。KITTI 数据集中,cars 的平均尺寸 [ h , w , l ] 3 D [h,w,l]_{3D} [h,w,l]3D [ 1.53 m , 1.63 m , 3.53 m ] [1.53m,1.63m,3.53m] [1.53m,1.63m,3.53m]。假设其它的度量都是对的,用长度 l l l来对齐定位误差,IoU 计算过程为:
I o U = 3.53 − Δ l o c 3.53 + Δ l o c IoU=\frac{3.53 - \Delta_{loc}}{3.53+\Delta_{loc}} IoU=3.53+Δloc3.53Δloc
其中 Δ l o c \Delta_{loc} Δloc表示定位误差。IoU 阈值设定为 0.7 0.7 0.7,因此理论可接受的最大误差是 0.62 m 0.62m 0.62m。但是,图像上 4 ∼ 8 4\sim8 48个像素( 4 × 4\times 4×下采样的特征图上 1 ∼ 2 1\sim 2 12像素)的误差都会造成相距 60 m 60m 60m的物体无法被准确检测到。再加上其它任务的误差(比如下图的深度估计误差),要想在单目图像上准确地检测远距离 3D 物体几乎就是不可能的,除非深度信息是非常准确的。下图的上半部分是 2D 框中心和 3D 投影到图像平面的中心不对齐的现象(以像素为单位,来源于 KITTI trainval 集);下半部分是深度误差(以米为单位,用 KITTI 训练集训练,在验证集测试)。
在这里插入图片描述

2.4 Revisiting Center Detection

Our design for center detection

为了预测目标大概的中心位置 c \mathbf{c} c,本文提出的方法很简单。

  • 将投影 3D 中心点 c w \mathbf{c^w} cw作为预测中心位置 c \mathbf{c} c分支的 ground-truths,
  • 迫使模型同时去学习 2D 检测的特征。
    这些设计来自于下面的分析:
  • 分析1:如下图所示(红色为 3D 投影中心,蓝色为 2D 框中心),在 2D 框中心 c i \mathbf{c^i} ci和 3D 框中心投影 c w \mathbf{c^w} cw之间存在不对齐的现象。3D 投影中心点 c w \mathbf{c^w} cw是恢复 3D 目标中心 [ x , y , z ] 3 D [x,y,z]_{3D} [x,y,z]3D的关键。那么问题就是 c \mathbf{c} c的监督信号应该是什么。一些论文将 2D 框中心 c i \mathbf{c^i} ci作为标签使用,但 c i \mathbf{c^i} ci和 3D 目标中心的关联并不紧密,使得中心点预测并不清楚目标的 3D 几何信息。因此,作者将 3D 投影中心 c w \mathbf{c^w} cw作为训练 c \mathbf{c} c的 ground-truths。
  • 分析2:SMOKE 算法也将 3D 投影中心 c w \mathbf{c^w} cw作为中心点 c \mathbf{c} c的 ground-truth 标签。但是它抛弃了 2D 检测分支,而本文选择保留该分支。在本方法中,用 3D 投影中心 c w \mathbf{c^w} cw监督 c \mathbf{c} c,也负责监督预测 2D 框的中心 c i \mathbf{c^i} ci。此外,2D 检测分支会预测一个真实 2D 中心和预测中心 c \mathbf{c} c之间的偏移量 o i = c i − c \mathbf{o^i}=\mathbf{c^i}-\mathbf{c} oi=cic。这样,模型就知道了目标的几何信息。然后,还有一个分支预测 2D 框的大小,共享特征就能学到一些有利于深度估计的信息。这样,保留了 2D 检测有助于 3D 特征学习。
    在这里插入图片描述

2.5 训练样本

本文认为去掉那些极端困难的样本对于单目 3D 检测网络的整体表现是有益的。物体的距离和检测难易程度之间是强关联的。于是,作者设计了两种机制,计算样本 i i i的训练权重 w i w_i wi

  • 硬编码,该机制舍弃那些超出一定距离的样本:
    w i = { 1 , if d i ≤ s 0 , if d i > s w_i=\left\{ \begin{aligned} 1,&\quad \text{if} &d_i\leq s \\ 0,&\quad \text{if} &d_i>s \end{aligned} \right. wi={1,0,ififdisdi>s
    d i d_i di表示样本 i i i的深度, s s s是深度阈值,在实验中设为 60 m 60m 60m。凡是距离超出 s s s的样本不参与训练。
  • 软编码,用近似于 sigmoid 的函数计算,
    w i = 1 1 + e ( d i − c ) / T w_i=\frac{1}{1+e^{(d_i-c)/T}} wi=1+e(dic)/T1
    c c c T T T是超参数,调节对称中心和弯曲度。当 c = s , T → 0 c=s, T\rightarrow 0 c=s,T0时,等价于硬编码。当 T → ∞ T\rightarrow \infty T,所有的样本的权重一样。默认 c = 60 , T = 1 c=60,T=1 c=60,T=1
    这两个机制效果差不多。

2.6 IoU Oriented Optimization

在单目 3D 检测中,判断物体的 3D 中心是很难的,定位误差经常能达到几米远。直接用 IoU 损失,会使定位相关的任务(如深度估计)比其它任务(如 3D 尺寸预测)更加重要。然而单目图像做深度估计是不适合的,该矛盾会造成训练的效果比较差。另一方案是将每个损失解耦开来,再独立地优化,但它忽视了损失项彼此之间的联系。于是,作者针对 3D 尺寸预测提出了 IoU oriented 优化方法。假设所有的预测项(除了 3D 尺寸 s = [ h , w , l ] 3 D \mathbf{s}=[h,w,l]_{3D} s=[h,w,l]3D)都是对的,我们可得到:
∂ I o U ∂ h : ∂ I o U ∂ w : ∂ I o U ∂ l ≈ 1 h : 1 w : 1 l \frac{\partial{IoU}}{\partial{h}}:\frac{\partial{IoU}}{\partial{w}}:\frac{\partial{IoU}}{\partial{l}}\approx \frac{1}{h}:\frac{1}{w}:\frac{1}{l} hIoU:wIoU:lIoUh1:w1:l1
该等式证明可见于2.9。因此,我们可以根据 IoU 的偏导数来调节每一项的权重,3D 尺寸估计的损失函数可变形为:
L s i z e = ∥ ( s − s ∗ ) s ∥ 1 \mathcal{L}_{size}=\left\|\frac{(\mathbf{s}-\mathbf{s}^\ast)}{\mathbf{s}}\right\|_1 Lsize= s(ss) 1
∥ ⋅ ∥ 1 \left\|\cdot\right\|_1 1表示 L1 范数。注意,与标准的 3D 尺寸损失函数 L ′ s i z e = ∥ s − s ∗ ∥ \mathcal{L'}_{size}=\left\|\mathbf{s}-\mathbf{s}^\ast\right\| Lsize=ss,该新损失的数量级没有改变。重新计算一次 L ′ s i z e \mathcal{L'}_{size} Lsize,计算补偿权重 w s = ∣ L ′ s i z e / L s i z e ∣ w_s=|\mathcal{L'}_{size} / \mathcal{L}_{size}| ws=Lsize/Lsize,最终损失函数 w s ⋅ L s i z e w_s\cdot \mathcal{L}_{size} wsLsize的均值等于 L ′ s i z e \mathcal{L'}_{size} Lsize。因此,本文提出的损失可以看作为标准 L1 损失的重新排布。

2.7 实现

训练

在两张 GTX 1080Ti 显卡训练,batch size 为 16 16 16,训练了 140 140 140个 epochs。使用 Adam 优化器,初始学习率为 1.25 e − 3 1.25e^{-3} 1.25e3,在第 90 90 90 120 120 120个 epoch 时乘以 0.1 0.1 0.1衰减。Weight decay 为 1 e − 5 1e^{-5} 1e5,在前 5 5 5个 epochs 使用 warmup 策略。为避免过拟合,使用了随机裁剪和缩放(只针对 2D 检测)和随机水平翻转。整个训练花费了 9 9 9个小时。

推理

从两个解码器得到预测结果。使用 3 × 3 3\times 3 3×3最大池化对中心点检测结果做 NMS。然后,恢复出 2D/3D 框,中心点的得分作为预测结果的得分。丢弃那些置信度 < 0.2 <0.2 <0.2的预测结果。

2.8 Uncertainty Modeling

对深度估计使用异方差偶然不确定性建模。同时预测深度 d \mathbf{d} d和标准差 σ \sigma σ
[ d , σ ] = f w ( x ) [\mathbf{d},\sigma]=f^{\mathbf{w}}(\mathbf{x}) [d,σ]=fw(x)
x \mathbf{x} x是输入数据, f f f是卷积网络,参数为 w \mathbf{w} w。然后,使用 Laplace 似然来建模不确定性,深度估计的损失写作:
L = 2 σ ∥ d − d ∗ ∥ 1 + log ⁡ σ \mathcal{L}=\frac{\sqrt{2}}{\sigma}\left\|\mathbf{d-d^\ast}\right\|_1 + \log{\sigma} L=σ2 dd1+logσ
∥ ⋅ ∥ 1 \left\|\cdot\right\|_1 1表示 L1 范数, d ∗ \mathbf{d^\ast} d是 ground-truth 深度值。类似地,高斯似然建模的损失写作:
L = 1 2 σ 2 ∥ d − d ∗ ∥ 2 + 1 2 log ⁡ σ 2 \mathcal{L}=\frac{1}{2\sigma^2}\left\|\mathbf{d-d^\ast}\right\|_2 + \frac{1}{2}\log{\sigma}^2 L=2σ21dd2+21logσ2
∥ ⋅ ∥ 2 \left\|\cdot\right\|_2 2表示 L2 范数。
从下表可以看到,不确定性建模可以提升深度图的准确率,从而提升整体表现。此外,基于 Laplace 分布建模的不确定性要比高斯分布更适合深度预测任务。
在这里插入图片描述

2.9 IoU Oriented Loss

Proposition

假设所有的预测项都是完全正确的(除了 3D 尺寸 ( h , w , l ) (h,w,l) (h,w,l)),3D IoU 每一项的贡献率 ∂ I o U ∂ h : ∂ I o U ∂ w : ∂ I o U ∂ l ≈ 1 h : 1 w : 1 l \frac{\partial{IoU}}{\partial{h}}:\frac{\partial{IoU}}{\partial{w}}:\frac{\partial{IoU}}{\partial{l}}\approx \frac{1}{h}:\frac{1}{w}:\frac{1}{l} hIoU:wIoU:lIoUh1:w1:l1
证明
给定上述条件,3D IoU 可以写作:
I o U = Π i ∈ { h , w , l } min ⁡ ( i , i ∗ ) h × w × l + h ∗ × w ∗ × l ∗ − Π i ∈ { h , w , l } min ⁡ ( i , i ∗ ) IoU=\frac{\Pi_{i\in\left\{h,w,l\right\}}\min(i,i^\ast)}{h\times w\times l+h^\ast\times w^\ast\times l^\ast - \Pi_{i\in\left\{h,w,l\right\}}\min(i,i^\ast)} IoU=h×w×l+h×w×lΠi{h,w,l}min(i,i)Πi{h,w,l}min(i,i)
这里 ( h ∗ , w ∗ , l ∗ ) (h^\ast,w^\ast,l^\ast) (h,w,l)表示预测的 3D 尺寸 ( h , w , l ) (h,w,l) (h,w,l)对应的 ground-truths。对于 3D 尺寸的预测值和 ground-truth 值之间的不同关系,可以分为下述情形:

  • 如果 h ≤ h ∗ , w ≤ w ∗ , l ≤ l ∗ h\leq h^\ast,w\leq w^\ast,l\leq l^\ast hh,ww,ll,上式可简化为: I o U = h × w × l h ∗ × w ∗ × l ∗ IoU=\frac{h\times w\times l}{h^\ast \times w^\ast \times l^\ast} IoU=h×w×lh×w×l,计算 3D IoU 关于高度 h h h的偏导 ∂ I o U ∂ h = w × l h ∗ × w ∗ × l ∗ \frac{\partial{IoU}}{\partial{h}}=\frac{w\times l}{h^\ast\times w^\ast\times l^\ast} hIoU=h×w×lw×l ∂ I o U ∂ w , ∂ I o U ∂ l \frac{\partial{IoU}}{\partial{w}},\frac{\partial{IoU}}{\partial{l}} wIoU,lIoU情况类似。然后,将它们的偏导数结合起来,每个的贡献率就是 ∂ I o U ∂ h : ∂ I o U ∂ w : ∂ I o U ∂ l = 1 h : 1 w : 1 l \frac{\partial{IoU}}{\partial{h}}:\frac{\partial{IoU}}{\partial{w}}:\frac{\partial{IoU}}{\partial{l}}= \frac{1}{h}:\frac{1}{w}:\frac{1}{l} hIoU:wIoU:lIoU=h1:w1:l1
  • 如果 h > h ∗ , w > w ∗ , l > l ∗ h> h^\ast,w> w^\ast,l> l^\ast h>h,w>w,l>l,可以推导出相同的结论。
  • 如果 h > h ∗ , w ≤ w ∗ , l ≤ l ∗ h> h^\ast,w\leq w^\ast,l\leq l^\ast h>h,ww,ll,3D IoU 表示为 I o U = h ∗ × w × l h × w × l + h ∗ × w ∗ × l ∗ − h ∗ × w × l IoU=\frac{h^\ast\times w\times l}{h\times w\times l + h^\ast \times w^\ast \times l^\ast-h^\ast\times w\times l} IoU=h×w×l+h×w×lh×w×lh×w×l,计算 3D IoU 关于 h , w , l h,w,l h,w,l的偏导数,可以得到每个的贡献率为 ∂ I o U ∂ h : ∂ I o U ∂ w : ∂ I o U ∂ l = w × l h ∗ × w ∗ × l ∗ : 1 w : 1 l \frac{\partial{IoU}}{\partial{h}}:\frac{\partial{IoU}}{\partial{w}}:\frac{\partial{IoU}}{\partial{l}}= \frac{w\times l}{h^\ast\times w^\ast\times l^\ast}:\frac{1}{w}:\frac{1}{l} hIoU:wIoU:lIoU=h×w×lw×l:w1:l1
  • 如果 h > h ∗ , w > w ∗ , l ≤ l ∗ h> h^\ast,w> w^\ast,l\leq l^\ast h>h,w>w,ll,可以得到 I o U = h ∗ × w ∗ × l h × w × l + h ∗ × w ∗ × l ∗ − h ∗ × w ∗ × l IoU=\frac{h^\ast\times w^\ast\times l}{h\times w\times l + h^\ast \times w^\ast \times l^\ast-h^\ast\times w^\ast\times l} IoU=h×w×l+h×w×lh×w×lh×w×l,3D IoU 关于每一项的贡献率为 ∂ I o U ∂ h : ∂ I o U ∂ w : ∂ I o U ∂ l = 1 h : 1 w : h ∗ × w ∗ × l ∗ h × w × l × l \frac{\partial{IoU}}{\partial{h}}:\frac{\partial{IoU}}{\partial{w}}:\frac{\partial{IoU}}{\partial{l}}= \frac{1}{h}:\frac{1}{w}:\frac{h^\ast\times w^\ast\times l^\ast}{h\times w\times l\times l} hIoU:wIoU:lIoU=h1:w1:h×w×l×lh×w×l
    其它情形与上述第3和第4个类似。当 h ≈ h ∗ , w ≈ w ∗ , l ≈ l ∗ h\approx h^\ast,w\approx w^\ast,l\approx l^\ast hh,ww,ll,可以得到 ∂ I o U ∂ h : ∂ I o U ∂ w : ∂ I o U ∂ l ≈ 1 h : 1 w : 1 l \frac{\partial{IoU}}{\partial{h}}:\frac{\partial{IoU}}{\partial{w}}:\frac{\partial{IoU}}{\partial{l}}\approx \frac{1}{h}:\frac{1}{w}:\frac{1}{l} hIoU:wIoU:lIoUh1:w1:l1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/487714.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

图像去模糊中的均值滤波、高斯滤波、双边滤波简单介绍及代码演示

文章目录 图像去模糊中的均值滤波、高斯滤波和双边滤波简单介绍均值滤波高斯滤波双边滤波总结 图像去模糊中的均值滤波、高斯滤波和双边滤波简单介绍 图像模糊是指图像中的细节和边缘被平滑和模糊化&#xff0c;通常是由于图像采集设备或者图像传输过程中的噪声和抖动引起的。…

SQL 执行顺序

数据的关联过程 from&join&where group by having&where select order by limit 这是一条标准的查询语句: 这是我们实际上SQL执行顺序&#xff1a; 我们先执行from,join来确定表之间的连接关系&#xff0c;得到初步的数据 where对数据进行普通的初步的筛选 …

低代码开发重要工具:jvs列表页中如何实现左树右表的配置

左树右表是一种数据查询展示方式&#xff0c;通常用于处理带有层级关系的查询条件的数据展示。它的基本思想是将一个大表分成左树和右表&#xff0c;左树是一个树形结构&#xff0c;右表是一个扁平的表。通过在左树上建立索引&#xff0c;可以大大提高查询效率。 左树右表的实…

C/C++每日一练(20230504)

目录 1. 将数据流变为多个不相交区间 &#x1f31f;&#x1f31f;&#x1f31f; 2. 冒泡法排序大小 &#x1f31f; 3. Pow(x, n) &#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专…

使用机器人为无线传感器网络提供服务(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 无线传感器网络是一种无线网络&#xff0c;包括大量循环的、自定向的、微小的、低功耗的设备&#xff0c;称为传感器节点&…

MySQL存储引擎对比总结

文章目录 一、存储引擎是什么二、存储引擎有哪些三、常用存储引擎介绍1、InnoDB2、MyISAM3、MEMORY4、MRG_MYISAM &#xff08;MERGE&#xff09;5、ARCHIVE6、BLACKHOLE7、FEDERATED8、CSV9、PERFORMANCE_SCHEMA10、NDB 一、存储引擎是什么 存储引擎是数据库的核心&#xff0…

微信小程序实现订阅消息功能(Node服务器篇)

在上一篇内容当中在微信小程序中实现订阅消息功能&#xff0c;都在客户端(小程序)中来实现的&#xff0c;在客户端中模拟了服务器端来进行发送订阅消息的功能&#xff0c;那么本篇就将上一篇内容中仅在客户端中实现发送订阅消息功能进行一个分离&#xff0c;使用 Node.js 搭载后…

吧佬联手抵制奸商,百元级游戏电脑横出江湖

最近小忆闲得在电商平台搜索了下关键词「游戏主机」&#xff0c;不出意外销量榜前列清一色全是「i9 级高端游戏主机」。 这些主机不论配置单介绍还是十万百万级销量宣传标语&#xff0c;都给人一种血赚不亏的「豪华」感。 咱就说时代在变&#xff0c;唯一不变的是奸商们的套路与…

什么样的台灯灯光是好的?推荐中性色温的护眼台灯

台灯的灯光指的是白光和黄光&#xff0c;就是台灯的色温&#xff0c;而色温也是也会影响我们的直观感受的。 低色温&#xff08;>3000K&#xff09;光源偏黄&#xff0c;属于暖色调&#xff0c;适合休息高色温&#xff08;<5000K&#xff09;光源偏白&#xff0c;属于冷…

MWORKS.Sysplorer 2023a前瞻版上线——面向MBD全流程的覆盖

信息物理融合系统&#xff08;CPS&#xff09;的设计、建模与仿真是装备数字化的核心技术。MWORKS.Sysplorer经过多年的发展&#xff0c;已经支持机械、电气、流体、热力学等多个物理域的统一建模和统一仿真求解&#xff0c;解决了物理域统一表达与统一建模问题。为了支持完整的…

嘉立创EDA元件库开发环境及设计介绍

一、元件符号概述 如图1所示&#xff0c;元件符号是元件在原理图中的表现形式&#xff0c;主要由元件边框、管脚&#xff08;包括管脚符号和管脚名称&#xff09;、元件名称及说明组成&#xff0c;通过放置的管脚来建立电气连接关系。元件符号中管脚序号是和电子元件实物的管脚…

Node 11会话控制

会话控制 介绍 所谓会话控制就是 对会话进行控制 HTTP 是一种无状态的协议&#xff0c;它没有办法区分多次的请求是否来自于同一个客户端&#xff0c;无法区分用户 而产品中又大量存在的这样的需求&#xff0c;所以我们需要通过 会话控制 来解决该问题 常见的会话控制技术有…

ChatGPT被淘汰了?Auto-GPT到底有多强

大家好&#xff0c;我是可夫小子&#xff0c;关注AIGC、读书和自媒体。解锁更多ChatGPT、AI绘画玩法。 说Auto-GPT淘汰了ChatGPT了&#xff0c;显然是营销文案里面的标题党。毕竟它还是基于ChatGPT的API&#xff0c;某种意义只是基于ChatGPT能力的应用。但最近&#xff0c;Auto…

大型央企集团财务经营分析框架系列(二)

01集团化的数字化项目为什么会失败深度原因&#xff1a;方向性错误 这几年见过一些央企、国企、大型企业集团尝试过一些数字化的项目&#xff1a;数据中台、大数据分析、BI 分析项目&#xff0c;投入很大、周期也很长&#xff0c;甚至有的在项目开始前也找了专业的咨询公司来规…

按键外部中断

文章目录 运行环境&#xff1a;1.1 按键外部中断1)按键检测2)外部中断的3中触发方式 2.1配置1)原理图2)引脚配置3)中断配置4)RCC和SYS 3.1代码分析3.2添加代码1)中断处理函数IRQ中添加电平转换代码2)launch设置 5.1实验效果 运行环境&#xff1a; ubuntu18.04.melodic 宏基暗影…

如何用ChatGPT做团队绩效管理?根据员工的个人优势、不足、目标来生成更具体的绩效反馈

该场景对应的关键词库&#xff1a;&#xff08;25个&#xff09; 绩效管理、目标设定、绩效评估、员工优势、员工弱点、反馈机制、个人发展计划、职业规划、评估工具、数据分析、绩效考核、评分标准、KPI指标、成果目标、个人任务、团队任务、激励机制、晋升机会、增量奖励、培…

你的个人AI助理Pi来了

还记得之前的文章《不要老盯着ChatGPT&#xff0c;这几家公司的产品同样不容小觑》提到的Inflection AI公司吗&#xff1f;通过其官方推文了解到&#xff0c;前期我们关注的个人AI助理有了新的进展&#xff0c;Pi开始对外发布。 Pi是什么 Pi 是一种 AI&#xff0c;一种旨在提供…

使用crontab定时自动更新DDNS

需求说明&#xff1a; N1盒子的armbian系统配置好了 ipv6 的ddns&#xff0c;实现了域名访问本机&#xff0c;但是本地ipv6可能会发生变化&#xff0c;当发生变化后&#xff0c;需要手动执行指令&#xff0c;将新的ip与域名绑定&#xff0c;现在我们采用定时任务&#xff0c;每…

18 线性表的查找

查找的基本概念 **查找&#xff1a;**在数据集合中寻找满足某种条件数据元素的过程&#xff0c;称之为查找。 查找的结果 分别两种&#xff1a; 查找成功 即在数据集合中找到了满足条件的数据元素。查找结果给出整个记录的信息&#xff0c;或者改记录在查找表中的位置。查找失…

vivo积分任务体系的架构演进-平台产品系列05

作者&#xff1a;vivo 互联网平台产品研发团队- Mu JunFeng 积分体系作为一种常见营销工具&#xff0c;几乎是每一家企业会员营销的必备功能之一&#xff0c;在生活中随处可见&#xff0c;随着vivo互联网业务发展&#xff0c;vivo积分体系的能力也随之得到飞速提升&#xff0c;…