DCN v2阅读笔记

news2024/10/7 20:25:43

Deformable ConvNets v2: More Deformable, Better Results 是 Deformable Convolutional Networks 研究的续作,发表在 CVPR 2019上。

作者对 DCNv1 的自适应行为进行研究,观察到虽然其神经特征的空间支持比常规的卷积神经网络更符合物体结构,但这种支持可能远远超出感兴趣区域,导致特征受到不相关图像内容的影响。为此,作者提出了改进版的 DCNv2,通过增加建模能力和更强的训练来提高其聚焦于相关图像区域的能力。

研究方法

  • 可视化:DCNv1 使用偏移采样位置并统计有效扩张,DCNv2 使用3种模式可视化网络节点的空间支持:
    • 有效感受野:节点响应相对于每个图像像素的强度扰动的梯度,考察单个像素对网络节点的相对影响;
    • 有效采样(或 bin)位置:网络节点相对于采样(bin)位置的梯度,揭示这些采样位置对网络节点的相对贡献;
    • 误差估计显著性区域:在较小的误差范围内提供与完整图像相同的响应的最小图像区域,比较来自不同网络的支持区域。
  • 消融实验:DCNv1 使用 VOC 2007 test,DCNv2 使用 COCO 2017 validation set;

改进策略

  • 微观结构:引入扩展变形建模范围的调制机制,不仅接受学习到的偏移,还受到学习到的特征幅度的调制;
  • 整体结构:DCNv1 替换了 conv5 阶段的卷积层,DCNv2 替换 cov3到 conv5阶段的卷积层。在网络中更全面地集成可变形卷积,能够在更广泛的特征级别范围内控制采样;
  • 训练策略:R-CNN Feature Mimicking 通过模仿 R-CNN 的特征,帮助网络网络学习其聚焦目标和分类的能力。

2.2. Spatial Support of Deformable ConvNets

利用这3种可视化方式,我们考察了conv5阶段最后一层节点的空间支持度,如图 Figure 1 (a) ∼ \sim (b)。同时展示了在 DCNv1 中分析的采样位置。
在这里插入图片描述

从这些可视化中,我们得出以下观察结果:

  1. 常规 ConvNet 可以在一定程度上建模几何变化,图像内容的空间支持度的变化就证明了这一点。得益于深度卷积神经网络强大的表示能力,网络权重被学习以适应某种程度的几何变换。

  2. 通过引入可变形卷积,网络对几何变换建模的能力得到显着增强,即使在具有挑战性的 COCO 基准测试中也是如此。空间支持更多地适应图像内容,前景节点具有覆盖整个物体的支持,而背景节点具有扩展的支持,包含更大的上下文。然而,空间支持的范围可能不精确,前景节点的有效感受野和误差估计显著性区域包括与检测无关的背景区域。

  3. 所提出的三种空间支持可视化比 DCNv1 中使用的采样位置信息更丰富。例如,常规 ConvNet 虽然沿着网格具有固定的采样位置,但实际上能够通过网络权重调整其有效的空间支持。Deformable ConvNet 也是如此,其预测受学习的偏移量和网络权重的共同影响。如在 DCNv1 中所做的那样,仅检查采样位置可能会导致关于 Deformable ConvNet 的误导性结论。

在这里插入图片描述
图 Figure 2 (a) ∼ \sim (b) 显示了每个 roi 检测头中分类和边界框回归分支前的2个 fc 节点的空间支撑。有效 bin 位置的可视化表明,目标前景上的 bin 通常从分类分支接收更大的梯度,因此对预测产生更大的影响。这一观察结果适用于对齐的 RoIpooling 和 Deformable RoIpooling。由于引入了可学习的 bin 偏移,在 Deformable RoIpooling 中,bin 覆盖目标前景的比例比在对齐 RoIpoolng 中大得多。因此,下游 Fast R-CNN 头可以获得更多的相关 bin 信息。同时,对齐 RoIpool 和 Deformable RoIpooling 中的误差估计显著性区域都没有完全聚焦到目标前景上,说明 RoI 之外的图像内容会影响预测结果。根据 Revisiting RCNN 中的研究,这种特征干扰可能对检测有害。

可见,Deformable ConvNet 相对于常规 ConvNet,其适应几何变化的能力显著提高,但也可以看出其空间支持范围可能超出感兴趣区域。因此,我们寻求对 Deformable ConvNet 进行升级,使其能够更好地聚焦于相关的图像内容,并提供更高的检测精度。

More Deformable ConvNets

Stacking More Deformable Conv Layers

由于观察到 Deformable ConvNet 可以在具有挑战性的基准上有效地对几何变换建模,我们大胆地将更多的常规卷积层替换为可变形的对应层。我们期望通过堆叠更多的可变形卷积层,进一步加强整个网络的几何变换建模能力。

在本文中,可变形卷积应用于 ResNet-50 中 conv3、conv4和 conv5阶段的所有 3 × 3 3\times 3 3×3 conv 层。因此,在网络中有12层可变形卷积。相比之下,DCNv1 中只在 conv5阶段使用了三层可变形卷积。在 DCNv1 中观察到,对于相对简单和小规模的 PASCAL VOC 基准测试,当堆叠超过三层时性能会饱和。此外,COCO 上误导性的偏移可视化可能阻碍了对更具挑战性的基准的进一步探索。在实验中,我们观察到在 conv3-conv5 阶段使用可变形层可以在 COCO 上实现目标检测的准确性和效率之间的最佳权衡。有关详细信息,请参见第 5.2 节 Enriched Deformation Modeling。

Modulated Deformable Modules

为了进一步加强 Deformable ConvNets 处理空间支撑区域的能力,引入了调制机制。有了它,Deformable ConvNets 模块不仅可以调整感知输入特征的偏移量,还可以调制来自不同空间位置/仓的输入特征幅度。在极端情况下,模块可以通过将其特征幅度设置为零来决定不感知来自特定位置/仓的信号。对应空间位置的图像内容对模块输出的影响会大幅降低或无影响。因此,调制机制为网络模块提供了另一个维度的自由度来调整其空间支持区域。

给定一个包含 K K K 个采样位置的卷积核,令 w k w_k wk p k p_k pk 分别表示第 k k k 个位置的权重和预先指定的偏移量。例如, K = 9 K=9 K=9 p k ∈ { ( − 1 , − 1 ) , ( − 1 , 0 ) , … , ( 1 , 1 ) } p_k\in \{(- 1,- 1), (- 1, 0), \ldots, (1, 1)\} pk{(1,1),(1,0),,(1,1)} 定义了一个膨胀为1的 3 × 3 3\times 3 3×3 卷积核。令 x ( p ) x(p) x(p) y ( p ) y(p) y(p) 分别表示输入特征图 x x x 和输出特征图 y y y 中位置 p p p 处的特征。则调制可变形卷积可以表示为
y ( p ) = ∑ k = 1 K w k ⋅ x ( p + p k + Δ p k ) ⋅ Δ m k , y(p) = \sum_{k=1}^{K} w_k \cdot x(p+p_k+\Delta p_k)\cdot \Delta m_k, y(p)=k=1Kwkx(p+pk+Δpk)Δmk,

其中 Δ p k \Delta p_k Δpk Δ m k \Delta m_k Δmk 分别是第 k k k 个位置的可学习偏移量和调制标量。调制标量 Δ m k \Delta m_k Δmk 位于 [ 0 , 1 ] [0, 1] [0,1] 范围内,而 Δ p k \Delta p_k Δpk 是一个范围不受约束的实数。由于 p + p k + Δ p k p+p_k+\Delta p_k p+pk+Δpk 是小数,因此在计算 x ( p + p k + Δ p k ) x(p+p_k+\Delta p_k) x(p+pk+Δpk) 时应用双线性插值,如 DCN_v1 中。 Δ p k \Delta p_k Δpk Δ m k \Delta m_k Δmk 都是通过在相同的输入特征图 x x x 上施加一个单独的卷积层得到的。该卷积层与当前卷积层具有相同的空间分辨率和膨胀系数。输出为 3 K 3K 3K 个通道,其中前 2 K 2K 2K 个通道对应于学习到的偏移量 { Δ p k } k = 1 K \{\Delta p_k\}_{k=1}^{K} {Δpk}k=1K,剩余的 k k k 个通道被进一步馈送到 sigmoid 层,以获得调制标量 { Δ m k } k = 1 K \{\Delta m_k\}_{k=1}^{K} {Δmk}k=1K。这个单独的卷积层中将核权重初始化为零。因此, Δ p k \Delta p_k Δpk Δ m k \Delta m_k Δmk 的初始值分别为 0 和 0.5。添加的用于学习偏移和调制的卷积层的学习率设置为现有层的 0.1 倍。

调制可变形 RoIpooling 的设计与之类似。 给定一个输入 RoI,RoIpooling 将其划分为 K K K 个分箱(例如 7 × 7 7\times 7 7×7)。 在每个分箱中,应用均匀空间间隔的采样网格(例如 2 × 2 2\times 2 2×2)。对网格上的采样值进行平均以计算分箱输出。令 Δ p k \Delta p_k Δpk Δ m k \Delta m_k Δmk 为第 k k k 个分箱的可学习偏移量和调制标量。输出分箱特征 y ( k ) y(k) y(k) 的计算公式为
y ( k ) = ∑ j = 1 n k x ( p k j + Δ p k ) ⋅ Δ m k / n k , y(k) = \sum_{j=1}^{n_k}x(p_{kj}+\Delta p_k)\cdot \Delta m_k/n_k, y(k)=j=1nkx(pkj+Δpk)Δmk/nk,

其中, p k j p_{kj} pkj 是第 k k k 个分箱中第 j j j 个网格单元的采样位置, n k n_k nk 表示采样网格单元的数量。采用双线性插值获取特征 x ( p k j + Δ p k ) x(p_{kj}+\Delta p_k) x(pkj+Δpk) Δ p k \Delta p_k Δpk Δ m k \Delta m_k Δmk 的值由输入特征图上的同级分支生成。在这一分支中,RoIpooling 在 RoI 上生成特征,然后是两个 1024-D 的 f c \mathit{fc} fc 层(使用标准差为0.01的高斯分布初始化)。除此之外,一个额外的 f c \mathit{fc} fc 层产生 3 K 3K 3K 个通道的输出(权重初始化为零)。前 2 K 2K 2K 个通道是归一化的可学习偏移量,与 RoI 的宽度和高度逐元素相乘可以获得 { Δ p k } k = 1 K \{\Delta p_k\}_{k=1}^{K} {Δpk}k=1K。剩余的 K K K 个通道由 sigmoid 层归一化以产生 { Δ m k } k = 1 K \{\Delta m_k\}_{k=1}^{K} {Δmk}k=1K。添加的用于偏移学习的 f c \mathit{fc} fc 层的学习率与现有层的学习率相同。

R-CNN Feature Mimicking

如图 Figure 2 所示,对于常规 ConvNet 和 Deformable ConvNet,每个 RoI 分类节点的误差估计显著性区域都可以延伸到 RoI 之外。因此,RoI 之外的图像内容可能会影响提取的特征,从而降低目标检测的最终结果。

在 Revisiting RCNN 中,作者发现冗余上下文可能是 Faster R-CNN 的检测错误来源。结合其他动机(例如,在分类和边界框回归分支之间共享更少的特征),作者建议结合 Faster R-CNN 和 R-CNN 的分类分数来获得最终的检测分数。由于 R-CNN 分类分数聚焦于从输入 RoI 中裁剪的图像内容,因此包含它们将有助于缓解冗余上下文问题并提高检测准确性。然而,由于 Faster R-CNN 和 R-CNN 分支在训练和推理中都需要应用,因此组合系统的速度较慢。

同时,Deformable ConvNet 具有强大的空间支撑区域调整能力。特别是对于 Deformable ConvNet v2,调制的可变形 RoIpooling 模块可以简单地设置 bin 的调制标量,以排除冗余上下文。然而,我们在5.3节中的实验表明,即使使用调制可变形模块,也无法通过标准的 Faster R-CNN 训练程序很好地学习此类表示。我们怀疑这是因为传统的 Faster R-CNN 训练损失不能有效地驱动这种表示的学习。需要额外的指导来控制训练。

受最近关于特征模仿的工作[2, Knowledge Distillation, Mimick]的启发,我们在 Deformable Faster R-CNN 的每个 RoI 特征上加入了特征模拟损失,以迫使它们与从裁剪图像中提取的 R-CNN 特征相似。这个辅助训练目标旨在驱动 Deformable Faster R-CNN 像 R-CNN 一样学习更多“聚焦”的特征表示。我们注意到,基于图 fig:visualize_regular_deformable_roi 中的可视化空间支持区域,聚焦特征表示对于图像背景上的负 RoI 可能不是最佳的。 对于背景区域,可能需要考虑更多上下文信息,以免产生假阳性检测。因此,特征模拟损失仅在与真实目标充分重叠的正 RoI 上实施。

在这里插入图片描述

训练 Deformable Faster R-CNN 的网络架构如图 Figure 3 所示。除了 Faster R-CNN 网络之外,还添加了一个额外的 R-CNN 分支用于特征模仿。给定用于特征模仿的 RoI b b b,则裁剪对应的图像块并将其调整为 224 × 224 224 × 224 224×224 像素。在 R-CNN 分支中,主干网络对调整大小后的图像块进行操作,并生成空间分辨率为 14 × 14 14 × 14 14×14 的特征图。在特征图上应用一个(调制的)可变形 RoIpooling 层,其中输入的 RoI 覆盖整个缩放后的图像块(左上角位于 ( 0 , 0 ) (0, 0) (0,0),高度和宽度均为224像素)。之后,应用两个1024维的 fc 层,为输入图像块生成 R-CNN 特征表示,记为 f RCNN ( b ) f_{\text{RCNN}}(b) fRCNN(b)。接着采用 ( C + 1 ) (C+1) (C+1) 路的 Softmax 分类器进行分类,其中 C C C 表示前景类别的数量,加上一个背景类别。在 R-CNN 特征表示 f RCNN ( b ) f_{\text{RCNN}}(b) fRCNN(b) 和 Faster R-CNN 中的对应物 f FRCNN ( b ) f_{\text{FRCNN}}(b) fFRCNN(b) 之间执行特征模拟损失, f FRCNN ( b ) f_{\text{FRCNN}}(b) fFRCNN(b) 也是1024维,由 Faster R-CNN 头的两个 fc 层产生。特征模拟损失定义为 f RCNN ( b ) f_{\text{RCNN}}(b) fRCNN(b) f FRCNN ( b ) f_{\text{FRCNN}}(b) fFRCNN(b) 之间的余弦相似性,计算如下
L mimic = ∑ b ∈ Ω [ 1 − cos ⁡ ( f RCNN ( b ) , f FRCNN ( b ) ) ] , L_{\text{mimic}} = \sum_{b \in \Omega} [1-\cos(f_{\text{RCNN}}(b), f_{\text{FRCNN}}(b))], Lmimic=bΩ[1cos(fRCNN(b),fFRCNN(b))],

其中 Ω \Omega Ω 表示为特征模拟训练采样的 RoI 集合。在 SGD 训练中,给定一幅输入图像,将 RPN 生成的 32 个正候选区域随机采样到 Ω \Omega Ω 中。 分别在 R-CNN 分类头和 Ω \Omega Ω 中的 RoI 上计算交叉熵分类损失。网络训练由特征模拟损失、R-CNN 分类损失以及 Faster R-CNN 中的原始损失项驱动。新引入的两个损失项的损失权重是原始 Faster R-CNN 损失项的0.1倍。 R-CNN 和 Faster R-CNN 分支中相应模块之间的网络参数是共享的,包括主干网络、(调制的)可变形 RoIpooling 和2-fc 头(两个分支中的分类头未共享)。在推理中,只对测试图像应用 Faster R-CNN 网络,没有辅助 R-CNN 分支。因此,因此,R-CNN 特征模拟在推理中没有引入额外的计算。

Enriched Deformation Modeling

在这里插入图片描述
通过表 Table 1 中所示的消融来检验丰富变形建模的效果。使用常规 CNN 模块的基线对于 Faster R-CNN 获得了 34.7% 的 AP bbox ^{\text{bbox}} bbox 分数,而 Mask R-CNN 的 AP bbox ^{\text{bbox}} bbox 和 AP  mask ^{\text{ mask}}  mask 得分分别为 36.6% 和 32.2%。为了获得 DCNv1 基线,我们遵循原始 Deformable ConvNet 的论文,将 conv5阶段中的最后三层 3 × 3 3\times 3 3×3 卷积和对齐的 RoIpooling 层替换为其可变形对应层。此 DCNv1 基线对于 Faster R-CNN 的 AP bbox ^{\text{bbox}} bbox 得分为 38.0%,Mask R-CNN 的 AP bbox ^{\text{bbox}} bbox 和 AP  mask ^{\text{ mask}}  mask 得分分别为 40.4% 和 35.3%。正如在 DCNv1 中观察到的,可变形模块显著提高了精度。

通过用可变形对应物替换更多 3 × 3 3\times 3 3×3 常规卷积层,Faster R-CNN 和 Mask R-CNN 的准确性稳步提高,当替换 conv3-conv5 中的卷积层时,AP bbox ^{\text{bbox}} bbox 的增益在2.0%和3.0%之间。进一步替换 conv2阶段的常规卷积层,在 COCO 基准测试中没有观察到额外的改进。通过将可变形模块升级为调制可变形模块,我们在 AP bbox ^{\text{bbox}} bbox 和 AP mask ^{\text{mask}} mask 得分上获得了0.3~0.7% 之间的进一步增益。总的来说,丰富的变形建模能力在 Faster R-CNN 上产生了 41.7% AP bbox ^{\text{bbox}} bbox 分数,比 DCNv1 基线高 3.7%。在 Mask R-CNN 上,使用丰富形变建模得到了43.1%的 AP bbox ^{\text{bbox}} bbox 和37.3 %的 AP mask ^{\text{mask}} mask 得分,分别比 DCNv1 基线提高了2.7%和2.0%。值得注意的是,与整个网络相比,用于丰富变形建模的附加参数和 FLOP 较小。

如图 Figure 1 (b) ∼ \sim ©所示,与 DCNv1 相比,丰富可变形建模的空间支持对图像内容具有更好的适应性。
在这里插入图片描述

表 Table 2 给出了输入图像分辨率为800像素时的结果,它遵循 Detectron 代码库中的默认设置。同样的结论也成立。

R-CNN Feature Mimicking

在这里插入图片描述
R-CNN 特征模仿在设计时的消融选择如表 Table 3 所示。 在丰富的变形建模之上,R-CNN 特征模仿在 Faster R-CNN 和 Mask R-CNN 系统中进一步将 AP bbox ^{\text{bbox}} bbox 和 AP mask ^{\text{mask}} mask 分数提高了大约 1% 到 1.4% 。实验发现在目标前景上模仿正框的特征特别有效,而模仿所有框或仅模仿负框时的结果要低得多。 如图 Figure 2 © ∼ \sim (d)所示,特征模仿可以帮助网络特征更好地聚焦于目标前景,这对正框是有益的。对于负框,网络倾向于利用更多的上下文信息(见图~ fig:visualize_regular_deformable_roi),特征模仿将无济于事。
实验中还将 R-CNN 特征模仿应用于没有任何可变形层的常规 ConvNet。几乎没有观测到精度增益。可视化的空间支持区域如图 Figure 2 (e)所示,即使在辅助模拟损失的情况下也不会聚焦于目标前景。这很可能是因为将特征聚焦于目标前景超出了常规卷积神经网络的表征能力,因而无法学习。

参考资料:

  • deform_conv2d
  • Deformable Convolutional Networks
  • Deformable ConvNets v2: More Deformable, Better Results
  • msracver/Deformable-ConvNets
  • Question about num_deformable_group #268
  • 【VALSE 前沿技术选介17-02期】可形变的神经网络
  • DCN v2 (Arxiv, 2018)
  • DCN_v2_paper_reading.pdf
  • 目标检测和感受野的总结和想法
  • [论文笔记] Effective Receptive Field
  • 一文读懂Faster RCNN
  • 论文笔记 《Distilling the Knowledge in a Neural Network》
  • Do Deep Nets Really Need to be Deep?

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

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

相关文章

2023年的无线蓝牙耳机哪些牌子好,真无线蓝牙耳机品牌排名

本文将为您详细介绍每款蓝牙耳机的设计特点、音质表现、续航能力和智能功能等关键信息。我们将提供客观、全面的分析,帮助您更好地了解每款产品的优势和适用场景;无论您是追求高保真音质的音乐发烧友,还是需要轻便舒适的耳机进行运动&#xf…

Kafka入门, 消费者工作流程(十八)

kafka消费方式 pull(拉)模式: consumer采用从broker中主动拉取数据。 Kafka采用这种方式。 push(推)模式: Kafka没有采用这种方式,因为由broker决定消息发送速率,很难适应所有消费者的速率。例如推送速度是50m/s,consu…

rocketmq客户端日志过大造成磁盘使用率占用过高

目录 问题现象 排查占用 自定义客户端日志配置未生效 总结 问题现象 收到项目报警:磁盘占用率超标通知 排查占用 从上述可以看出,实质是跟正常业务日志无关的,/home/work/log挂出来了,与/根目录下无关 查看根目录下日志占用…

frp实现远程开机

前一篇刷完小米路由器后,自带了frp,所以继续走着 前提:(我有阿里云公网服务器、域名) 第一步,配置路由器(客户端)frp [common] server_addr frp.xxx.cn #需要在阿里云服务器添加解析 serve…

【macOS 系列】如何取消程序坞下方app的未读消息的小红点

如何取消程序坞下方app的未读消息的小红点 需要针对单独的软件一次设置,不能批量设置。将标记为APP图标取消勾选即可。

【UnityDOTS 七】IAspect的使用

IAspect的使用 前言 IAspect是Unity DOTS中用来更方便组织数据集合的接口。可以将我们需要的数据集合放到一个IAspect中,然后用这个自定义的IAspect去进行查询。 一、IAspect是什么? 如上面官方文档说的,是一个高级的Component组合体。 可以…

Gartner发布2023新兴技术雷达图,超级自动化安全、生成式AI是高影响力技术

在Gartner发布的“2023新兴技术影响力雷达图”中,围绕智能世界、生产力革命、透明度和隐私****以及关键使能技术四大主题,对24种最具颠覆和市场变革性的新兴趋势和技术进行了评估。 其中,边缘AI、边缘计算机视觉处于雷达图核心位置&#xff…

Redis-问题

1.redis的槽是什么? Redis Cluster中有一个16384长度的槽的概念,他们的编号为0、1、2、3……16382、16383。这个槽是一个虚拟的槽,并不是真正存在的。 2.redis的槽有什么用? 缓存 对于高访问量的网站,缓存是提高性能的重要手段。使用Redis槽技术可以将…

机器学习23:《数据准备和特征工程-I》概述

机器学习帮助我们找到数据中的模式,然后我们用这些模式来预测新的数据点。为了获得正确的预测,我们必须构建数据集并正确地转换数据。在《数据准备和特征工程》系列文章中,笔者将重点介绍这两个关键步骤。在【机器学习7:特征工程】…

项目预算Budgeting 中英对照(PLM230 Unit4)

1、an estimate of the required funds 预估所需资金 2、correspond to the approved funds 符合批准的资金 3、availability control 可用性控制 4、be warned before the budget is exhausted 耗尽之前警告 5、The budget differs from the project cost plan is binding.…

为您的服务台提供6个基于AI的使用案例

人工智能(AI)正在向IT服务管理(ITSM)迈进,有望重新定义事物的工作方式。但是,人工智能是否会实现其承诺,并能够真正使ITSM更容易、更有效呢?这就是我们即将在此系列中所探讨的"…

计网笔记--网络层

1--网络层概述 网络层主要问题: ① 网络层向运输层提供怎样的服务? (可靠或不可靠) ② 网络层寻址问题(IP 地址) ③ 路由选择问题 (路径) 重点在于:TCP/IP协议栈 2--网络…

使用Jetpack Compose实现PopupMenu

Jetpack Compose是Google推出的现代化UI工具包,使用声明式UI模式构建用户界面。它有许多内建的Composable函数,让开发者可以轻松实现各种界面元素,包括PopupMenu。在这篇博客中,我们将深入研究如何在Jetpack Compose中创建PopupMe…

Reaxys数据库免费使用方法

Reaxys 于 2009 年推出,作为 CrossFire与Beilstein 数据库的后继者。Reaxys继承了基本化合物、化学反应、化学性质、相关文献数据、合成计划信息的物质数据检索功能,以及来自选定期刊和专利的实验程序。Reaxys是一款商业化学信息检索工具,一般…

VS2019 Web应用如何添加Area区域:新搭建基架的项目

貌似跟以往不一样,VS2019 Web应用如何添加Area区域:新搭建基架的项目,如下图: 1、右键项目添加 2、弹出“添加已搭建基架的新项”对话框,选择“区域” 3、填写新基架项目名称-Area 4、自动创建成功 5、后续添加控制器…

QxRibbon 知:麒麟 ukui 搭建 Qt5 开发环境

文章目录 安装 openEuler 22.09 虚拟机安装 Qt5 开发环境构建 QxRibbon 安装 openEuler 22.09 虚拟机 VMware 安装 openEuler 22.09 桌面版(提供了 ukui 和 kiran 桌面)虚拟机 平台:x86_64 虚拟机配置:4核、4G内存、40G磁盘&…

如何在 Django框架下完成 websocket 连接

文章目录 websocket 和 socket 连接的区别与 Django 建立 websocket 连接ASGI v.s. WSGIDjango > 3.0ChannelsDaphnesettings.pyconsumers.py & routing.py 测试 websocket 连接postman websocket 和 socket 连接的区别 Websocket 和 Socket 是两种不同的通信协议&#…

Python采集二手车数据信息,看看什么车最适合你

目录标题 前言环境使用:模块使用:代码展示尾语 💝 前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 环境使用: Python 3.8 Pycharm 模块使用: 第三方模块 需要安装的 requests >>> pip install requests parsel >>> pip install parsel c…

CTP WEB 100练(1/100)

考点:PHP代码审计 抓包发现source.php,访问下,出现了php代码 代码主体在这部分,满足三个条件:file不为空&file是字符串&checkFile通过 if (! empty($_REQUEST[file])&& is_string($_REQUEST[file])&am…

面试题:var、let、const的区别

var、let、const的区别 一、提出二、作用域不同2.1 作用域 三、变量提升四、重复声明五、可修改性六、初始值设置七、暂时性死区八、给全局添加属性总结若有错误,欢迎随时指正 一、提出 var是ES5提出的,let和const是ES6提出的。 二、作用域不同 2.1 作用…