YOLO家族系列模型的演变:从v1到v8(上)

news2024/12/22 19:43:58

YOLO V8已经在本月发布了,我们这篇文章的目的是对整个YOLO家族进行比较分析。了解架构的演变可以更好地知道哪些改进提高了性能,并且明确哪些版本是基于那些版本的改进,因为YOLO的版本和变体的命名是目前来说最乱的,希望看完这篇文章之后你能对整个家族有所了解。

在YOLO出现之前,检测图像中对象的主要方法是使用不同大小的滑动窗口依次通过原始图像的各个部分,以便分类器显示图像的哪个部分包含哪个对象。这种方法是合乎逻辑的,但非常迟缓。

经过了一段时间的发展,一个特殊的模型出现了:它可以暴露感兴趣的区域,但即便是这样还是太多了。速度最快的算法Faster R-CNN平均在0.2秒内处理一张图片,也就是每秒5帧。

在以前的方法中,原始图像的每个像素都需要被神经网络处理几百次甚至几千次。每次这些像素都通过同一个神经网络进行相同的计算。有没有可能做些什么来避免重复同样的计算?

事实证明这是可能的。但是为了这个,我们必须稍微重新定义这个问题。如果早些时候它是一个分类任务,那么现在它已经变成了一个回归任务。

YOLO / YOLOv1

第一个YOLO模型,也称为YOLOv1。

Joseph Redmon, Santosh Divvala, Ross Girshick, Ali Farhadi

“You Only Look Once: Unified, Real-Time Object Detection”2015/06 https://arxiv.org/pdf/1506.02640.pdf,

除了基于Darknet框架的官方实现外,在其他常用框架上也有大量各种流行的实现,这里就不列举了

Pascal VOC 2007 上的实时系统比较的性能和速度。Fast YOLO 是 Pascal VOC 检测记录中最快的模型,而其准确度也是其他实时检测器的两倍。 YOLO 的精度比Fast 版本高 10 mAP,但速度仍远高于其他模型。

架构

在结构上,YOLO 模型由以下部分组成:

  • Input ——输入图像被馈送到的输入层
  • Backbone ——输入图像以特征形式编码的部分。
  • Neck ——这是模型的其他部分,用于处理由特征编码的图像
  • Head(s)——一个或多个产生模型预测的输出层。

该网络的第一个版本基于 GoogLeNet 的架构。 它是与 MaxPool 交错的级联卷积层。 级联以两个完全连接的层作为输出。

作者训练了一个更快版本的 Fast YOLO 架构,包含更少的卷积层(9 个而不是 24 个)。 两个模型的输入分辨率都是 448x448,但是网络主要部分的预训练就像一个分辨率为 224x224 的分类器。

在这个架构中,原始图片被分成 S x S 个单元格(最初 7 x 7),每个单元格(cells)预测 B 个边界框(bbox)和这些边界框中任何对象存在的置信度,以及对象所属分类C的概率。 每边的单元格数是奇数,因此图像的中心有一个单元格。 这比偶数有优势,因为照片的中心通常有一个主要主题。主要预测是在中心单元格中进行的。 在单元格数量为偶数的情况下,中心可能位于四个中央单元格中的某个位置,这会降低网络的置信度。

而置信度值表示模型对给定的边界框包含某个对象的置信度以及边界框预测其位置的准确度。 其实这是IoU(truth, pred)对一个物体存在的概率的乘积。 如果单元格中没有对象,则置信度为零。

每个边界框由 5 个数字组成:x、y、w、h 和 confidence。 (x, y) — bbox-a 中心在单元格内的坐标,w 和 h — bbox-a 的宽度和高度相对于整个图片的尺寸,即归一化从 0-1表示. 置信度是 bbox 预测值和真实值之间的 IoU。 每个单元格还预测对象类别的 C 的条件概率。 无论 bbox B 的数量如何,每个单元格只预测一个分类。

所以在一次前向传播中预测出S*S*B个边界框。但是这里大多数的置信度很低,所以通过设置一定的阈值,可以过滤掉很大一部分。但是与其他的模型相比,这样的检出率提高了几个数量级。这是非常符合逻辑的,因为现在所有类别的所有边界框都可以在一次传播中预测出来,这就是You Only Look Once的由来。原始论文中也给出了在Titan X GPU上的FPS从45到155 的巨大提升。

虽然 mAP 的准确率与之前的算法相比还是有一些下降,但是在一些问题上实时检测更为重要,也就是说它是在不牺牲性能的情况下在速度上得到了巨大的提升。

获取边界框

因为与物体中心相邻的cells也会产生bboxes,导致会出现很多的结果,所以需要从中选出最好的。 所以这里使用了非最大抑制技术,其工作原理如下。类的所有 bboxes 置信度低于给定阈值的那些将被丢弃。 对于其余部分,执行通过 IoU 进行成对比较。 如果两个比较的 IoU > 0.5,则丢弃置信度较低的 bbox。 否则两个 bbox 都保留在列表中。 因此相似的 bboxes 被稀疏化了(也就是合并了)。

损失函数

复合函数形式为:

第一项是对象中心坐标的损失,第二项是bbox的维度,第三项是对象的类别,第四项是对象不存在时的类别,第五项是在bbox中找到某个物体的概率损失。

lambda 系数是用来防止由于大多数单元格中没有对象的情况下导致置信度变为零。 1(obj, i) 表示对象的中心是否出现在单元格 i 中,1(obj, i, j) 表示单元格 i 中的第 j 个 bbox 负责此预测。

优点

  • 速度非常快:比当时的竞争对手有更好的概括能力-在另一个领域测试(图片;在ImageNet上进行训练)表现出更好的表现。
  • 减少了图像背景部分的误报。

问题

  • 因为每个单元格2个框和一类对象。所以如果有一堆小物体则很难被识别。
  • 原始图像连续几次下采样导致精度不高。
  • 损失同样惩罚大框和小框上的错误。作者试图通过取大小的根来补偿这种影响,但这并没有完全消除这种影响。

YOLOv2 / YOLO9000

Joseph Redmon, Ali Farhadi

“YOLO9000: Better, Faster, Stronger”2016/12 https://arxiv.org/pdf/1612.08242.pdf

Pascal VOC 2007 上的测试。YOLOv2 比以前的方法更快、更准确。 它还可以在不同的分辨率下运行,可以在速度和准确性之间轻松权衡。 每个 YOLOv2 实际上是具有相同权重的相同训练模型,只是以不同的大小进行评估。

上面的时间都是在Geforce GTX Titan X 进行的测试结果。

架构特点

作者对模型的第一个版本进行了多项改进。

在所有卷积层中删除了 dropout 并添加了 batchnorm。

以 448x448 分辨率(YOLOv1 为 224x224)作为分类器进行预训练,然后将最终网络缩小为 416x416 输入以生成奇数个(13x13)单元。

移除了全连接层。 开始使用完全卷积的和锚点来预测 bbox(如 Faster RCNN)。 这减少了空间信息的损失(就像在 v1 中的完全连接层中一样)。

删除了一个 maxpool 以增加特征的细节(分辨率)。 在v1中,每张图片只有98个bbox; 在 v2 中使用 anchors,结果是 1000 多个 bbox,虽然 mAP 下降了一点,但召回率显着提高,这使得提高整体准确率成为可能。

维度先验, bboxes 的大小和位置不是像 FasterRCNN 那样手动随机选择的,而是通过 k-means 聚类自动选择的。在小 bbox 上使用具有欧式距离的标准 k-means会导致检测误差更高,所以为k-means选择了另一个距离度量,1 - IoU(box, centroid)。 选择 5 作为簇数量的折衷选项。 测试表明,对于以这种方式选择的 5 个质心,平均 IoU 与 9 个anchors大致相同。

直接位置预测, 最初使用anchors 时,与确定中心坐标 (x, y) 相关的网络训练存在不稳定性——这是由于网络权重是随机初始化的,并且坐标预测是线性的,系数不受限制。 所以预测相对于anchor中心的偏移量,其中系数的正确范围是[-1; 1]是比较复杂的,所以更改预测 bbox 相对于单元格中心的系数——范围 [0; 1] 并使用 sigmoid 对其进行限制。 网络为每个单元格预测 5 个 bbox,每个 bbox 有 5 个数字:tx、ty、tw、th、to。 bboxes的预测参数计算如下:

具有维度先验和位置预测的bbox,会预测bbox的宽度和高度作为簇质心的偏移。然后使用sigmoid函数预测bbox相对于过滤器应用程序位置的中心坐标。

细粒度特性。特性映射现在是13x13。

多尺度的训练。由于网络是完全卷积的,它的分辨率可以通过简单地改变输入图像的分辨率来动态改变。为了提高网络的鲁棒性,其输入分辨率每10批次改变一次。由于网络缩小了32倍,因此输入分辨率从集合{320,352,…,608}中选择。网络的大小从320x320调整到608x608,并且继续训练。

作为v1的骨干的VGG-16明显已经不合适了,所以在第二个版本中使用了Darknet-19:

训练分类器后,从网络中移除最后一个卷积层,增加3个3x3的1024核卷积层,最后增加一个1x1的卷积输出结果数。以VOC为例,输出为5个bbox,每个bbox有5个坐标,每个bbox有20个类,总共有125个卷积核。

层次分类, 在 v1 中分类是属于同一类对象并且相互排斥,而在 v2 中引入了 WordNet 树结构,这是一个有向图。 每个类别中的类都是互斥的,并且有自己的 softmax。 所以如果图片显示模型已知的品种的狗,则将返回该狗和特定品种的类别。 如果它是模型未知品种的狗,那么它只会返回狗,而不显示品种。 所以出现了 YOLO9000:具有 3 个先验而不是 5 个和 9418 个对象类的 v2。

ImageNet与WordTree的预测。大多数ImageNet模型使用一个大的softmax来预测概率分布。使用WordTree,对下标执行多个softmax操作。

使用WordTree层次结构组合数据集。构建了一个视觉概念的层次树。通过将数据集中的类映射到树中的同义词集来合并数据集。上图这是一个用于演示的简化WordTree视图。

优点

  • 不仅在速度上,而且在mAP上都是SotA
  • 可以更好地检测小物体

缺点

在当时还没有找到缺点

YOLOv3

Joseph Redmon, Ali Farhadi

“YOLOv3: An Incremental Improvement”2018/04 https://arxiv.org/pdf/1804.02767.pdf

YOLOv3的运行速度明显快于具有相同性能的其他检测方法。无论是在M40还是Titan X上

架构

可以说它是对模型的增量更新,即没有基本的变化,只有一组几个改进小技巧:

  • 使用 sigmoid 计算每个 bbox 的对象得分,即给定 bbox 中存在对象的概率。
  • 从多类别分类转向多标签分类,摆脱了 softmax,转而采用二元交叉熵。
  • 对三个尺度的 bbox 进行预测,输出张量大小:N * N * (3 * (4 + 1 + num_classes))
  • 使用 k-means 重新计算了先验,并在三个尺度上得到了 9 个 bbox。
  • 新的、更深、更准确的主干/特征提取器 Darknet-53

在精度方面,Darknet-53与ResNet-152相当,但可以对GPU更有效使用,它需要的操作少了近1.5倍,FPS高了2倍。

论文也提出了一些测试后无效的方法

  • bbox 使用线性激活而不是logistic 激活来协调位移预测。
  • 使用focal loss,mAP 下降了 2 个点。
  • 用于确定真值的双重 IoU :在 Faster R-CNN 中,IOU 有两个阈值,通过它们确定正例或负例(>0.7 正例,0.3–0.7 忽略,<0.3 负例)

优点

发布时的检出率和检测精度高于竞争对手

缺点

在当时还没有找到缺点

Joseph Redmon退出计算机视觉领域

Joseph Redmon 在YOLOv3以后虽然宣布退出计算机视觉领域,即使他不再研究改进YOLO,也不断有后来者继续提高YOLO算法的精度与速度,YOLOv4、YOLOv5,YOLOX等的出现也说明了YOLO算法不会因为Joseph Redmon 的退出而止步不前,但是混乱的命名就开始到来了。

YOLOv4

Alexey Bochkovskiy, Chien-Yao Wang, Hong-Yuan Mark Liao

“YOLOv4: Optimal Speed and Accuracy of Object Detection”2020/04 , https://arxiv.org/pdf/2004.10934.pdf

“Scaled-YOLOv4: Scaling Cross Stage Partial Network”2020/11, https://arxiv.org/pdf/2011.08036.pdf

YOLOv4的运行速度比efferentdet快两倍,但性能相当。分别提高了10%和12%的AP和FPS。

组成v4的部分如下:

在v4中,采用了比 v3 中更强大的 CSPDarknet53 网络作为骨干网络。 CSP 意味着存在跨阶段部分连接:一种网络非相邻层之间的连接。 层数保持不变,并添加SPP 模块。

瓶颈层:由一个PANet模块组成。它不是用于FPN,而是用于路径聚合,即用于连接(不是求和)来自不同规模的激活。

输出头的概念保持不变

除了架构上的变化之外,还对学习过程进行了一些改进。

  • 应用了SAT(自我对抗训练)-一种由2个阶段组成的增强方法。在第一个阶段, 在第一阶段,不是进行网络的权重训练,将图片修改为让网络认为所需的对象不在其上时状态(对抗性攻击)。 在第二阶段,网络训练检测在第一阶段改变的图片中的对象。
  • 感受野增加,注意机制被使用。
  • 应用许多附加类型的图像增强和类平衡。

对于骨干用于训练时增加了CutMix +Mosaic 增强,DropBlock正则化,类标签平滑,用于推理使用Mish激活,跨阶段部分连接(CSP),多输入加权剩余连接(MiWRC)

检测器的训练改进,ciu -loss, CmNN, DropBlock,Mosaic ,SAT,消除网格敏感性,单一地面真理的多锚,余弦退火学习率调度,最优超参数,训练期间的随机形状,推理时Mish, SPP-block(空间金字塔池),SAM-block(空间注意力模块),PAN, DIoU-NMS

使用更新的网络训练,不影响FPS,但提高了准确性。

Mosaic 是一种新的数据增强方法

应用一些增强的类型

修改的SAM

修改的PAN

Scaled YOLOv4

在关于v4的第一篇发布六个月后,作者又发布了另一篇论文,在其中他们发布了扩展网络架构的机制。该机制不仅包括对输入分辨率、网络宽度和深度的缩放,还包括对网络结构本身的缩放。

虚线仅表示模型推理的延迟时间,实线包括模型推理和后处理。

YOLOv4-large的体系结构,包括YOLOv4-P5、YOLOv4-P6和YOLOv4-P7。虚线箭头表示将相应的CSPUp块替换为CSPSPP块。

优点

v4不仅比竞争对手更快、更准确,而且还可以在相对较弱的设备上进行训练(例如一台1080Ti)。为了进行比较,EfficientDet需要在v3 - 32 TPU类型(v3) - 32 TPU v3核- 512 GiB Total TPU内存上进行训练。

v4也内置在OpenCV中,可以直接调用,而不需要darknet模型

许可证允许任何使用,没有限制

YOLOv5

Glenn Jocher

由于改做者没有参与YOLO之前版本的架构开发,只是参与了实现,所以从伦理的角度来看,使用“YOLOv5”这个名字的合法性似乎值得怀疑。 网上也已经有不少关于这个的讨论,但目前这个名字已经确定了,我们这里就按照约定俗成来处理了。

论文未发布,但是发布了源代码:

https://github.com/ultralytics/yolov5, 10.7k/29.8k, GPL-3.0 license

注意:它是v3(不是v4)的改进版本,是在v4发布后2个月后发布。性能比v3好,但比v4差。

Yolo5的网络架构由三部分组成:(1)Backbone: CSPDarknet, (2) Neck: PANet, (3) Head: Yolo Layer。数据首先输入到CSPDarknet进行特征提取,然后输入到PANet进行特征融合。最后Yolo层输出检测结果(类别、分数、位置、大小)。

增强方式:scaling, color space adjustments, mosaic.

在v5中,与v4一样,实现了:

  • CSP特性的瓶颈
  • 用于特征聚合的PANet

优点

  • 代码实现很容易让人看懂
  • 能够部署到移动和低功耗设备。
  • 快速训练

缺点

  • 在一些测试中比v4差
  • GPL-3.0许可证要求后续使用者公开源代码(对于商业不友好)

YOLOX

Zheng Ge, Songtao Liu, Feng Wang, Zeming Li, Jian Sun

“YOLOX: Exceeding YOLO Series in 2021”2021/07, https://arxiv.org/pdf/2107.08430.pdf,

精确模型的速度-精度权衡(左)、移动设备上精简模型的尺寸-精度曲线(右)和其他模型对比。

COCO 2017不同模型的速度和精度的比较。所有的模型都训练了300个epoch。

和v5一样,不是官方开发的架构,该模型基于 YOLOv3-Darknet53。

创新点:

解耦头:通过分裂分支来解决分类和回归问题之间的冲突

YOLOv3头和论文所提出的解耦磁头之间的差异。对于FPN的每一层特征,首先采用1x1的conv层,将特征通道减少到256个,然后增加两个并行分支,每个分支有两个3x3的conv层,分别用于分类和回归任务。IoU分支被添加到回归分支中。

数据增强: mosaic, mixup, random horizontal flip, colorjitter.

论文说明在 ImageNet 上进行初步训练并没有带来任何优势,因此所有模型都是从头开始训练的。

Anchorless,Anchor有它们自己的问题——例如。 需要进行初步聚类分析以确定最佳锚点。 锚点还增加了检测头的复杂性和每张图像的预测数量。 摆脱锚点降低了 GFLOPs 并增加了 mAP。

多重正采样, 在没有anchors的情况下,应该从整张图片中只选择一个正样本,这会导致其他高质量的预测被忽略。 使用此类预测可以产生有用的梯度,从而减少训练期间正样本和负样本的不平衡。 因此YOLOX 在中心有一个 3x3 的区域用于正采样,提高了网络的准确性。

SimOTA。高级标记赋值(标记赋值为每个基本真值对象定义了正采样和非活跃采样)。选择样本对的特殊算法加快了学习速度。

其他改进:用于更新权重的指数移动平均数、余弦 lr 调度、回归分支的 IoU 损失、类分支的 BCE 损失、SGD 优化器等。

在COCO验证上,YOLOX-Darknet53的AP(%)。所有模型都在V100上以640x640分辨率进行测试,具有fp16精度和batch=1。本表中的延迟和FPS均为未经过后处理的测量值。

优点

  • 发布时的检测精度,检出率高于竞争对手
  • Apache-2.0开放许可证(商业友好)

PP-YOLOv1/v2/E

Baidu Inc.

  1. “PP-YOLO: An Effective and Efficient Implementation of Object Detector”2020/07, https://arxiv.org/pdf/2007.12099.pdf
  2. “PP-YOLOv2: A Practical Object Detector”2021/04, https://arxiv.org/pdf/2104.10419.pdf
  3. “PP-YOLOE: An evolved version of YOLO” 2022/03, https://arxiv.org/pdf/2203.16250.pdf

该模型基于百度的PADDLE框架编写,意义不大,知道就行了(这是我个人意见,供参考)

PP-YOLOE-I在COCO上实现了51.4 mAP,在Tesla V100上实现了78.1 FPS,与PP-YOLOv2相比提高了1.9 AP和9.2 FPS。

PP-YOLO

作者没有寻找合适的backbone ,也没有各种扩充,也没有通过NAS优化超参数。他们没有采用Darknet-53,而是采用了常用的ResNet50-vd,并将一些卷积层替换为可变形的卷积层。增强使用了基本的MixUp。

使用技巧:

从64批增加到192批,相应修正了LR;

网络权重的指数移动平均(EMA): lambda = 0.9998 -分散因子。

DropBlock 是一种 dropout 变体,其中特征图区域被一起丢弃。 仅适用于 FPN,如果用于 backbone 导致性能下降。

IoU 损失,在 YOLOv3 中有 L1,但这不是 bboxes 最有效的损失。 作者使用了 IoU 损失。

IoU Aware — 在 YOLOv3 中,对于置信度值,类概率乘以对象值,并没有提高定位精度。 为了解决这个问题,添加了一个 IoU 预测分支来测量定位精度。 在训练 IoU aware 时,损失参与 IoU 预测分支的训练。 通过推理,预测的 IoU 乘以类别概率和客观性,从而提供更好的定位精度,而计算复杂度实际上并没有增加。

网格敏感

Matrix NMS

CoordConv — 卷积 SPP(空间金字塔池)的附加通道

ImageNet 预训练蒸馏模型

消融研究如上图所示

PP-YOLOv2改进

FPN被PANet取代

Mish 激活

增加了输入图像的大小

修改了IoU aware损失:

消融研究:

PP-YOLOv2的 detection neck架构

试了但没成功的技巧:

余弦学习率衰减

在再训练期间冻结权重会降低mAP

PP-YOLOE改进

Anchorless

CSPRepResNet backbone

Task Assignment Learning,一种有效选择批次样本的算法

ET-head,一种替代解耦 head loss 的方法。 VFL = varifocal loss, DFL = distribution focal loss

消融研究

架构

优点

  • 在TensorRT上部署的能力
  • 性能良好
  • Apache-2.0开放许可证

缺点

非标准框架(PADDLE不是正经框架😉)

训练需要大量的显卡(PP-YOLO: 8x V100 GPU)

上篇结束,明天我们发布下篇,包括YOLOR, YOLOv6, YOLOv7,还有刚发布的v8

https://avoid.overfit.cn/post/2a446d31ab824cde8f35b2aef7104984

作者:Maxim Ivanov

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

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

相关文章

Android 深入系统完全讲解(18)

3 su Root 的相关代码原理 在 Android4.4 的时候&#xff0c;我们经常能够看到 Root Apk&#xff0c;作为发烧友操作这个才算是真的会 Android。那么学习 su 的代码&#xff0c;就是非常有意义的事情。这一节来说下 su 是如何管理权限 的&#xff0c;如何调用授权 Apk&#xf…

撒贝宁搭档某网红,直播带货人气破十万,央视主持人能接私活吗

随着互联网的发展&#xff0c;直播已经司空见惯&#xff0c;直播带货更是成为家常便饭&#xff0c;尤其是那些有了名气的人。就在不久前&#xff0c;央视著名主持人撒贝宁&#xff0c;也开启了自己的直播带货首秀&#xff0c;不得不说央视主持人还是多才多艺。 在很短时间内&am…

SpringBoot 自定义拦截器

SpringBoot 自定义拦截器 目录SpringBoot 自定义拦截器一、自定义拦截器二、编写控制器三、添加拦截器对象&#xff0c;注入到容器的配置类中另一种写法四、最后application运行一、自定义拦截器 创建登录拦截器 com/bjpowernode/springbootinterceptor02/interceptor LoginI…

改进YOLOv7系列:结合丰富的梯度流信息模块,来自YOLOv8的核心模块

&#x1f4a1;统一使用 YOLOv7 代码框架&#xff0c;结合不同模块来构建不同的YOLO目标检测模型。&#x1f31f;本项目包含大量的改进方式,降低改进难度,改进点包含【Backbone特征主干】、【Neck特征融合】、【Head检测头】、【注意力机制】、【IoU损失函数】、【NMS】、【Loss…

【Linux操作系统】进程优先级和进程切换

文章目录一.进程优先级1.三段论谈优先级2.PRI和NI二.进程切换1.进程的四个特性2.上下文数据保护和恢复一.进程优先级 1.三段论谈优先级 什么是优先级&#xff1f;它等同于权限吗&#xff1f; 定义: cpu资源分配的先后顺序&#xff0c;就是指进程的优先权&#xff08;priority…

SpringBoot + MDC 实现全链路调用日志跟踪

写在前面MDC介绍MDC使用MDC 存在的问题解决MDC存在的问题写在前面通过本文将了解到什么是MDC、MDC应用中存在的问题、如何解决存在的问题基于 Spring Boot MyBatis Plus Vue & Element 实现的后台管理系统 用户小程序&#xff0c;支持 RBAC 动态权限、多租户、数据权限、…

Shader踩坑笔记UV操作

一、UV坐标范围0-1 // 坐标范围 0-1&#xff0c;原点在画布左下角 vec2 uv FRAGCOORD.xy / iResolution.xy; 有两个变量 1、FRAGCOORD是godot引擎自带的变量表示纹理坐标 2、iResolution我自定义的变量&#xff0c;输入画布尺寸 使用uniform关键词可以创建自定义变量 比…

戴尔电脑怎么录屏?这6个方法教你轻松录屏

无论您是需要录制屏幕活动以创建在线发布的演示文稿、录制网络研讨会的屏幕以供日后参考&#xff0c;还是出于任何其他原因——如果您使用的是戴尔或类似 PC&#xff0c;您有多种选择。那么&#xff0c;让我们来谈谈如何在戴尔笔记本电脑上进行屏幕记录。 在戴尔笔记本电脑上录…

机器人介绍、应用、前景

机器人介绍、应用、前景1 介绍1.1 定义1.2 作用1.3 发展历程1.4 分类1.5 三大顾虑1.6 前景2 种类工业机器臂协作机械臂工业移动机器人复合机器人扫地机器人服务机器人机器狗人形机器人无人机3 技术3.1 机器人学分类3.2 功能分类3.2.1 感知3.2.2 决策3.2.3 执行AGV减震机构减速机…

经典问题:Python实现生产者消费者模式的多线程爬虫

Python实现生产者消费者模式的多线程爬虫1. 多组件的Pipeline技术架构2. 生产者消费者爬虫的架构3.多线程数据通信的queue.Queue4. 代码编写实现生产者消费者爬虫1. 多组件的Pipeline技术架构 复杂的事情一般都不会一下子做完&#xff0c;而是会分很多中间步骤一步步完成。 …

二十七、Kubernetes中DaemonSet(DS)控制器详解

1、概述 在kubernetes中&#xff0c;有很多类型的pod控制器&#xff0c;每种都有自己的适合的场景&#xff0c;常见的有下面这些&#xff1a; ReplicationController&#xff1a;比较原始的pod控制器&#xff0c;已经被废弃&#xff0c;由ReplicaSet替代 ReplicaSet&#xff…

LeetCode题目笔记——2293. 极大极小游戏

文章目录题目描述题目难度——简单方法一&#xff1a;模拟代码/Python方法二&#xff1a;优化本地修改代码/python代码/C总结题目描述 给你一个下标从 0 开始的整数数组 nums &#xff0c;其长度是 2 的幂。 对 nums 执行下述算法&#xff1a; 设 n 等于 nums 的长度&#x…

理论——加密法

前言写C写多了&#xff0c;给大伙换换口味&#xff0c;这篇文章将会给大家带来几种加密法&#xff0c;以后写情书有素材了吧&#xff1f;还不快谢谢我~正文凯撒加密法简介在密码学中&#xff0c;恺撒密码是一种最简单且最广为人知的加密技术。它是一种替换加密的技术&#xff0…

因果推断6--多任务学习(个人笔记)

目录 1多任务学习 1.1问题描述 1.2数据集 1.3网络结构 1.4结果 2因果推断使用多任务方式 2.1DRNet 2.2Dragonet 2.3Deep counterfactual networks with propensity-dropout 2.4VCNet 3思考 1多任务学习 keras-mmoe/census_income_demo.py at master drawbridge/ke…

一种穷人式的内存泄露检测方式

对于检测程序代码中的资源泄露问题&#xff0c;市面上已经有很多工具了&#xff0c;但是今天我再来介绍一种新的方式&#xff0c;这种方式不需要安装任何工具或者特定的编译器开关&#xff0c;也不需要第三方库。 那就是&#xff1a;一直保持程序运行&#xff0c;直到泄露的原因…

【牛客网】HJ99 自守数、OR86 返回小于 N 的质数个数

作者&#xff1a;一个喜欢猫咪的的程序员 专栏&#xff1a;《Leetcode》 喜欢的话&#xff1a;世间因为少年的挺身而出&#xff0c;而更加瑰丽。 ——《人民日报》 目录 HJ99 自守数 OR86 返回小于 N 的质数个数 HJ99 自守数 自守数_牛客…

Linux系统之安装Linux管理工具inpanel

Linux系统之安装Linux管理工具inpanel一、inpanel介绍1.inpanel简介2.inpanel特点二、检查本地系统环境1.检查系统版本2.检查系统内核版本三、下载inpanel软件包1.创建下载目录2.下载inpanel软件3.查看源码inpanel文件四、部署inpanel应用1.一键安装inpanel2.查看服务端口五、关…

【双U-Net残差网络:超分】

Dual U-Net residual networks for cardiac magnetic resonance images super-resolution &#xff08;心脏磁共振图像超分辨率的双U-Net残差网络&#xff09; 目前&#xff0c;心脏磁共振&#xff08;CMR&#xff09;成像能够提供心脏全方位的结构和功能信息&#xff0c;已成…

难道你也不能放烟花嘛?那就来看看这个吧!

又到了一年一度的春节时期啦&#xff01;昨天呢是北方的小年&#xff0c;今天是南方的小年&#xff0c;看到大家可以愉快的放烟花&#xff0c;过大年很是羡慕呀&#xff01;辞旧岁&#xff0c;贺新春&#xff0c;今年我呀要放烟花&#xff0c;过春节&#xff01;&#x1f9e8;。…

农产品商城简单demo-Android

项目概述 随着科学技术的不断提高和社会经济的不断发展&#xff0c;一些农产品的销售逐渐的落后于社会信息化的潮流之中&#xff0c;尤其是一些年龄较大的中老年人来说是极为不便的&#xff0c;国家大力倡导并十分重视三农问题&#xff0c;倡导推动农村农业的发展&#xff0c;为…