【YOLO 系列】YOLO v4-v5先验知识

2023-05-16

文章目录

    • 输入端
      • Mosaic数据增强
      • Self-Adversarial Training
      • CmBN
    • 主干网络
      • Mish激活函数
      • DropBlock 正则化
      • CSPNet
      • Focus结构
    • Neck
      • PANet
    • 输出
      • 目标损失函数
        • IoU Loss
        • GIoU Loss
        • DIoU Loss
        • CIoU Loss
        • 总结
      • DIOU_nms
    • 参考

YOLO v4和v5版本在v3版本的基础上,组合了多种先进算法提升精度。为了能快速理解YOLO v4和v5,我们需要了解各种改进方法。此篇博文从输入端、主干网络、Neck和输出等四个方面简要介绍v4和v5中用到的改进方法。

输入端

Mosaic数据增强

数据增广:Mixup, Cutout 和 CutMix

Mosaic是一种数据增强方法,主要思想是将四张图片进行随机缩放、随机剪裁、随机排布的方式拼接到一张图上。CutMix数据增强方式是将两张图片进行拼接,然后将拼接好的图片送入到主干网络中。Mosaic则是将四张图片进行拼接。将拼接好的图片传入到主干网络当中去学习,相当于一下子传入了四张图片,极大地丰富了检测物体的背景,而且BN计算时,会计算四张图片的数据,使得batch size的不需要太大。

Mosaic数据增广

Self-Adversarial Training

自对抗训练(Self-adversarial training,SAT)是一种新的数据增强方式,分两个前后阶段进行操作。在第一阶段,神经网络改变原始图像而不是网络权重,通过这种方式,神经网络对自己进行对抗性攻击,改变原始图像,从而产生图像上没有所需物体的欺骗;在第二阶段,训练神经网络以正常的方式检测该修改图像上的物体。

CmBN

在这里插入图片描述

目前大部分流行的模型都会用到Batch Normalization,BN可以加快模型的收敛速度,在一定程度上缓解深层网络“梯度弥散”的问题。对一个batch,首先求出batch中所有特征图的均值和方差,然后对输入特征图进行归一化,将归一化的结果乘以尺度因子 γ \gamma γ,然后加上偏移量 β \beta β,得到最后输出。BN是在一个batch中计算所有均值和方差,当batch size越大时,均值和方差越接近整个训练集的均值和方差,所以一般训练时,需要将batch size尽可能设置大些。但是当batch size较小的时候,BN的效果会变差。

batch size太小,本质上还是数据量太少,不能近似整个数据集。CBN(Cross Batch Normalization)引入时间维度,通过计算前几个迭代计算好的均值和方差,一起计算本次迭代的均值和方差,通过这种方式变相扩大了batch size。前几个迭代的均值和方差由前几个迭代的网络参数计算得到的,在本轮迭代中计算BN时,前几轮迭代的参数已经过时了。CBN中引入泰勒公式解决上述问题。具体推导见论文。

CmBN是基于CBN改进的,CmBN是将大batch中的4个mini-batch看做一个整体,不需要前几个迭代时刻的BN参数。在大batch中的4个mini-batch中使用CBN进行计算。

主干网络

Mish激活函数

Mish激活函数是光滑的非单调激活函数,定义为: f ( x ) = x ⋅ t a n h ( l n ( 1 + e x ) ) f\left( x \right) = x \cdot tanh \left( ln \left( 1 + e^{x}\right) \right) f(x)=xtanh(ln(1+ex)). 非单调这种性质有助于保持小的负值,从而稳定网络梯度流。

Mish激活函数
如上图所示,Mish函数无上界有下界。无上界属性是任何激活函数都需要的特性。有下界属性有助于实现强正则化效果。

DropBlock 正则化

DropBlock是一种针对卷积层的正则化方法,它是将整块的特征去除。如下图所示,(b)和(c)绿色区域中的激活单元包含输入图像的语义信息。因为临近的激活单元包含的语义信息比较接近,随机去除激活单元并不是有效的。相反,连续的区域包含特定的语义信息,去除连续的区域能够迫使剩余的单元学习可分类输入图像的特征信息。

DropBlock
下图是DropBlock的算法伪代码和图像示例。DropBlock并不应用在推理阶段,而是应用在训练阶段。DropBlock有两个超参数,block_size和 γ \gamma γ值的设定。 γ \gamma γ服从伯努利公式 γ = 1 − k e e p p r o b b l o c k s i z e 2 f e a t s i z e 2 ( f e a t s i z e − b l o c k s i z e + 1 ) 2 \gamma = \frac{1-keep_prob}{block_size^{2}} \frac{feat_size^{2}}{\left(feat_size - block_size + 1 \right)^{2}} γ=blocksize21keepprob(featsizeblocksize+1)2featsize2。keep_prob固定值效果不好,需要一个线性衰减过程,从最初的1到设定的阈值。

DropBlock伪代码

CSPNet

跨阶段局部网络(Cross Stage Partial DenseNet, CSPNet)的设计目的是使网络架构能够实现更丰富的梯度组合,同时还减少计算量。CSPNet通过将基础层的特征图划分为两部分,然后通过跨阶段层次结构进行合并实现此目标。CSPNet论文作者的主要思想是:通过分割梯度流,使梯度流通过不同的网络路径传播。通过切换串联或者过渡步骤,传播的梯度信息可以具有较大的相关性差异。

下面两图分别是DenseNet和CSPDensNet单阶段架构图。DenseNet的每个单阶段包含一个Dense Block和一个Transition Layer。相比于DenseNet,CSPDenseNet将输入特征层 x 0 x_{0} x0在通道层面拆分成两部分, x 0 = [ x 0 ′ , x 0 ′ ′ ] x_{0} = [x_{0}', x_{0}''] x0=[x0,x0′′],其中 x 0 ′ ′ x_{0}'' x0′′进入局部Dense Block,与在DenseNet中的操作一样; x 0 ′ x_{0}' x0直接连接到阶段的末端。

在这里插入图片描述
在这里插入图片描述

假设每个Dense Block由 k k k个Dense Layer组成,下面表格列出了DenseNet和CSPDenseNet的前向计算和权重更新方程。在DenseNet中,大量的梯度信息被重用来更新不同Dense Layer的权重,这将导致无差异的Dense Layer反复学习同样的梯度信息。在CSPDenseNet中,Dense Layer的梯度是单独积分的。没有经过Dense Block的 x 0 ′ x_{0}' x0也被单独积分。

-DenseNetCSPDenseNet
前向计算在这里插入图片描述在这里插入图片描述
权重更新在这里插入图片描述在这里插入图片描述

CSPNet可以很轻松地应用于ResNet和ResNeXt,如下图所示。由于只有一半地特征通道通过Res(X)Blocks,因此就不再需要引入bottleneck了。当固定FLOP时,这使理论上的内存访问成本(MAC)下限成为可能。
在这里插入图片描述

Focus结构

YOLO v5在图片进入主干网络前,对图片进行切片操作,执行切片操作的结构被称为Focus。Focus的具体操作是: 在一张大小为 h × w h \times w h×w的特征图中每隔一个像素取一个值组成新的特征图,那么就会得到四个大小为 h 2 × w 2 \frac{h}{2} \times \frac{w}{2} 2h×2w的特征图。假设原始的三通道图像大小为 640 × 640 × 3 640 \times 640 \times 3 640×640×3, 经过Focus结构之后,得到的特征图的大小为 320 × 320 × 12 320 \times 320 \times 12 320×320×12

在这里插入图片描述

Swim-Transform中的patch merging layer层的操作和Focus结构很相似。

class Focus(nn.Module):
    # Focus wh information into c-space
    def __init__(self, c1, c2, k=1, s=1, p=None, g=1, act=True):  # ch_in, ch_out, kernel, stride, padding, groups
        super(Focus, self).__init__()
        self.conv = Conv(c1 * 4, c2, k, s, p, g, act)      # Focus后得到的特征图通道数扩了4倍
    def forward(self, x):  # Focus操作特征图大小变化: x(b,c,w,h) -> y(b,4c,w/2,h/2)
        return self.conv(torch.cat([x[..., ::2, ::2], x[..., 1::2, ::2], x[..., ::2, 1::2], x[..., 1::2, 1::2]], 1))

Neck

目标检测领域,称主干网络和输出层之间的一些层为Neck。Yolov4和v5的Neck结构主要采用了SPP模块、FPN+PAN的方式。

PANet

下图是PANet被提出的网络结构图。(a)部分是FPN结构,FPN将高层得到的特征图进行上采样然后往下传递,为top-down的过程。高层特征图中包含丰富的语义信息,经过top-down的传播就可以使得这些语义信息传播到底层特征上,也让底层特征图包含丰富语义的信息。但是底层特征图却无法影响高层特征图。PANet引入了bottom-up的路径,让底层特征也传递到高层特征图中。

(a)(b)两个子图连在一起的过程就是:先进行up-bottom的特征融合之后,再进行bottom-up的特征融合。
在这里插入图片描述

如上图所示,采用ResNet作为基础架构,使用 { P 2 , P 3 , P 4 , P 5 } \{ P_{2}, P_{3}, P_{4}, P_{5}\} {P2,P3,P4,P5}为FPN的特征层,从 P 2 P_{2} P2 P 5 P_{5} P5,特征图2倍下采样; { N 2 , N 3 , N 4 , N 5 } \{ N_{2}, N_{3}, N_{4}, N_{5}\} {N2,N3,N4,N5}是根据 { P 2 , P 3 , P 4 , P 5 } \{ P_{2}, P_{3}, P_{4}, P_{5}\} {P2,P3,P4,P5}新生成的特征层。 N i N_{i} Ni P i P_{i} Pi的特征图大小相同。

下图是up-bottom的局部块结构。 N i N_{i} Ni相比较于 N i + 1 N_{i+1} Ni+1为高分辨率特征图。首先需要将 N i N_{i} Ni通过一个步长为2的 3 × 3 3 \times 3 3×3的卷积减少特征图大小,得到新的特征图,然后新特征图中的元素和 P i + 1 P_{i+1} Pi+1中的元素相加得到融合特征图,融合特征图再经过一个 3 × 3 3 \times 3 3×3的卷积生成 N i + 1 N_{i+1} Ni+1

在这里插入图片描述

输出

目标损失函数

目标检测的损失函数一般由分类损失函数和回归损失函数组成。近些年来,回归损失函数从直接回归bbox的4个坐标点,逐渐将bbox作为一个整体进行回归。回归损失函数的发展历程如下所示:

L1 loss–> L2 loss–> Smooth L1 Loss–>IoU Loss -->GIoU Loss --> DIoU loss --> CIoU Loss

Smooth L1 损失函数是分段函数,综合了L1 和L2的优点,在x较大时( ∣ x ∣ ≥ 1 |x| \geq 1 x1),为L1 损失函数,L1损失函数的导数为常数,保证模型训练前期有稳定的梯度。在x比较小时 ∣ x ∣ < 1 |x|<1 x<1,为L2损失函数,L2处处可导,在0值周围具有较小的梯度,波动小更加稳定。

L1,L2和Smooth L1 Loss都是独立地计算4个点的Loss,这种做法默认这4个点是相互独立的,没有考虑bbox四个坐标之间的相关性。

IoU Loss

交并比IoU(Intersection over Union),计算预测框和真实框的交集和并集的比值。假设预测框为 A A A,真实框为 B B B,那么交并比的公式定义为: IoU = A ∩ B A ∪ B \frac{A \cap B}{A \cup B} ABAB

16年论文UnitBox: An Advanced Object Detection Network中提出了IoU Loss将bbox作为一个整体做回归。

IoU Loss的定义是先求出预测框与真实框之间的交并比之后,再求负对数。用公式简要表示就是: I o U l o s s = − l n ( I o U ( b b o x g t , b b o x p r e d ) ) IoUloss = -ln \left( IoU(bbox_{gt}, bbox_{pred}) \right) IoUloss=ln(IoU(bboxgt,bboxpred))。IoU满足非负性、统一性、对称性、三角不等性,而且相比于距离损失函数还具有尺度不变性,不论bbox的大小,IoU loss的取值位于 ( 0 , 1 ) (0,1) (0,1)
在这里插入图片描述

但是当预测框和真实框不相交时,也就是 I o U ( b b o x g t , b b o x p r e d ) = 0 IoU(bbox_{gt}, bbox_{pred})=0 IoU(bboxgt,bboxpred)=0,IoU loss为0,损失函数在0处不可导,没有梯度回传,无法进行学习训练。

GIoU Loss

GIoU(Generalized Intersection over Union)引入了预测框 A A A和真实框 B B B的最小外接矩形 C C C G I o U = I o U − C ∖ ( A ∪ B ) ∣ C ∣ GIoU = IoU - \frac{C \setminus \left(A \cup B \right)}{|C|} GIoU=IoUCC(AB)。GIoU不仅可以关注重叠区域,还可关注非重合区域,能比较好地反应预测框和真实框在闭包区域的相交情况。

在这里插入图片描述

如下所示,绿色框为真实框,红色框为预测框。GIoU中加入了预测框和真实框得最小外接矩形,但是当真实框包含预测框时, C ∖ ( A ∪ B ) ∣ C ∣ = 0 \frac{C \setminus \left(A \cup B \right)}{|C|}=0 CC(AB)=0,GIoU就退化为IoU,无法确定真实框和预测框之间的相对关系。

在这里插入图片描述

DIoU Loss

由于GIoU过度依赖IoU项,尤其对水平和垂直bbox,GIoU需要更多迭代步数收敛。DIoU仅在IoU 的基础上添加一个惩罚项,直接最小化两个bbox中心点之间的归一化距离(normalized distance),这样也能比GIoU更快地收敛。

在这里插入图片描述

假设预测框为 B B B,真实框为 B g t B^{gt} Bgt
D I o U = I o U − ρ 2 ( b , b g t ) c 2 DIoU = IoU - \frac{\rho^{2} \left( b, b^{gt} \right)}{c^{2}} DIoU=IoUc2ρ2(b,bgt)
其中 b b b b g t b^{gt} bgt是预测框 B B B和真实框 B g t B^{gt} Bgt的中心点, ρ ( ⋅ ) \rho\left( \cdot \right) ρ()是欧式距离,如上图所示,红色的线段为两个框中心点之间的距离 d = ρ ( b , b g t ) d=\rho \left( b, b^{gt} \right) d=ρ(b,bgt) c c c是覆盖两个检测框的最小矩形的对角线长度。如上图所示,灰色那么DIoU loss函数被定义如下:

L D I o U = 1 − I o U + ρ 2 ( b , b g t ) c 2 L_{DIoU} = 1 - IoU + \frac{\rho^{2} \left( b, b^{gt} \right)}{c^{2}} LDIoU=1IoU+c2ρ2(b,bgt)

CIoU Loss

一个好的bbox回归损失函数应当包含三个重要的几何因素:重合区域、中心点距离和纵横比。IoU考虑到了重合区域,GIoU高度依赖IoU,DIoU同时考虑了重合区域和中心点距离。然而,bbox的纵横比的一致性仍然是一项重要的几何因素。因此,基于DIoU,CIoU中添加了bbox的纵横比,CIoU的公式定义如下:
C I o U = I o U − ρ 2 ( b , b g t ) c 2 − α u CIoU = IoU - \frac{\rho^{2} \left( b, b^{gt} \right)}{c^{2}} - \alpha u CIoU=IoUc2ρ2(b,bgt)αu
其中 α \alpha α是正超参数, u u u计算纵横比的一致性。 α \alpha α u u u的公式定义如下:
u = 4 π 2 ( a r c t a n w g t h g t − a r c t a n w h ) 2 u = \frac{4}{\pi^{2}}\left( arctan \frac{w^{gt}}{h^{gt}} - arctan \frac{w}{h}\right)^{2} u=π24(arctanhgtwgtarctanhw)2
α = u ( 1 − I o U ) + u \alpha = \frac{u}{\left(1 - IoU \right) + u } α=(1IoU)+uu

CIoU 损失函数的定义如下所示:
L C I o U = 1 − I o U + ρ 2 ( b , b g t ) c 2 + α u L_{CIoU} = 1 - IoU + \frac{\rho^{2} \left( b, b^{gt} \right)}{c^{2}} + \alpha u LCIoU=1IoU+c2ρ2(b,bgt)+αu

总结

方法优点缺点
IoUIoU具有尺度不变性;IoU的结果范围为(0,1),非负如果两个框不相交,IoU将为0,无法反映两个框的距离远近;IoU无法精确地反映两个框的重合度大小。
GIoU引入两个框的最小外接矩形,解决两个框没有交集时梯度为零的问题;GIoU不仅关注重叠区域,还关注非重合区域,能比较好地反映两个框在闭包区域的相交情况当两个框属于包含关系时,GIoU会退化成IoU。
DIoUDIoU考虑到了两个框之间的距离,重叠率和尺度,使得回归变得更加稳定DIoU没考虑bbox的纵横比
CIoU在DIoU的基础上,加入了纵横比纵横比描述的是相对值

DIOU_nms

我们先回忆一下NMS算法的具体步骤。首先按照候选框的得分对所有的候选框进行排序;选择分数最大的候选框M,将其他与M的IoU值超过阈值的框剔除;迭代这一过程直到所有的框被检测完成。在原始的NMS中,IoU用来抑制多余的检测框,重叠区域是唯一的因素,会导致两个相近物体的检测框被错误地剔除。

DIoU不仅仅考虑到了重叠区域,还考虑到两个框的中心点距离。DIoU替代IoU可作为NMS中一个较好的标准。DIoU NMS假设两个远距离的候选框中是不同的物体。对一个具有最高分数的预测框M来说,DIoU可以公式化地定义如下:

s i = { s i , I o U − R D I o U ( M , B i ) < ε 0 , I o U − R D I o U ( M , B i ) ≥ ε s_{i} = \left\{\begin{matrix} s_{i},& IoU - R_{DIoU}\left ( M,B_{i} \right ) < \varepsilon \\ 0 ,& IoU - R_{DIoU}\left ( M,B_{i} \right ) \ge \varepsilon \end{matrix}\right. si={si,0,IoURDIoU(M,Bi)<εIoURDIoU(M,Bi)ε

如上述公式所示,候选框 B i B_{i} Bi被移除需要同时考虑IoU和两个框中心点之间的距离两个因素。 s i s_{i} si是分类分数, ε \varepsilon ε是NMS阈值。

参考

  1. AlexeyAB/darknet
  2. UnitBox: An Advanced Object Detection Network
  3. Generalized Intersection over Union: A Metric and A Loss for Bounding Box Regression
  4. Distance-IoU Loss: Faster and Better Learning for Bounding Box Regression
  5. CSPNET: A NEW BACKBONE THAT CAN ENHANCE LEARNING
    CAPABILITY OF CNN
  6. DropBlock: A regularization method for convolutional networks
  7. Path Aggregation Network for Instance Segmentation
  8. Tianxiaomo/pytorch-YOLOv4
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【YOLO 系列】YOLO v4-v5先验知识 的相关文章

  • android studio导入一个已存在的项目

    在使用android studio导入一个已经存在的项目之前 xff08 xff01 xff01 xff01 记住是导入之前 xff09 xff0c 需要做三件事 xff1a 1 xff0c 查看项目的gradle wrapper grad
  • 从内部类中访问本地变量temp; 需要被声明为最终类型

    class Outer 定义外部类 private String info 61 34 hello world 34 定义外部类的私有属性 public void fun final int temp 定义外部类的方法 class Inne
  • Android学习笔记 ---- 四大组件之 Activity

    1 Activity的概念与Activity的生命周期图 xff1a Activity是一个应用程序的组件 xff0c 他在屏幕上提供了一个区域 xff0c 允许用户在上面做一些交互性的操作 xff0c 比如打电话 xff0c 照相 xff
  • Docker ubuntn 使用apt-get update报错

    在docker 容器中执行apt get update有时候会报错 xff0c 当然造成错误的原因有很多情况 xff0c 具体情况具体分析 xff0c APT Hash sum mismatch错误的常见解决方法总结这篇博客写的不错 xff
  • npm安装报错 rollbackFailedOptional verb npm-session 解决办法

    该问题一般情况是因为代理问题 xff0c npm代理和git代理都要设置 首先确认网络是否需要设置代理 如果是公司网络需要设置代理 xff0c 则设置npm代理和git代理 1 设置npm代理 1npm config set proxy a
  • Docker 安装C#编译环境

    Docker 是一个开源的应用容器引擎 xff0c 让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中 xff0c 然后发布到任何流行的 Linux或Windows操作系统的机器上 xff0c 也可以实现虚拟化 本文主要介绍Docke
  • 关于句柄中带命名空间对实际程序运行中的影响

    ROS头文件 include lt ros ros h gt 自定义msg产生的头文件 include lt topic demo gps h gt int main int argc char argv 用于解析ROS参数 xff0c 第
  • 部署Redis集群

    部署Redis集群 span class token comment 创建网卡 span span class token function docker span network create redis subnet span clas
  • ROS编译出现generate_messages() must be called after add_message_files()错误

    新人小白 xff0c 刚刚开始学ROS 编译出现这个错误 xff0c 搞了好久也没找到这个问题 xff0c 后来偶然发现了问题所在 CMake Error at opt ros kinetic share genmsg cmake genm
  • SLAM因子图构建笔记

    因子图简介 最近在读了Joan Sola所写的Course on SLAM中有关因子图部分的介绍后 xff0c 发现其中有关于因子图构建的思路觉得很有意思 xff0c 因此在这里记录一下 DBN网络 首先简单地介绍一下如何将一个SLAM问题
  • xmanager关闭linux命令,Linux下xmanager passive功能无法使用的解决技巧

    xmanager Passive可以在仅登陆ssh字符界面的情况下传输图形 xff0c 为很多开发者所喜爱 有一用户因需要调整了防火墙 xff0c xmanger passive功能便无法正常使用了 xff0c 我们该如何处理这个问题呢 到
  • liteos内核驱动和linux,移植RTOS必备基础知识

    1 基础知识 移植内核对技术的要求比较高 比较细 1 1 单片机相关的知识 栈的作用 加载地址 链接地址 重定位 几个简单的硬件知识 串口 定时器 中断的概念 1 2 Linux操作相关的知识 Linux常用命令 简单的脚本 xff1a 脚
  • matlab subs什么意思,什么是matlab subs函数?

    matlab中subs 是符号计算函数 xff0c 详细用法可以在Matlab的Command Windows输入 xff1a help subs subs 函数表示将符号表达式中的某些符号变量替换为指定的新的变量 xff0c 常用调用方式
  • 虚拟机linux装无线网卡驱动,linux无线网卡驱动安装

    环境 在笔记本里的虚拟机10 0版本 xff0c centos 6 5 无线网卡fast fw300um 第一步要查看芯片 lsusb 当你得到芯片之后接下来查看内核 xff0c 如果内核已经有芯片模块就不用再装了 xff0c 如果不支持的
  • 使用Altium Designer 20绘制双层板以及四层板

    直接入正题 1 按照正常的绘制双层板的方式新建工程文件 xff0c 加入原理图和PCB文件 xff08 如果会绘制双层板请直接看第二步 xff09 xff08 1 xff09 新建工程文件 xff08 2 xff09 选择工程类型 xff0
  • 1.1 Ubuntu18.04 ROS tcp/ip Server通信实现

    Ubuntu18 04 ROS tcp ip Server通信实现 此小节介绍tcp ip Server收发数据 xff0c 并将截取到底信息通过话题方式发布出去 下一节介绍Ubuntu18 04 ROS tcp ip client通信实现
  • 1.2 Ubuntu18.04 ROS tcp/ip Client通信实现

    Ubuntu18 04 ROS tcp ip Client通信实现 此小节介绍tcp ip Client收发数据 xff0c 测试平台为为Ubuntu18 04 与Windows系统上的网络调试助手进行通信测试 xff0c 调试助手采用的有
  • 使用Gazebo对PX4飞控进行SITL仿真

    在仿真之前 xff0c 首先需要搞清楚每个模块所代表的含义 xff0c 在这个操作中扮演什么角色 Gazebo xff1a 可以理解成对我们实际飞行物理环境的一个仿真 QGC xff1a 地面站 xff0c 不用多说 Firmware xf
  • GitLab统计代码量

    gitlab官方文档 xff1a https docs gitlab com ee api index html 1 生成密钥 登录gitlab xff0c 编辑个人资料 xff0c 设置访问令牌 2 获取当前用户所有可见的项目 接口地址
  • 【树莓派】(2)网络连接、IP设置、屏幕大小设置、VNC安装与配置

    目录 1 网络连接 1 1有线网连接 SSH协议 1 2 无线网连接 VNC 方法1 xff1a 不能联网 方法2 xff1a 能联网 2 VNC安装与配置 3 IP WiFi配置 4 屏幕大小 屏幕黑屏时间设置 1 网络连接 分为有屏幕和

随机推荐

  • Linux服务配置 配置VNC远程桌面

    一 VNC简介 VNC Virtual Network Console 是虚拟网络控制台的缩写 它 是一款优秀的远程控制工具软件 xff0c 由著名的 AT amp T 的欧洲研究实验室开发的 VNC 是在基于 UNIX 和 Linux 操
  • 异常检测 and 自编码器(2)

    文章目录 前言一 自编码器用于异常检测的网址推荐1 自编码器AutoEncoder解决异常检测问题2 基于自编码器的时间序列异常检测算法3 深度学习实现自编码器Autoencoder神经网络异常检测心电图ECG时间序列 总结 前言 上篇文章
  • python树莓派3控制蜂鸣器_树莓派3 modelB型 连接HC-SR501人体红外感应模块和蜂鸣器模块...

    连接前准备 树莓派3 modelB型一个 HC SR501传感器一只 低电平蜂鸣器模块 有源 即接上电就会响 xff0c 低电平触发 母对母杜邦线三根 实物图如下 xff1a 博主连接的不是特别美观 两个传感器的连接图分别如下 HC SR5
  • git submodule 使用教程

    1 submoude 介绍 xff08 1 xff09 项目很大参与开发人员多的时候 xff0c 需要将各个模块文件进行抽离单独管理 xff08 2 xff09 使用git submodule来对项目文件做成模块抽离 xff0c 抽离出来的
  • 为什么笔记本电脑电源适配器基本是19V供电

    为什笔记本电源适配器供电一般不是20V xff0c 不是25V xff0c 偏偏是19V呢 xff0c 我们从硬件角度聊聊这个问题 首先一个大背景是 xff0c 笔记本电池基本都是锂电池为主 xff0c 在设计上 xff0c 一般会使用多枚
  • 基于国产飞腾、Intel X86等CPU主板设计与调试入门指导

    知识就像货币 xff0c 流动才有意义 一 前言 因为我是做硬件的 xff0c 想用这样一篇文章介绍一下我们常见的电脑主板 xff0c 或者说电路板卡 xff0c 是怎么设计出来的 仅以技术之所学 xff0c 得此文章 xff0c 若有表达
  • 两台电脑直接使用一根网线传输文件

    教程 目录 xff1a https blog csdn net dkbnull article details 87933584 有时候我们需要在两台电脑之间传输几十G的大文件 xff0c 或者置换新电脑时复制文件到新电脑 xff0c 而我
  • keil5(ARM)的下载和安装教程

    Keil 5的下载与安装 下载和安装教程均在以下百度网盘链接中 链接 xff1a 百度网盘 请输入提取码 https pan baidu com s 11N8EwQRBT 5AzXmW7y1X6A 提取码 xff1a efv3
  • git 远程分支与本地分支

    前言 远程仓库上只有 1 个 master 分支 复制远程仓库的地址 3 克隆远程仓库到本地 一 注意 xff1a 本地的 head 和 master 文件都存在 xff0c 但是 remote 的 master 信息是保存在文件 git
  • ARM 自己动手安装交叉编译工具链

    一 Windows中装软件的特点 Windows中装软件使用安装包 xff0c 安装包解压后有2种情况 xff1a 一种是一个安装文件 xff08 exe msi xff09 xff0c 双击进行安装 xff0c 下一步直到安装完毕 安装完
  • ARM X210开发板的软开关按键问题

    一 X210 开发板的软启动电路详解 x210bv3 pdf 1 210 供电需要的电压比较稳定 xff0c 而外部适配器的输出电压不一定那么稳定 xff0c 因此板载了一个文稳压器件 MP1482 这个稳压芯片的作用就是外部适配器电压在一
  • pyqt5 编写串口通讯上位机_如何使用Python开发串口通讯上位机(二)

    黑色的dos窗口对于大部分来说 xff0c 页面极为不友好 xff0c 且操作不方便 xff0c 因此本篇主要讲讲如何结合QtDesigner创建一个UI并初步与串口Api链接 1 QtDesigner进行上位机页面设计 Python下的软
  • TensorRT介绍

    TensorRT 文章目录 TensorRT训练和推理的区别TensorRTTensorRT 优化和性能TensorRT 工作原理Python APIImporting TensorRT Into PythonCreating A Netw
  • Pytorch 加载图像数据(ImageFolder和Dataloader)

    Pytorch加载图像数据集需要两步 xff0c 首先需要使用 torchvision datasets ImageFolder 读取图像 xff0c 然后再使用torch utils data DataLoader 加载数据集 Image
  • S2A-NET

    S2A NET 文章目录 S2A NET基础知识引言网络架构FAMARNACL 对齐卷积ODM 实现损失函数推理消融实验 参考 基础知识 长边 13 5 135 circ
  • [已解决] New Bing Chat报错: Sorry, looks like your network settings are preventing access to this feature

    文章目录 前因解决方案参考 前因 更改全局XX xff0c 线路选择美国 xff0c 做足一切准备 xff0c 让Bing认为我是一个彻头彻尾的美国用户 高兴地以为终于能在Microsoft Edge Dev版本中体验 New Bing C
  • 腾讯手游助手修改共享目录/缓存目录/Temp文件夹路径

    使用帮助 目录 xff1a https blog csdn net dkbnull article details 87933584 我们在电脑上安装了 腾讯手游助手 后 xff0c 发现 腾讯手游助手 的 缓存目录 游戏安装目录 共享目录
  • 【大学时光】回首向来萧瑟处,归去,也无风雨也无晴

    现状 自2023年始 xff0c 人生突遇大变 相恋四年的男友 xff0c 本以为要携手步入婚姻 xff0c 奈何由于对方母亲的缘故 xff0c 不得不忍痛舍弃四年的感情 同时间段 xff0c 因实在无法再忍受不了组内的PUA气氛 xff0
  • ChatGPT背后的技术:人类反馈强化学习RLHF

    文章目录 前言Chat GPT是如何基于RLHF进行训练的RLHF 技术分解预训练语言模型训练奖励模型强化学习微调预训练模型 局限性参考 前言 随着OpenAI推出的Chat GPT火热出圈 xff0c Chat GPT背后的技术原理之一
  • 【YOLO 系列】YOLO v4-v5先验知识

    文章目录 输入端Mosaic数据增强Self Adversarial TrainingCmBN 主干网络Mish激活函数DropBlock 正则化CSPNetFocus结构 NeckPANet 输出目标损失函数IoU LossGIoU Lo