[论文阅读]YOLOV1:You Only Look Once:Unified, Real-Time Object Detection
摘要
我们提出了YOLO,一种新的目标检测方法。之前的目标检测工作重新使用分类器来执行检测。相反,我们将目标检测表述为空间分离的边界框和相关类概率的回归问题。单个神经网络在一次评估中直接从完整图像中预测边界框和类别概率。由于整个检测管道是一个单一的网络,因此可以直接对检测性能进行端到端的优化。
我们的统一架构非常快。我们的基础的
YOLO模型以每秒45帧的速度实时处理图像。该网络的一个更小版本,Fasr YOLO,每秒处理的图片达到惊人的155帧,同时mAP仍然达到其他实时探测器的两倍。与最先进的检测系统相比,YOLO会产生更多的定位错误,但更少的可能预测背景假阳性。最后,YOLO学习了对象的非常普遍的表示。当从自然图像推广到其他领域(如艺术品)时,它优于包括DPM和R-CNN的其他检测方法。
1.简介
人类瞥一眼图像,立即知道图像中有什么物体,它们在哪里,以及它们是如何相互作用的。人类的视觉系统快速而准确,使我们能够在很低的意识参与的情况下完成复杂的任务,比如开车。快速、准确的目标检测算法将允许计算机在没有专门传感器的情况下驾驶汽车,使辅助设备能够向人类用户传递实时场景信息,并释放通用、响应式机器人系统的潜力。
当前的检测系统重新使用分类器来执行检测。为了检测一个对象,这些系统采用一个分类器来对该对象分类,并在测试图像的不同位置和尺度上对其进行评估。可变形部件模型(DPM)等系统使用滑动窗口方法,其分类器在整个图像上均匀间隔的位置运行。
最近的一些方法例如R-CNN首先使用区域候选方法来在图片中生成潜在的边界框,然后再这些候选框上运行分类器。分类后进行后处理,对边界框进行细化,消除重复检测,并根据场景中其他物体对边界框进行重新定位。这些复杂的过程运行缓慢且难以优化,因为每个单独的组件必须要单独训练。
我们将目标检测重构为一个单一的回归问题,直接从图像像素到边界框坐标和类概率。使用我们的系统,你只需要看一次(YOLO)图像,就可以预测什么物体存在以及它们在哪里。
YOLO非常简单:如图一所示。单个卷积网络同时预测多个边界框和这些框的类概率。YOLO在完整图像上进行训练,并直接优化检测性能。与传统的目标检测方法相比,这种端到端的模型有几个优点。
首先,YOLO相当快,因为我们把检测作为一个回归问题,我们不需要一个复杂的检测流程。我们只需在测试时在新图像上运行神经网络来预测检测结果。我们的基本网络在Titan X GPU上没有批处理以每秒45帧的速度运行,
再快速版本中运行速度超过150 fps。这意味着我们可以实时处理流媒体视频,延迟不到25毫秒。此外,YOLO的平均精度是其他实时系统的两倍以上。有关我们的系统在网络摄像头上实时运行的演示,请参阅我们的项目网页:http://pjreddie.com/yolo/.
其次,YOLO在进行预测的时候是基于图像全局。与滑动窗口和基于区域候选的技术不同,YOLO在训练和测试期间看到整个图像,因此它隐式地编码有关类及其外观的上下文信息。Fast R-CNN是一种顶部检测方法,由于其无法看到更大的上下文,它会将图像中的背景斑块误认为是物体。与Fast R-CNN相比,YOLO的背景错误不到一半。
第三,YOLO学习对象的一般化表示。当在自然图像上进行训练并在艺术品上进行测试时,YOLO的性能远远超过DPM和R-CNN等顶级检测方法。由于YOLO的高通用性,因此在应用于新领域或未知输入时不太可能出现故障。
YOLO在精度上仍然落后于最先进的探测系统。虽然它可以快速识别图像中的物体,但很难精确定位某些物体,尤其是小物体。我们在实验中进一步考察了这些权衡。
我们所有的培训和测试代码都是开源的。各种预训练的模型也可以下载。
2.统一的检测
我们将目标检测的独立组件统一到一个单一的神经网络中。我们的网络使用整个图像的特征来预测每个边界框。它还可以同时预测图像的所有类的所有边界框。这意味着我们的网络对整个图像和图像中的所有对象进行全局推理。YOLO的设计在实现端到端训练和实时速度的同时保持高平均精度。
我们的系统将输入图像分成 S × S S \times S S×Sge 网格。如果一个物体的中心落在一个网格单元中,这个网格单元负责检测这个物体。
每个网格单元预测B个边界框和这些框的置信度得分。这些置信度分数反映了模型对边界框中有一个物体有多自信,以及它认为它所预测的盒子有多准确。形式上,我们将置信度定义为 P r ( O b j e c t ) × I O U p r e d t r u t h Pr(Object) \times IOU^{truth}_{pred} Pr(Object)×IOUpredtruth。如果该单元格中不存在对象,则置信度分数应为零。如果存在,置信度分数应该等于预测框与真实框之间的交集。
每个边界框由5个预测值组成:x, y, w, h和置信度。(x, y)坐标表示相对于网格单元边界的框的中心。宽度和高度是相对于整个图像预测的。最后,置信度预测表示预测框与任何真实框之间的IOU。每个网格单元也预测C个条件类概率, P r ( C l a s s i ∣ O b j e c t ) Pr(Class_i|Object) Pr(Classi∣Object).这些概率取决于包含对象的网格单元。无论边界框B的数量如何,我们只预测每个网格单元的一组分类概率。
在测试时,我们将条件类概率和单个边界框的置信度预测相乘,
P r ( C l a s s i ∣ O b j e c t ) ∗ P r ( O b j e c t ) ∗ I O U p r e d t r u e = P r ( C l a s s i ) ∗ I O U p r e d t r u t h Pr(Class_i|Object)*Pr(Object)*IOU^{true}_{pred}=Pr(Class_i)*IOU^{truth}_{pred} Pr(Classi∣Object)∗Pr(Object)∗IOUpredtrue=Pr(Classi)∗IOUpredtruth(1)
它为我们提供了每个盒子的特定类别的置信度分数。这些分数编码了该类别出现在框中的概率以及预测框与该对象的匹配程度。
对于PASCAL VOC的YOLO评估,我们使用S = 7,B = 2。PASCAL VOC有20个标签类,所以C = 20。我们最终的预测是一个7 × 7 × 30的张量。
2.1网络设计
我们将该模型实现为卷积神经网络,并在PASCAL VOC检测数据集上对其进行了评估。网络的初始卷积层从图像中提取特征,而全连接层预测输出概率和坐标。我们的网络架构受到了用于图像分类的GoogLeNet模型的启发。我们的网络有24个卷积层,后面是2个全连接层。我们没有使用GoogLeNet使用的inception模块,而是简单地使用1 × 1reduction层,然后是3 × 3卷积层,类似于Lin等人。完整的网络如图3所示。
我们还训练了一个快速版本的YOLO,旨在推动快速目标检测的界限。快速YOLO使用了一个卷积层更少的神经网络(9层而不是24层),这些层中的过滤器更少。除了网络的大小,YOLO和Fast YOLO的所有训练和测试参数都是相同的。
我们网络的最终输出是7 × 7 × 30的预测张量。
2.2训练
我们在ImageNet1000类比赛数据集上预训练卷积层。对于预训练,我们使用图3中的前20个卷积层,然后是平均池化层和全连接层。我们对这个网络进行了大约一周的训练,并在ImageNet 2012验证集上实现了单个批次前5名准确率达到88%,与Caffe的模型动物园中的GoogLeNet模型相当。我们使用DarkNet框架进行所有的训练和推理。
然后我们将模型转换为执行检测。Ren等人表明,在预训练网络中同时添加卷积层和连接层可以提高性能。按照他们的例子,我们添加了四个卷积层和两个随机初始化权重的完全连接层。检测通常需要细粒度的视觉信息,因此我们将网络的输入分辨率从224 × 224提高到448 × 448。
最后一层预测类概率和边界框坐标。我们通过图像的宽度和高度对边界框的宽度和高度进行标准化,使它们落在0和1之间。我们将边界框的x和y坐标参数化为特定网格单元格位置的偏移量,因此它们也被限定在0和1之间。
我们对最后一层使用线性激活函数,所有其他层使用以下漏整流线性激活:
我们对模型输出中的平方和误差进行了优化。我们使用平方和误差,因为它很容易优化,但它并不完全符合我们最大化平均精度的目标。它将定位误差与分类误差等同地加权,这可能不是理想的。此外,在每张图像中,许多网格单元不包含任何对象。这使得这些单元格的“置信度”得分趋近于零,往往压倒了包含对象的单元格的梯度。这可能导致模型不稳定,导致训练在早期出现分歧。
为了解决这个问题,我们增加了边界框坐标预测的损失,减少了不包含对象的框的置信度预测的损失。我们使用两个参数, λ c o o r d λ_{coord} λcoord和 λ n o o b j λ_{noobj} λnoobj来实现这一点。设 λ c o o r d = 5 λ_{coord}=5 λcoord=5, λ n o o b j = . 5 λ_{noobj}=.5 λnoobj=.5。
平方和误差在大边界框和小边界框中的权重也相等。我们的误差度量应该反映出大盒子里的小偏差比小盒子里的小偏差影响小。为了部分解决这个问题,我们预测边界框宽度和高度的平方根,而不是直接预测宽度和高度。
YOLO预测每个网格单元格有多个边界框。在训练时,我们只希望一个边界框预测器负责一个对象。我们指定一个预测器“负责”预测一个对象,基于哪个预测具有当前的最高IOU。这会导致边界框预测器之间的专门化。每个预测器在预测特定尺寸、长宽比或物体类别方面都做得更好,从而提高了整体召回率。
训练过程中我们优化如下,多部分损失函数:
其中, 1 i o b j \Bbb {1}^{obj}_i 1iobj表示目标是否出现在cell i i i中, 1 i j o b j \Bbb {1}^{obj}_{ij} 1ijobj表示cell i中的第j个边界框预测器负责这个预测。
请注意,损失函数只在对象出现在该网格单元中时惩罚分类错误(因此前面讨论了条件类概率)。它也只惩罚边界框坐标误差,如果预测器是对真值"负责"。
我们在PASCAL VOC 2007和PASCAL VOC 2012的训练和验证数据集上训练了大约135个epoch。在PASCAL VOC2012数据上测试时,我们还把VOC 2007的测试数据也用于训练。在整个训练过程中,我们使用批大小为64,动量为0.9,衰减为0.0005。
我们的学习率计划如下:对于第一个epoch,我们缓慢地将学习率从 1 0 − 3 10^{−3} 10−3提高到 1 0 − 2 10^{−2} 10−2。如果我们从一个高学习率开始,我们的模型经常由于不稳定的梯度而发散。我们继续用 1 0 − 2 10^{−2} 10−2训练75次,然后用 1 0 − 3 10^{−3} 10−3训练30次,最后用 1 0 − 4 10^{−4} 10−4训练30次。
为了避免过拟合,我们使用dropout和广泛的数据增强。在第一个连接层之后,参数为0.5的dropout层阻止了层与层之间的相互适应。对于数据增强,我们引入了最大是原始图像20%的随机缩放和平移。我们还在HSV色彩空间中随机调整图像的曝光和饱和度,最高可达1.5倍。
2.3 推理
就像在训练中一样,预测测试图像的检测只需要一次网络评估。在PASCAL VOC上,该网络预测每张图像的98个边界框和每个框的类概率。YOLO在测试时非常快,因为不像基于分类器的方法,它只需要一次评估。
网格设计在边界框预测中加强了空间多样性。通常情况下,一个对象落在哪个网格单元是很清楚的,网络只预测每个对象的一个框。然而,一些较大的物体或靠近多个单元边界的物体可以被多个单元很好地定位。非极大抑制可以用来修正这些多重检测。虽然不像R-CNN或DPM那样对性能十分挑剔,但非最大抑制会增加2-3%的mAP。
2.4 YOLO的局限性
YOLO对边界框预测施加了很强的空间约束,因为每个网格单元只能预测两个框,并且只能有一个类。这个空间约束限制了我们的模型可以预测相邻物体的数量。我们的模型难以处理成群出现的小物体,比如鸟群。
由于我们的模型学习从数据中预测边界框,它很难推广到新的或不寻常的长宽比或配置的对象。我们的模型还使用相对粗糙的特征来预测边界框,因为我们的架构从输入图像中有多个下采样层。
最后,当我们在近似检测性能的损失函数上进行训练时,我们的损失函数对待小边界框和大边界框的错误是相同的。大边界框里的小错误通常是无关紧要的,但小边界框里的小错误对IOU的影响要大得多。我们的主要错误来源是不正确的定位。
3.与其他检测系统的比较
目标检测是计算机视觉中的一个核心问题。检测管道通常从输入图像中提取一组鲁棒特征开始 (Haar , SIFT ,HOG , convolutional features ).。然后,分类器或定位器被用来识别特征空间中的对象。这些分类器或定位器以滑动窗口的方式要么在整个图像要么在图像中的某些区域子集上运行。我们将YOLO检测系统与几个顶级检测框架进行了比较,突出了关键的相似性和差异性。
**Deformable parts models。**可变形零件模型(DPM)采用滑动窗口方法对目标进行检测。DPM使用一个不连续的管道来提取静态特征,对区域进行分类,预测高分区域的边界框等。我们的系统用一个卷积神经网络取代了所有这些不同的部分。该网络同时执行特征提取、边界框预测、非极大抑制和上下文推理。该网络不是静态特征,而是在线训练特征并针对检测任务对其进行优化。我们的统一架构带来了比DPM更快、更准确的模型。
R-CNN
R-CNN及其变体使用区域建议而不是滑动窗口来查找图像中的对象。用选择性
搜索来生成潜在的边界框,用卷积网络提取特征,用支持向量机对边界框进行评分,用线性模型调整边界框,用非极大抑制消除重复检测。这个复杂管道的每个阶段都必须精确地独立调整,因此生成的系统非常慢,在测试时每个图像需要40多秒。
YOLO与R-CNN有一些相似之处。每个网格单元提出潜在的边界框,并使用卷积特征对这些框进行评分。然而,我们的系统对网格单元候选区施加了空间约束,这有助于减少对同一目标的多次检测。我们的系统提出的边界框也少得多,每张图像只有98个,而选择性搜索大约有2000个。最后,我们的系统将这些单独的组件组合成一个单一的、共同优化的模型。
其他快速检测器
Fast 和Faster R-CNN专注于通过共享计算和使用神经网络提出候选区域而不是选择性搜索来加速R-CNN框架。虽然它们在速度和准确性上都比R-CNN有所提高,但两者的实时性仍然不足。
许多研究工作都集中在加快DPM流程上。它们加速HOG计算,使用级联,并将计算放在gpu上。然而,实际上只有30Hz DPM是实时运行的。YOLO不是试图优化大型检测管道的单个组件,而是完全抛弃之前的管道,并且通过设计使得运行很快。
单个类(如人脸或人)的检测器可以高度优化,因为它们必须处理的变量要少得多。YOLO是一个通用的检测器,学习同时检测各种物体。
Deep MultiBox
与R-CNN不同,Szegedy等人训练卷积神经网络来预测感兴趣区域而不是使用选择性搜索。MultiBox还可以通过用单个类预测代替置信度预测来执行单个对象检测。然而,MultiBox不能进行通用的目标检测,仍然只是更大的检测管道中的一部分,需要进一步的图像块分类。YOLO和MultiBox都使用卷积网络来预测图像中的边界框,但YOLO是一个完整的检测系统。
OverFeat
Sermanet等人训练卷积神经网络来执行定位,并调整该定位器来执行检测。OverFeat可以有效地进行滑动窗口检测,但仍然不是一个连续的系统。OverFeat优化的是定位,而不是检测性能。与DPM一样,定位器在进行预测时只看到局部信息。OverFeat不能对全局环境进行推理,因此需要大量的后处理来产生连贯的检测。
MultiGrasp我们的工作在设计上与Redmon等人的抓取检测工作相似。我们对边界框预测的网格方法是基于MultiGrasp系统对抓点的回归。然而,抓取检测是一个比物体检测简单得多的任务。MultiGrasp只需要为包含一个对象的图像预测单个可抓取区域。它不需要估计物体的大小、位置或边界,也不需要预测物体的类别,只需要找到一个适合抓取的区域。YOLO预测图像中多个类别的多个对象的边界框和类别概率。
4.实验
首先,我们将YOLO与其他基于PASCAL VOC 2007的实时检测系统进行了比较。为了理解YOLO和R-CNN变体之间的差异,我们探讨了YOLO和Fast R-CNN在VOC 2007上的错误,Fast R-CNN是R-CNN表现最好的版本之一。基于不同的误差分布,我们表明YOLO可以用于Fast R-CNN检测的重打分,并减少背景假阳性的误差,从而显着提高性能。我们还展示了VOC 2012的结果,并将mAP与当前最先进的方法进行了比较。最后,我们在两个艺术品数据集上证明了YOLO比其他检测器更好地泛化到新的领域。
4.1 与其他实时系统的比较
许多目标检测的研究工作都集中在使标准检测管道更加快速。然而,只有Sadeghi等人真正做出了实时运行的检测系统(每秒30帧或更好)。我们将YOLO与运行在30Hz或100Hz的DPM的GPU实现进行比较。虽然其他的工作没有达到实时里程碑,但我们也比较了它们的相对mAP和速度,以检查目标检测系统中可用的准确性和性能权衡。
Fast YOLO是Pascal上最快的目标检测方法
;据我们所知,它是现存最快的目标检测器。mAP为52.7%,比之前的实时检测工作的精度提高了两倍多。YOLO将mAP提高到63.4%,同时仍然保持实时性能。
我们还使用VGG-16训练了YOLO。这个模型更准确,但也比YOLO慢得多。它在用于与其他依赖VGG-16的检测系统的比较中是有用的,但由于它比实时慢,本文的其余部分集中在我们更快的模型上。
Fastest DPM在不牺牲太多mAP的情况下有效地加快了DPM的速度,但它与实时性能相比u仍然慢了2倍。与神经网络方法相比,DPM的检测精度相对较低,这也限制了它。
R- cnn - R用静态候选边界框替代选择性搜索,虽然它比R-CNN快很多,但是它依然达不到实时的效果,同时由于候选区较差,其准确率有明显的影响。
Fast R-CNN加快了R-CNN的分类阶段,但它仍然依赖于选择性搜索,而这种方法给每张图像生成边界框候选大约会花费2秒。因此,它具有很高的mAP,但是其速度只达到了0.5 fps离实时很远。
最近的Faster R-CNN用类似于Szegedy等人的神经网络代替选择性搜索来提出边界框候选。
在我们的测试中,他们最精确的模型达到了每秒7帧,而一个更小、更不精确的模型运行以18 fps运行。VGG-16版本的Fast R-CNN比YOLO高10 mAP,但速度也比YOLO慢6倍。ZeilerFergus Faster R-CNN只比YOLO慢2.5倍,但精度也不如YOLO。
4.2 VOC 2007错误分析
为了进一步研究YOLO和最先进的检测器之间的区别,我们将详细分析VOC 2007的结果。我们将YOLO与Fast RCNN进行比较,因为Fast R-CNN是PASCAL上性能最高的检测器之一,而且它的检测是公开可用的。
我们使用Hoiem等人的方法和工具。对于测试时的每个类别,我们查看该类别的前N个预测。每个预测要么是正确的,要么根据如下错误类型进行分类:
- 正确:正确的类且IOU >0 .5
- 定位:正确的类,0.1 < IOU < 0.5
- 相似:类相似,IOU > 0.1
- 其他:类错误,IOU >0 .1
- 背景:与任何对象的IOU < 0.1
图4显示了在所有20个类中平均的每种错误类型的细分。
YOLO很难正确定位对象。定位错误在YOLO错误中所占的比重超过了所有其他类型的总和。Fast R-CNN的定位错误要少得多,但背景错误要多得多。13.6%的最高检测结果是假阳性,不包含任何对象。Fast R-CNN更倾向预测背景累检测,可能性几乎是YOLO的3倍。
4.3 结合Fast R-CNN和YOLO
YOLO比Fast R-CNN所犯的背景错误少得多。通过使用YOLO来消除Fast R-CNN的背景检测,我们可以显著提高性能。对于R-CNN预测的每个边界框,我们检查YOLO是否预测了一个类似的框。如果是,我们根据YOLO预测的概率和两个框之间的重叠度来提高预测。
最好的Fast R-CNN模型在VOC 2007测试集上实现了71.8%的mAP。当与YOLO结合在一起时,它的mAP增长了3.2%到75.0%。我们还尝试将这个最佳的Fast R-CNN模型与其他几个版本的Fast R-CNN。这些组合在mAP中产生了0.3%到0.6%之间的小幅增长,详见表2。
YOLO的提升并不仅仅是模型整合的副产品,因为不同版本的Fast R-CNN组合在一起几乎没有什么好处。更确切地说,正是因为YOLO在测试时犯了不同类型的错误,它才如此有效地提高了Fast R-CNN的表现。
不幸的是,这种组合并没有从YOLO的速度中受益,因为我们分别运行每个模型,然后再组合结果。然而,由于YOLO与fast R-CNN相比是如此之快,因此它不会增加任何显著的计算时间。
4.4 VOC 2012结果
在VOC 2012测试集中,YOLO的mAP得分为57.9%。这比目前的最先进工作的水平低,更接近于使用VGG-16的原始R-CNN,见表3。与最接近的竞争对手相比,我们的系统在处理小物体方面遇到了困难。在瓶子、羊和电视或监视器等类别上,YOLO的得分比R-CNN或Feature Edit低8-10%。然而,在猫和火车等其他类别上,YOLO的表现更好。
我们的组合Fast R-CNN + YOLO模型是性能最高的检测方法之一。Fast R-CNN与YOLO的结合使得表现提高了2.3%,在公共排行榜上上升了5个名次。
4.5 普遍性:艺术品中的人物检测
用于目标检测的学术数据集从相同的分布中提取训练和测试数据。在真实的应用程序中,很难预测所有可能的用例,并且测试数据可能与系统之前看到的不同。我们将YOLO与两个用于测试艺术品上的人物检测的数据集——毕加索数据集和人-艺术数据集上的其他检测系统进行了比较。
图5显示了YOLO与其他检测方法之间的性能比较。作为参考,我们给出了VOC 2007上
人这一类别的检测AP,其中所有模型都是用
VOC 2007的数据进行训练的。在毕加索模型上,它们在VOC 2012上训练,而在人物艺术上,它们在VOC 2010上训练。
R-CNN 在VOC 2007上的AP很高。然而,当应用于艺术品时,R-CNN下降相当大。R-CNN使用选择性搜索来搜索针对自然图像进行调整的边界框候选。R-CNN的分类器步骤只看到小区域而且需要好的候选区。
当DPM应用于艺术作品时,它能很好地保持AP。先前的工作理论认为,DPM之所以表现良好,是因为它具有很强的物体形状和布局的空间建模。虽然DPM不像R-CNN那样退化,但是它的AP一开始就较低。
YOLO在VOC 2007有良好的性能,同时在应用于艺术品时,其AP的退化率也低于其他方法。与DPM一样,YOLO对物体的大小和形状,以及物体之间的关系和物体通常出现的位置建模。艺术品和自然图像在像素水平上非常不同,但它们在物体的大小和形状方面是相似的,因此YOLO仍然可以预测良好的边界框和检测。
5.自然场景下的实时检测
YOLO是一种快速,准确的目标检测器,使其成为计算机视觉应用的理想选择。我们将YOLO连接到一个网络摄像头,并验证了它包括从相机获取图像和显示检测结果的时间下同样保持实时性能。
由此产生的系统具有互动性和吸引力。YOLO单独处理图像,当连接到网络摄像头时,它就像一个跟踪系统,检测物体的移动和外观变化。一个该系统的演示和源代码可以在我们的项目网站获取:http://pjreddie.com/yolo/.
6.结论
介绍了目标检测的统一模型YOLO。我们的模型构造简单,可以直接在完整的图像上进行训练。与基于分类器的方法不同,YOLO是在直接对应于检测性能的损失函数上进行训练的,整个模型是联合训练的。
Fast YOLO是本文中最快的通用对象检测器,YOLO推动了最先进的实时目标检测。YOLO还可以很好地推广到新的领域,使其成为依赖于快速、健壮的目标检测的应用程序的理想选择。
相关文章:
![](https://img-blog.csdnimg.cn/e4f5c2e761b94b1694b481656e52c8d7.png)
[论文阅读]YOLOV1:You Only Look Once:Unified, Real-Time Object Detection
摘要 我们提出了YOLO,一种新的目标检测方法。之前的目标检测工作重新使用分类器来执行检测。相反,我们将目标检测表述为空间分离的边界框和相关类概率的回归问题。单个神经网络在一次评估中直接从完整图像中预测边界框和类别概率。由于整个检测管道是一…...
![](https://img-blog.csdnimg.cn/e15a0d9f55c144338f1fcbd18d631db6.png)
Ubuntu 20.04 安装MySQL 8.0.34
MySQL安装 sudo wget https://cdn.mysql.com/archives/mysql-8.0/mysql-server_8.0.31-1ubuntu20.04_amd64.deb-bundle.tar下载MySQL文件。 sudo mkdir /mysql8创建目录。 sudo tar -xf mysql-server_8.0.31-1ubuntu20.04_amd64.deb-bundle.tar -C /mysql8进行解压。 需…...
![](https://img-blog.csdnimg.cn/19cc24fbc12442889ea4233c79246b6d.png)
MySQL 高级语句 Part1(进阶查询语句+MySQL数据库函数+连接查询)
高级语句 第一部分 一、MySQL进阶查询语句1.1 select ----显示表格中一个或数个字段的所有数据记录1.2 distinct ----不显示重复的数据记录1.3 where ----有条件查询1.4 and or ----且 或1.5 in----显示已知的值的数据记录1.6 between----显示两个值范围内的数据记录1.7 通配符…...
![](https://www.ngui.cc/images/no-images.jpg)
Rust免杀 Shellcode加载与混淆2
前言 这是半年前我学习Rust和免杀时的一些记录,最近打开知识库看到了这篇半年前的笔记,并且发现我常逛的安全社区都比较少有人分享Rust以及Rust免杀的帖子,于是想着将这篇笔记分享出来供大家参考和指正。由于我写这篇文章时也刚刚开始接触Ru…...
![](https://img-blog.csdnimg.cn/img_convert/b3f1a3bc1f4639ac511c5d37404f7809.png)
牛客java训练题 day1
9.24 day1 Q 1. this 指针是用来干什么的? 2.基类和派生类分别是指什么? 3.为什么方法中不能写静态变量 4. 解释一下ASCII码和ANSI码和两者的区别 5.简述j ava.io java.sql java.awt java.rmi 分别是什么类型的包 6. 看下面一段代码:…...
![](https://img-blog.csdnimg.cn/img_convert/765ffeb8399d158f74a183f8515eedbf.png)
接口测试练习步骤
在接触接口测试过程中补了很多课, 终于有点领悟接口测试的根本; 偶是个实用派~,那么现实中没有用的东西,基本上我都不会有很大的概念; 下面给的是接口测试的统一大步骤,其实就是让我们对接口…...
![](https://img-blog.csdnimg.cn/70dfa72e202845e8bdac0e8d2e5cf8bf.jpeg#pic_center)
Qt/C++音视频开发56-udp推流和拉流/组播和单播推流
一、前言 之前已经实现了rtsp/rtmp推流,rtsp/rtmp/hls/flv/ws-flv/webrtc等拉流,这种一般都需要依赖一个独立的流媒体服务程序,有没有一种更便捷的方式不需要这种依赖,然后又能实现推拉流呢,当然有的那就是udpp推流&a…...
![](https://img-blog.csdnimg.cn/bf92f7130728413697012b36d6771bf2.png)
人工智能轨道交通行业周刊-第61期(2023.9.18-9.24)
本期关键词:焊线机器人、智能综合运维管理系统、信号平面图、铁路部门架构、书生浦语大模型 1 整理涉及公众号名单 1.1 行业类 RT轨道交通人民铁道世界轨道交通资讯网铁路信号技术交流北京铁路轨道交通网上榜铁路视点ITS World轨道交通联盟VSTR铁路与城市轨道交通…...
![](https://www.ngui.cc/images/no-images.jpg)
for...in 和 for...of 的区别
for...in 和 for...of 都是 JavaScript 中的循环语句,但它们的作用和使用方式略有不同。 1、for..in 循环 for..in 循环用于遍历对象的可枚举属性,它会将对象的每个属性名称(或键名)作为迭代变量来遍历。 以下是 for...in 的基本语法 for (variable …...
![](https://www.ngui.cc/images/no-images.jpg)
高并发系统 - 接口幂等技术方案,高可用系统架构与技术选型
幂等概念来自于数学,在计算机科学中,幂等表示一次后、或多次请求某一资源,应该有同样的影响效果。 在业务表现上一般是同样的数据效果,下面就常用的业务场景,来聊聊幂等的技术方案。 ----------------- 数据层 ----------------- 索引与事务 根据业务需要,给表添加唯一索…...
![](https://img-blog.csdnimg.cn/7d53eafed3844e98a61377b5183f43f0.png)
简单的手机电脑无线传输方案@固定android生成ftp的IP地址(android@windows)
文章目录 abstractwindows浏览android文件环境准备客户端软件无线网络链接步骤其他方法 手机浏览电脑文件公网局域网everythingpython http.server 高级:固定android设备IP准备检查模块是否生效 windows 访问ftp服务器快捷方式命令行方式双击启动方式普通快捷方式映射新的网络位…...
![](https://img-blog.csdnimg.cn/c48bd1c7d2184d6bbceb5a139d5116fb.gif)
Unity3D 检测鼠标位置的Sprite像素颜色
思路 获取鼠标所在屏幕坐标(Vector2)通过相机ScreenToWorldPoint(Vector3)转为世界坐标 (注意Vector3的z是距离相机的距离,相机需要正交)通过SpriteRenderer访问边界Bounds通过Bounds.Contain检测世界坐标是否在SpriteBounds内通过比例计算来确定在Sprite内的UV坐标…...
![](https://www.ngui.cc/images/no-images.jpg)
layui input 监听事件
//监听表单单选框复选框选择 form.on(radio, function (data) { console.log(data.value); //得到被选中的值 }); //监听表单下拉菜单选择 form.on(select, function (data) { console.log(data.value); //得到被选中的值 }); //监听表单复选框选择 …...
![](https://img-blog.csdnimg.cn/81f16b4549d4442c93db31dc59781b66.png)
一致性思维链(SELF-CONSISTENCY IMPROVES CHAIN OF THOUGHT REASONING IN LANGUAGE MODELS)
概要 思维链已经在很多任务上取得了非常显著的效果,这篇论文中提出了一种 self-consistency 的算法,来代替 贪婪解码 算法。本方法通过 采样多个思维链集合,然后LLM模型生成后,选择一个最一致的答案作为最后的结果。一致性思维链…...
![](https://img-blog.csdnimg.cn/img_convert/8a56d09943cb5a549e11de0b262910af.jpeg)
腾讯云16核服务器配置大全_16核CPU型号性能测评
腾讯云16核CPU服务器有哪些配置可以选择?可以选择标准型S6、标准型SA3、计算型C6或标准型S5等,目前标准型S5云服务器有优惠活动,性价比高,计算型C6云服务器16核性能更高,轻量16核32G28M带宽优惠价3468元15个月…...
![](https://www.ngui.cc/images/no-images.jpg)
HTML中Input elements should have autocomplete attributes的解决方案
kwfwservice.php:1 [DOM] Input elements should have autocomplete attributes (suggested: “current-password”): (More info: https://goo.gl/9p2vKq) <input name"password" id"password" lay-verify"required" placeholder"密码&…...
![](https://img-blog.csdnimg.cn/1bbeaf58d5ca468db8708b4695564447.png)
2808. 使循环数组所有元素相等的最少秒数;1015. 可被 K 整除的最小整数;1001. 网格照明
2808. 使循环数组所有元素相等的最少秒数 核心思想:枚举每个元素作为相等元素最多需要多少秒,然后维护它的最小值。最多需要多少秒是怎么计算的,我们可以把相等值的下标拿出来,然后你会发现两个相邻下标(相邻下标只的…...
![](https://img-blog.csdnimg.cn/741846eccf34438db567a82633f3a344.png#pic_center)
Python爬虫在Web应用自动化测试中的应用
在Web应用开发过程中,自动化测试是确保应用质量和稳定性的重要环节。本文将介绍如何使用Python爬虫与自动化测试技术相结合,实现对Web应用进行自动化测试的方法和步骤。通过这种结合,我们可以提高测试效率、减少人力成本,并确保应…...
![](https://csdnimg.cn/release/blog_editor_html/release2.3.6/ckeditor/plugins/CsdnLink/icons/icon-default.png?t=N7T8)
苹果手机短信删除了怎么恢复?3种有效方法介绍
手机短信是一种即时通信方式,人们可以使用短信来达到快速传递信息的目的。在没有网络或者网络不稳定的时候,短信仍然可以做到发送和接收,这弥补了其他网络通信软件的缺点。 所以说,手机短信仍然是我们生活中不可缺少的一部分。当…...
![](https://img-blog.csdnimg.cn/840610beb0e04f4f97061eebcd9d2ac9.jpeg)
前端JavaScript中的 == 和 ===区别,以及他们的应用场景,快来看看吧,积累一点知识。
🎬 江城开朗的豌豆:个人主页 🔥 个人专栏 :《 VUE 》 《 javaScript 》 ⛺️ 生活的理想,就是为了理想的生活 ! 目录 一、等于操作符 二、全等操作符 三、区别 小结 一、等于操作符 等于操作符用两个等于号( &am…...
![](https://img-blog.csdnimg.cn/4291579f9dc5411fa615f3adbb810340.png#pic_center)
文献阅读:LIMA: Less Is More for Alignment
文献阅读:LIMA: Less Is More for Alignment 1. 内容简介2. 实验设计 1. 整体实验设计2. 数据准备3. 模型准备4. metrics设计 3. 实验结果 1. 基础实验2. 消解实验3. 多轮对话 4. 结论 & 思考 文献链接:https://arxiv.org/abs/2305.11206 1. 内容简…...
![](https://img-blog.csdnimg.cn/81f9d0b858a14865a730bd9016b8b8b3.png)
机器学习第十四课--神经网络
总结起来,对于深度学习的发展跟以下几点是离不开的: 大量的数据(大数据)计算资源(如GPU)训练方法(如预训练) 很多时候,我们也可以认为真正让深度学习爆发起来的是数据和算力,这并不是没道理的。 由于神经网络是深度学习的基础,学…...
![](https://img-blog.csdnimg.cn/d5480727c8834c2899b927cd2f1dabbd.png)
React(react18)中组件通信04——redux入门
React(react18)中组件通信04——redux入门 1. 前言1.1 React中组件通信的其他方式1.2 介绍redux1.2.1 参考官网1.2.2 redux原理图1.2.3 redux基础介绍1.2.3.1 action1.2.3.2 store1.2.3.3 reducer 1.3 安装redux 2. redux入门例子3. redux入门例子——优…...
![](https://img-blog.csdnimg.cn/1c8e3db7082d48c2858328bb481c7102.png)
最新AI创作系统+ChatGPT网站源码+支持GPT4.0+支持ai绘画+支持国内全AI模型
一、AI创作系统 SparkAi系统是基于很火的GPT提问进行开发的Ai智能问答系统。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作ChatGPT系统?小编这里写一个详细图文教程吧&#x…...
![](https://www.ngui.cc/images/no-images.jpg)
react+umi项目中引入antd组件报错:“Button”不能用作 JSX 组件解决方案
具体报错信息 “Button”不能用作 JSX 组件。 Its type ‘(props: IProps) > React.ReactElement’ is not a valid JSX element type. 不能将类型“(props: IProps) > React.ReactElement”分配给类型“(props: any, deprecatedLegacyContext?: any) > ReactNode”。…...
![](https://www.ngui.cc/images/no-images.jpg)
常用算法模板
目录 快读、快输 快读、快输 #include <cstdio> #define Re register int #define LD double// 读整数 inline void in(Re &x) {int f 0; x 0; char c getchar();while (c < 0 || c > 9) f | c -, c getchar();while (c > 0 && c < 9) x …...
![](https://img-blog.csdnimg.cn/5879ae8e05964182b80eb101f583deff.png)
最全跨境独立站建站详细步骤解析
对于跨境电商卖家来说,无论是规避“鸡蛋放在同一个篮子里”的风险,还是追求更多的销售额和利润,多平台、多站点的布局都是其至关重要的战略。加之市场的变化带来了新的发展机遇,这也使得如今很多出海企业都在抢占独立站新风口。然…...
![](https://img-blog.csdnimg.cn/img_convert/7be749c6d8077a336a13d6775d77128f.png)
提升群辉AudioStation音乐体验,实现公网音乐播放
文章目录 本教程解决的问题是:按照本教程方法操作后,达到的效果是本教程使用环境:1 群晖系统安装audiostation套件2 下载移动端app3 内网穿透,映射至公网 很多老铁想在上班路上听点喜欢的歌或者相声解解闷儿,于是打开手…...
![](https://img-blog.csdnimg.cn/c18a45af812f413cb045d1e72afa76e8.png)
虹科分享 | 谷歌Vertex AI平台使用Redis搭建大语言模型
文章来源:虹科云科技 点此阅读原文 基础模型和高性能数据层这两个基本组件始终是创建高效、可扩展语言模型应用的关键,利用Redis搭建大语言模型,能够实现高效可扩展的语义搜索、检索增强生成、LLM 缓存机制、LLM记忆和持久化。有Redis加持的大…...
![](https://www.ngui.cc/images/no-images.jpg)
VS Code 代码跳转到定义(.js 和 .vue文件跳转)
vscode 代码跳转到定义(.js 和 .vue文件跳转) 在日常的开发工作中,我们经常需要跳转到方法或变量的定义处,以便更好地理解和修改代码。VS Code 是目前比较流行的开发工具,然而它默认情况下并不支持这个功能,…...
![](/images/no-images.jpg)
沈阳网站开发培训/网络营销工程师培训
bootstrap源码分析之scrollspy(滚动侦听) 源码文件: Scrollspy.js 实现功能1、当滚动区域内设置的hashkey距离顶点到有效位置时,就关联设置其导航上的指定项 2、导航必须是 .nav > li > a 结构,并且a上href或dat…...
![](/images/no-images.jpg)
网站关键词被百度屏蔽怎么办/广告推广方式
从树中的某一个顶点v0开始,构造生成树的算法执行过程: 1)将v0到其他顶点的所有边当做侯选边 2)重复以下步骤n-1次,使得其他n-1个顶点纳入生成树 从候选边中选出权值最小的边输出,并将与该边另一端的顶点v纳…...
![](/images/no-images.jpg)
北京个人网站建设/百度官方客户端
项目中,有时会遇到需要遍历生成多个内容,可以构建一个简单的数组,每个元素只要有值即可。 Array.prototype.keys() [...Array(5).keys()] -> [0, 1, 2, 3, 4]// 使用伪数组转的真数组也是一个道理 [...Array.from({length: 5}).keys()] -&…...
![](https://img-blog.csdnimg.cn/20201205190407895.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0xJTlpFWVU2NjY=,size_16,color_FFFFFF,t_70#pic_center)
住房和城乡建设厅网站青海省/今日军事新闻头条
typedef int ElemType; typedef struct Node { ElemType data; struct Node *prev; struct Node *next; }RingLink;以上是定义结构体。 以下是双向循环链表的实现 void RingLinkInit(RingLink *head) //初始化 { if (head NULL) exit(0); head->next head->prev …...
南通网站建设费用/温州seo按天扣费
前两天成都出了太阳,本以为寒潮就此过去。结果今天又冷风呼呼吹,缩在家看书。手机震了一下,是微信有新的提醒,打开一看是 「小道消息」推送了一篇《学计算机的同学们啊,想清楚再去读研究生》,读完感觉一下击…...
![](/images/no-images.jpg)
asp作业做购物网站代码/网页关键词排名优化
使用MMKV替代SharedPreferences,好处:MMKV是微信应用程序中使用的一种高效、小巧、易用的移动键值存储框架。目前在iOS、macOS、Android和Windows上都可以使用。一、在app的build.gradle中引入implementation com.tencent:mmkv:1.0.19二、在application里…...