第1篇 目标检测概述 —(1)目标检测基础知识

前言:Hello大家好,我是小哥谈。目标检测是计算机视觉领域中的一项任务,旨在自动识别和定位图像或视频中的特定目标,目标可以是人、车辆、动物、物体等。目标检测的目标是从输入图像中确定目标的位置,并使用边界框将其标记出来。🎉为了让大家能够牢固地掌握目标检测基础知识,本系列文章就对目标检测进行详细介绍,希望大家学习之后能够有所收获!🌈 

     目录

🚀1.简介

💥💥1.1 什么是目标检测?

💥💥1.2 目标检测算法难点

💥💥1.3 目标检测主流目标检测技术

💥💥1.4 目标检测算法未来趋势

💥💥1.5 目标检测算法应用

🚀2.目标检测发展历程与现状

💥💥2.1 目标检测算法发展历程

💥💥2.2 目标检测算法分类

🚀3.目标检测原理

💥💥3.1 候选区域产生

💥💥3.2 数据表示

💥💥3.3 效果评估

💥💥3.4 非极大值抑制

🚀4.目标检测常用的数据集

💥💥4.1 PASCAL VOC

💥💥4.2 MS COCO

💥💥4.3 Google Open Image

💥💥4.4 ImageNet

💥💥4.5 DOTA

🚀5.目标检测常用标注工具

💥💥5.1 LabelImg

💥💥5.2 labelme

💥💥5.3 Labelbox

💥💥5.4 RectLabel

💥💥5.5 CVAT

💥💥5.6 VIA

💥💥5.7 其他标注工具

🚀6.目标检测常用术语表

🚀1.简介

💥💥1.1 什么是目标检测?

目标检测是计算机视觉领域中的一个任务,其目的是在图像或视频中确定和定位感兴趣的物体。目标检测模型不仅可以识别物体的类别,还能够提供每个物体的边界框位置。由于各类物体有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测⼀直是计算机视觉领域最具有挑战性的问题。目标检测通常涉及两个主要步骤:分类(判断物体类别)和定位(确定边界框位置)。🌴

目标检测的位置信息一般由两种格式(以图片左上角为原点(0,0)):

🍀(1)极坐标表示:(xmin, ymin, xmax, ymax)

  • xmin,ymin:x,y坐标的最小值
  • xmin,ymin:x,y坐标的最大值

🍀(2)中心点坐标:(x_center, y_center, w, h)

  • x_center,y_center:目标检测框的中心点坐标
  • w,h:目标检测框的宽、高

在深度学习领域,目标检测通常使用卷积神经网络(CNN)模型来实现。常见的目标检测方法包括:

R-CNN系列:包括R-CNN、Fast R-CNN、Faster R-CNN等,这些方法使用候选区域提取技术(如选择性搜索)来生成感兴趣区域,然后通过分类器和回归器对这些区域进行分类和定位。

YOLO系列:包括YOLO、YOLOv2、YOLOv3等,这些方法将目标检测问题转化为一个回归问题,并将物体位置和类别同时预测出来,具有较快的速度和较高的精度。

SSD(Single Shot MultiBox Detector):SSD将目标检测问题转化为一个多尺度检测问题,通过在不同层次上预测不同尺度的边界框和类别信息来实现目标检测。

等等......🍉 🍓 🍑 🍈 🍌 🍐

计算机视觉中关于图像识别有四大类任务

📗分类-Classification:解决“是什么?”的问题,即给定⼀张图⽚或⼀段视频判断里面包含什么类别的目标。

📗定位-Location:解决“在哪里?”的问题,即定位出这个目标的的位置。

📗检测-Detection:解决“是什么?在哪里?”的问题,即定位出这个⽬标的的位置并且知道目标物是什么。

📗分割-Segmentation:分为实例的分割(Instance-level)和场景分割(Scene-level),解决“每⼀个像素属于哪个目标物或场景”的问题。

除了图像分类之外,目标检测要解决的核心问题是:

  • 目标可能出现在图像的任何位置。
  • 目标有各种不同的大小。
  • 目标可能有各种不同的形状。

💥💥1.2 目标检测算法难点

目标检测算法的主要难点和挑战

  • 待检测目标尺寸很小,导致占比小,检测难度大。
  • 待检测目标尺度变化大,网络难以提取出高效特征。
  • 待检测目标所在背景复杂,噪音干扰严重,检测难度大。
  • 待检测目标与背景颜色对比度低,网络难以提取出具有判别性的特征。
  • 各待检测目标之间数量极度不均衡,导致样本不均衡。
  • 检测算法的速度与精度难以取得良好平衡。

等等......🍉 🍓 🍑 🍈 🍌 🍐

💥💥1.3 目标检测主流目标检测技术

目前国内主流的目标检测技术:

  • YOLOX:由中国的旷视科技研发,是目前国际上运行速度最快的一种深度学习模型。
  • YOLOV1-V5:Yolov1-yolov3由Joseph Redmon研发,yolov4-yolov5则是由yolo团队内部成员完成的。
  • Transformer:原来是做为语音识别的一个模型,现在用在图像的目标识别上面也有不俗的表现。
  • ViT:当考虑预训练模型的计算成本时,ViT的性能非常好,以较低的预训练成本在大多数识别基准上达到了最先进的水平。

等等......🍉 🍓 🍑 🍈 🍌 🍐

💥💥1.4 目标检测算法未来趋势

随着技术的发展和成熟应用,目标检测算法未来的发展趋势主要有:

  • 轻量型目标检测
  • 与AutoML结合的目标检测
  • 领域自适应的目标检测
  • 弱监督目标检测
  • 小目标检测
  • 视频检测
  • 信息融合目标检测

等等......🍉 🍓 🍑 🍈 🍌 🍐

💥💥1.5 目标检测算法应用

目标检测具有巨大的实⽤价值和应⽤前景。🐳

🍀(1)人脸检测

  • 智能门控
  • 员工考勤签到
  • 智慧超市
  • 人脸支付
  • 车站、机场实名认证
  • 公共安全:逃犯抓捕、走失人员检测

🍀(2)行人检测

  • 智能辅助驾驶
  • 智能监控
  • 暴恐检测(根据面相识别暴恐倾向)
  • 移动侦测、区域入侵检测、安全帽/安全带检测

🍀(3)车辆检测

  • 自动驾驶
  • 违章查询、关键通道检测
  • 广告检测(检测广告中的车辆类型,弹出链接)

🍀(4)遥感检测

  • 大地遥感,如土地使用、公路、水渠、河流监控
  • 农作物监控
  • 军事检测

🚀2.目标检测发展历程与现状

💥💥2.1 目标检测算法发展历程

过去的 20 年,目标检测的发展历程大致经历了两个历史时期传统的目标检测时期(2014 年以前)基于深度学习的检测时期(2014 年以后)📚

传统的目标检测算法可以概括为以下几个步骤:👇

首先,采取滑动窗口的方式遍历整张图像,产生一定数量的候选框;

其次,提取候选框的特征;

最后,利用支持向量机(SVM)等分类方法对提取到的特征进行分类,进而得到结果。

由于当时缺乏有效的图像表示,人们只能设计复杂的特征表示,并通过各种加速技能来充分利用有限的计算资源。该时期主要的检测方法有:

  • Viola Jones检测器: Viola Jones检测器由三个核心步骤组成,即Haar特征和积分图、Adaboost分类器以及级联分类器。
  • HOG检测器:HOG检测器利用了方向梯度直方图(HOG特征描述子,通过计算和统计局部区域的梯度方向直方图来构建特征)。HOG特征与SVM分类器算法的结合,在行人检测任务中应用广泛且效果显著。然而,HOG检测器的缺点是始终需要保持检测窗口的大小不变,如果待检测目标的大小不一,那么HOG检测器需要多次缩放输入图像。
  • 基于部件的可变形模型(DPM):DPM所遵循的思想是“分而治之”,训练过程中学习的是如何将目标物体进行正确地分解,而推理时则是将不同的部件组合到一起。比如说,检测“汽车”问题可以分解为检测“车窗”、“车身”和“车轮”等。

早期的目标检测任务提取特征时,主要的方式是人工提取,具有一定的局限性,手工特征的性能也趋于饱和。2012 年起,卷积神经网络的广泛应用使得目标检测也开启了新的征程。2014年R-CNN算法横空出世,目标检测开始以前所未有的速度快速发展。深度学习时代,目标检测算法根据检测思想的不同通常可以分为两大类别两阶段(two-stage)检测和一阶段(one-stage)检测🔖

两阶段检测算法基于提议的候选框,是一个“由粗到细”的过程。首先产生区域候选框,其次提取每个候选框的特征,最后产生位置框并预测对应的类别,特点是精度高但速度慢。最早期的R-CNN算法利用“选择性搜索”方法产生候选框、卷积神经网络提取特征、支持向量机分类器进行分类和预测。虽然R-CNN算法具有一定的开创性,但生成的候选框大量重叠,存在计算冗余的问题。

2014年提出的SPPNet算法利用空间金字塔池化层对不同尺度的特征图进行池化并生成固定长度的特征表示,减少反复缩放图像对检测结果造成的影响。然而,SPPNet的缺点是:模型的训练仍然是分多步的;SPPNet很难对SPP层之前的网络进行参数微调,导致效率降低。2015 年提出的Fast R-CNN算法,对R-CNNSPPNet算法做出进一步改进,提出感兴趣区域池化层(ROI),使得检测的速度和精度大大提升。随后又出现的Faster R-CNN算法,实现了端到端地训练,用RPN网络代替选择性搜索,大大减少了训练和测试的时间。

一阶段检测算法基于边界框的回归,是一个“一步到位”的过程。一阶段检测网络在产生候选框的同时进行分类和边界框回归,特点是速度快但精度稍逊。2016年YOLO算法提出,该算法将图像分割成 S×S 个网格,基于每个网格对应的包围框直接预测类别概率和回归位置信息。随后有出现了SSD 算法,该算法借鉴YOLO算法的思想,并利用多尺度特征图进行预测。

💥💥2.2 目标检测算法分类

基于深度学习的⽬标检测算法主要分为两类👇

🍀(1)Two stage目标检测算法

先进行区域生成(region proposal,RP)(⼀个有可能包含待检物体的预选框),再通过卷积神经网络进行样本分类。

任务:特征提取—>生成RP—>分类/定位回归。

常见的two stage目标检测算法有:R-CNN、SPP-Net、Fast R-CNN、Faster R-CNN和R-FCN等。

🍀(2)One stage目标检测算法

不用RP,直接在网络中提取特征来预测物体分类和位置。

任务:特征提取—>分类/定位回归。

常见的one stage目标检测算法有:OverFeat、YOLOv1、YOLOv2、YOLOv3、SSD和RetinaNet等。

两阶段算法和一阶段算法对比:

算法类别机制优势局限性适用场景
两阶段算法先生成候选区,再对候选区进行分类和回归。算法精确度高实时性差,检测小目标效果差。高精度目标检测
一阶段算法不生成候选区直接进行分类和回归实时性高成群目标和小目标检测精度低实时目标检测

🚀3.目标检测原理

目标检测主要分为两大系列——RCNN系列YOLO系列,RCNN系列是基于区域检测的代表性算法,YOLO是基于区域提取的代表性算法。🔖

💥💥3.1 候选区域产生

很多目标检测技术都会涉及候选框(bounding boxes)的生成,物体候选框获取当前主要使用图像分割与区域生长技术。区域生长(合并)主要由于检测图像中存在的物体具有局部区域相似性(颜色、纹理等)。目标识别与图像分割技术的发展进一步推动有效提取图像中信息。

🍀(1)滑动窗口

通过滑窗法流程图可以很清晰理解其主要思路:首先对输入图像进行不同窗口大小的滑窗进行从左往右、从上到下的滑动。每次滑动时候对当前窗口执行分类器(分类器是事先训练好的)。如果当前窗口得到较高的分类概率,则认为检测到了物体。对每个不同窗口大小的滑窗都进行检测后,会得到不同窗口检测到的物体标记,这些窗口大小会存在重复较高的部分,最后采用非极大值抑制(Non-Maximum Suppression, NMS)的方法进行筛选。最终,经过NMS筛选后获得检测到的物体。

滑窗法简单易于理解,但是不同窗口大小进行图像全局搜索导致效率低下,而且设计窗口大小时候还需要考虑物体的长宽比。所以,对于实时性要求较高的分类器,不推荐使用滑窗法。

说明:♨️♨️♨️

滑动窗口法中,事先规定一个固定大小的窗口,使用这个窗口在原图中滑动,滑动到每个位置,那么窗口与图像重合的部分就是一个候选区域,候选区域用来后续的检测任务(滑动窗口法类似于卷积神经网络中的卷积过程)。如果图片尺寸很大,会导致一张图片就能产生数量极多的候选区域。滑动窗口的尺寸设置需要与物体的尺寸相匹配才能带来好的效果,因此对于检测任务来说,滑动窗口法效率很低并且性能不优。

🍀(2)选择性搜索

滑窗法类似穷举进行图像子区域搜索,但是一般情况下图像中大部分子区域是没有物体的。学者们自然而然想到只对图像中最有可能包含物体的区域进行搜索以此来提高计算效率。选择搜索(selective search,简称SS)方法是当下最为熟知的图像bounding boxes提取算法,由Koen E.A于2011年提出。

选择搜索算法的主要思想:图像中物体可能存在的区域应该是有某些相似性或者连续性区域的。因此,选择搜索基于上面这一想法采用子区域合并的方法进行提取bounding boxes。

首先,对输入图像进行分割算法产生许多小的子区域。

其次,根据这些子区域之间相似性(相似性标准主要有颜色、纹理、大小等等)进行区域合并,不断的进行区域迭代合并。每次迭代过程中对这些合并的子区域做bounding boxes(外切矩形),这些子区域外切矩形就是通常所说的候选框。

选择性搜索流程:

  • step0:生成区域集R
  • step1:计算区域集R里每个相邻区域的相似度S={s1, s2,…}
  • step2:找出相似度最高的两个区域,将其合并为新集,添加进R
  • step3:从S中移除所有与step2中有关的子集
  • step4:计算新集与所有子集的相似度
  • step5:跳至step2,直至S为空

选择性搜索优点:

  • 计算效率优于滑窗法;
  • 由于采用子区域合并策略,所以可以包含各种大小的疑似物体框。
  • 合并区域相似的指标多样性,提高了检测物体的概率。

💥💥3.2 数据表示

经过标记后的样本数据如下所示:

预测输出可以表示为:

其中,p_{c}为预测结果的置信概率,b_{x}b_{y}b_{w}b_{h}为边框坐标,C_{1}C_{2}C_{3}为属于某个类别的概率。通过预测结果、实际结果,构建损失函数。

💥💥3.3 效果评估

使用IoU(Intersection over Union,交并比)来判断模型的好坏。所谓交并比,是指预测边框、实际边框交集和并集的比率,一般约定0.5为一个可以接收的值。

💥💥3.4 非极大值抑制

预测结果中,可能多个预测结果间存在重叠部分,需要保留交并比最大的、去掉非最大的预测结果,这就是非极大值抑制(Non-Maximum Suppression,简写作NMS)

如下图所示,对同一个物体预测结果包含三个概率0.8/0.9/0.95,经过非极大值抑制后,仅保留概率最大的预测结果。

说明:♨️♨️♨️

置信度:置信度是介于0-1(或100%)之间的数字,它描述模型认为此预测边界框包含某类别目标的概率。

IoU(Intersection over Union,IoU):即两个边界框相交面积与相并面积的比值,边界框的准确度可以用IoU进行表示;一般约定,在检测中,IOU>0.5,则认为检测正确,一般阈值设为0.5。

总结就是置信度和IoU一起用来计算精确率。

🚀4.目标检测常用的数据集

💥💥4.1 PASCAL VOC

VOC数据集是⽬标检测经常⽤的⼀个数据集,⾃2005年起每年举办⼀次⽐赛,最开始只有4类,到2007年扩充 为20个类,共有两个常⽤的版本:2007和2012。

学术界常⽤5k的train/val 2007和16k的train/val 2012作为训练集,test 2007作为测试集,⽤10k的train/val 2007+test 2007和16k的train/val 2012作为训练集,test2012作为测试集,分别汇报结果。

💥💥4.2 MS COCO

COCO数据集是微软团队发布的⼀个可以⽤来图像recognition+segmentation+captioning 数据集,该数据集收集了⼤量包含常见物体的⽇常场景图⽚,并提供像素级的实例标注以更精确地评估检测和分割算法的效果,致⼒于推动场景理解的研究进展。依托这⼀数据集,每年举办⼀次⽐赛,现已涵盖检测、分割、关键点识别、注释等机器视觉的中⼼任务,是继ImageNet Chanllenge以来最有影响⼒的学术竞赛之⼀。 相⽐ImageNet,COCO更加偏好⽬标与其场景共同出现的图⽚,即non-iconic images。这样的图⽚能够反映视觉上的语义,更符合图像理解的任务要求,⽽相对的iconic images则更适合浅语义的图像分类等任务。

COCO的检测任务共含有80个类,在2014年发布的数据规模分train/val/test分别为80k/40k/40k,学术界较为通⽤的划分是使⽤train和35k的val⼦集作为训练集(trainval35k),使⽤剩余的val作为测试集(minival),同时向官⽅的evaluation server提交结果(test-dev)。除此之外,COCO官⽅也保留⼀部分test数据作为⽐赛的评测集。

💥💥4.3 Google Open Image

Open Image是⾕歌团队发布的数据集。最新发布的Open Images V4包含190万图像、600个种类,1540万个 bounding-box标注,是当前最⼤的带物体位置标注信息的数据集。这些边界框⼤部分都是由专业注释⼈员⼿动绘制的,确保了它们的准确性和⼀致性。另外,这些图像是⾮常多样化的,并且通常包含有多个对象的复杂场景(平均每个图像 8 个)。

💥💥4.4 ImageNet

ImageNet是⼀个计算机视觉系统识别项⽬,是⽬前世界上图像识别最⼤的数据库。ImageNet是美国斯坦福的计算机科学家,模拟⼈类的识别系统建⽴的。能够从图⽚识别物体。Imagenet数据集⽂档详细,有专门的团队维护,使⽤⾮常⽅便,在计算机视觉领域研究论⽂中应⽤⾮常⼴,⼏乎成为了⽬前深度学习图像领域算法性能 检验的“标准”数据集。Imagenet数据集有1400多万幅图⽚,涵盖2万多个类别;其中有超过百万的图⽚有明确的类别标注和图像中物体位置的标注。

💥💥4.5 DOTA

DOTA是遥感航空图像检测的常⽤数据集,包含2806张航空图像,尺⼨⼤约为4kx4k,包含15个类别共计188282个实例,其中14个主类,small vehicle 和 large vehicle都是vehicle的⼦类。其标注⽅式为四点确定的任意形状和⽅向的四边形。航空图像区别于传统数据集,有其⾃⼰的特点,如:尺度变化性更⼤;密集的⼩物体 检测;检测⽬标的不确定性。数据划分为1/6验证集,1/3测试集,1/2训练集。⽬前发布了训练集和验证集,图像尺⼨从800x800到4000x4000不等。


🚀5.目标检测常用标注工具

💥💥5.1 LabelImg

LabelImg 是⼀款开源的图像标注⼯具,标签可⽤于分类和⽬标检测,它是⽤ Python 编写的,并使⽤Qt作为其图形界⾯,简单好⽤。注释以 PASCAL VOC 格式保存为 XML ⽂件,这是 ImageNet 使⽤的格式。 此外,它还⽀持 COCO 数据集格式。

💥💥5.2 labelme

labelme 是⼀款开源的图像/视频标注⼯具,标签可⽤于⽬标检测、分割和分类。灵感是来⾃于 MIT 开源的⼀ 款标注⼯具 LabelMe。

labelme 具有的特点是:

  • ⽀持图像的标注的组件有:矩形框,多边形,圆,线,点(rectangle, polygons, circle, lines, points)
  • ⽀持视频标注
  • GUI ⾃定义
  • ⽀持导出 VOC 格式⽤于 semantic/instance segmentation
  • ⽀出导出 COCO 格式⽤于 instance segmentation

💥💥5.3 Labelbox

Labelbox 是⼀家为机器学习应⽤程序创建、管理和维护数据集的服务提供商,其中包含⼀款部分免费的数据标签⼯具,包含图像分类和分割,⽂本,⾳频和视频注释的接⼝,其中图像视频标注具有的功能如下:

  • 可⽤于标注的组件有:矩形框,多边形,线,点,画笔,超像素等(bounding box, polygons, lines, points,brush, subpixels)
  • 标签可⽤于分类,分割,⽬标检测等
  • 以 JSON / CSV / WKT / COCO / Pascal VOC 等格式导出数据
  • ⽀持 Tiled Imagery (Maps)
  • ⽀持视频标注 (快要更新)

💥💥5.4 RectLabel

RectLabel 是⼀款在线免费图像标注⼯具,标签可⽤于⽬标检测、分割和分类。具有的功能或特点:

  • 可⽤的组件:矩形框,多边形,三次贝塞尔曲线,直线和点,画笔,超像素
  • 可只标记整张图像⽽不绘制
  • 可使⽤画笔和超像素
  • 导出为YOLO,KITTI,COCO JSON和CSV格式
  • 以PASCAL VOC XML格式读写
  • 使⽤Core ML模型⾃动标记图像
  • 将视频转换为图像帧

💥💥5.5 CVAT

CVAT 是⼀款开源的基于⽹络的交互式视频/图像标注⼯具,是对加州视频标注⼯具(Video Annotation Tool) 项⽬的重新设计和实现。OpenCV团队正在使⽤该⼯具来标注不同属性的数百万个对象,许多 UI 和 UX 的决策 都基于专业数据标注团队的反馈。具有的功能

  • 关键帧之间的边界框插值
  • ⾃动标注(使⽤TensorFlow OD API 和 Intel OpenVINO IR格式的深度学习模型)

💥💥5.6 VIA

VGG Image Annotator(VIA)是⼀款简单独⽴的⼿动注释软件,适⽤于图像、⾳频和视频。 VIA 在 Web 浏览 器中运⾏,不需要任何安装或设置。页⾯可在⼤多数现代Web浏览器中作为离线应⽤程序运⾏。

  • ⽀持标注的区域组件有:矩形,圆形,椭圆形,多边形,点和折线

💥💥5.7 其他标注工具

liblabel:⼀个⽤ MATLAB 写的轻量级语义/⽰例(semantic/instance) 标注⼯具。

ImageTagger:⼀个开源的图 像标注平台。

Anno-Mage:⼀个利⽤深度学习模型半⾃动图像标注⼯具,预训练模型是基于MS COCO数据 集,⽤ RetinaNet 训练的。

当然还有⼀些数据标注公司,可能包含更多标注功能,例如对三维⽬标检测的标注(3D Bounding box Labelling),激光雷达点云的标注(LIDAR 3D Point Cloud Labeling)等。


🚀6.目标检测常用术语表

英文全写英文简写中文名称
one stage一阶段检测
two stage两阶段检测
region proposalRP候选区域(一个有可能包含待检物体的预选框)
bounding boxesbb候选框
Non-Maximum SuppressionNMS非极大值抑制
selective searchSS选择搜索
Regions with CNN featuresR-CNN
You Only Look OnceYOLO
region of interestRoI感兴趣区域(候选区域)
frame per secondfps帧/每秒
High Resolution Classifier高分辨率分类器
Batch NormalizationBN批量正则化
Mean Average PrecisionmAP平均精度均值
Intersection over UnionIoU交并比(“预测的边框” 和 “真实的边框” 的交集和并集的比值)
Fine-Grained Features细粒度特征
Feature Pyramid NetworkFPN特征金字塔网络

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

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

相关文章

安全防御第二次作业

1. 防火墙支持那些NAT技术,主要应用场景是什么? 防火墙支持几乎所有的NAT技术,包括源NAT、目标NAT、双向NAT等,主要应用场景是保护内部网络免受外部网络的攻击 NAT技术可以将IP数据报文头中的IP地址转换为另一个IP地址&#xff…

stc8H驱动并控制三相无刷电机综合项目技术资料综合篇

stc8H驱动并控制三相无刷电机综合项目技术资料综合篇 🌿相关项目介绍《基于stc8H驱动三相无刷电机开源项目技术专题概要》 🔨停机状态,才能进入设置状态,可以设置调速模式,以及转动方向。 ✨所有的功能基本已经完成调试,目前所想到的功能基本已经都添加和实现。引脚利…

C++入门知识

Hello,今天我们分享一些关于C入门的知识,看完至少让你为后面的类和对象有一定的基础,所以在讲类和对象的时候,我们需要来了解一些关于C入门的知识。 什么是C C语言是结构化和模块化的语言,适合处理较小规模的程序。对…

【Python从入门到进阶】37、selenium关于phantomjs的基本使用

接上篇《36、Selenium 动作交互》 上一篇我们介绍了selenium操作网页的动作内容。本篇我们来学习有关phantomjs的相关知识。 一、selenium的缺点 在介绍PhantomJS之前,让我们先讨论一下直接使用Selenium的一些缺点。 1、显示浏览器窗口:Selenium通常需…

CUDA学习笔记0924

一、nvprof分析线程束和内存读写 (1)线程束占用率分析 线程束占用率:nvprof --metrics achieved_occupancy (2)内存读写分析 内核数据读取效率:nvprof --metrics gld_throughput 程序对设备内存带宽利…

《动手学深度学习 Pytorch版》 7.4 含并行连接的网络(GoogLeNet)

import torch from torch import nn from torch.nn import functional as F from d2l import torch as d2l7.4.1 Inception块 GoogLNet 中的基本卷积块叫做 Inception 块(大概率得名于盗梦空间),由 4 条并行路径组成。 前 3 条路径使用窗口…

【性能测试】JMeter:集合点,同步定时器的应用实例!

一、集合点的定义 在性能测试过程中,为了真实模拟多个用户同时进行操作以度量服务器的处理能力,可以考虑同步虚拟用户以便恰好在同一时刻执行操作或发送请求。 通过插入集合点可以较真实模拟多个用户并发操作。 (注意:虽然通过加入集合点可…

Go内置函数make和new的区别?

首先纠正一下make 和 new 是内置函数,不是关键字。 变量初始化,一般分为2步,变量声明变量内存分配,var 关键字就是用来声明变量的,new和make 函数主要是用来分配内存的。 var 声明值类型的变量时,系统会默…

Vector Art - 矢量艺术

什么是矢量艺术? 矢量图形允许创意人员构建高质量的艺术作品,具有干净的线条和形状,可以缩放到任何大小。探索这种文件格式如何为各种规模的项目提供创造性的机会。 什么是矢量艺术作品? 矢量艺术是由矢量图形组成的艺术。这些图形是基于…

怒刷LeetCode的第3天(Java版)

目录 第一题 题目来源 题目内容 解决方法 方法一:动态规划 第二题 题目来源 题目内容 解决方法 方法一:模拟 方法二:数学规律 方法三:分组 第三题 题目来源 题目内容 解决方法 方法一:数学方法 方法…

QT:使用行编辑器、文本编辑器、单选按钮、水平布局、垂直布局做一个小项目

widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QLineEdit> //行编辑器 #include <QTextEdit> //文本编辑器 #include <QRadioButton> //单选按钮class Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *pare…

USB总线-Linux内核USB3.0主机控制器驱动框架分析(十二)

1.概述 如下图所示&#xff0c;Linux内核中USB主机体系结构由五部分组成&#xff0c;分别为Application Software、USB Class Driver、USB Core(USB Driver)、USB Host Controller Driver、USB Host Controller。应用程序处于用户空间&#xff0c;通过系统调用访问Class Drive…

关于计算机找不到d3dx9_43.dll,无法继续执行代码修复方法

d3dx9_43.dll是一个动态链接库文件&#xff0c;它是DirectX的一个组件&#xff0c;主要用于处理游戏中的图形、声音等多媒体元素。当这个文件丢失时&#xff0c;可能会导致以下问题&#xff1a; 1. 游戏无法正常运行&#xff1a;由于d3dx9_43.dll负责处理游戏中的多媒体元素&a…

Jumpserver堡垒机

一、堡垒机概述 1、堡垒机的基本概念 堡垒机也是一台服务器&#xff0c;在一个特定的网络环境下&#xff0c;为了保障网络和数据不受来自外部和内部用户的入侵和破坏&#xff0c;而运用各种技术手段实时收集、监控网络环境中每一个组成部分&#xff08;服务器&#xff09;的系…

C进阶-数据的存储

数据类型介绍 内置类型&#xff1a; //数据类型中的内置类型 // char //字符数据类型 // short //短整型 // int //整型 // long //长整型 // long long //更长的整型 // float //单精度浮点数 // double //双精度浮点数 //数据类型中的内置类型 单位是字节 // char //字…

大厂面试之算法篇

目录 前言 算法对于前端来说重要吗&#xff1f; 期待你的答案 算法 如何学习算法 算法基础知识 时间复杂度 空间复杂度 前端 数据结构 数组 最长递增子序列 买卖股票问题 买卖股票之交易明细 硬币找零问题 数组拼接最小值 奇偶排序 两数之和 三数之和 四数之…

速码!!BGP最全学习笔记:IBGP和EBGP基本配置

实验1&#xff1a;配置IBGP和EBGP 实验目的 熟悉IBGP和EBGP的应用场景掌握IBGP和EBGP的配置方法 实验拓扑 想要华为数通配套实验拓扑和配置笔记的朋友们点赞关注&#xff0c;评论区留下邮箱发给你! 实验步骤 1.IP地址的配置 R1的配置 <Huawei>system-view …

Android之AMessage机制存/取原理(四十四)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药. 更多原创,欢迎关注:Android…

Fiddler抓包工具配置+Jmeter基本使用

一、Fiddler抓包工具的配置和使用 在编写网关自动化脚本之前&#xff0c;得先学会如何抓包&#xff0c;这里以Fiddler为例。会抓包的同学可以跳过这一步&#xff0c;当然看看也是没坏处的…… 局域网络配置 将要进行抓包的手机与电脑连入同一局域网&#xff0c;电脑才能够抓到…

Elasticsearch(Es搜索(简单使用、全文查询、复合查询)、地理位置查询、特殊查询、聚合操作、桶聚合、管道聚合)

Elasticsearch&#xff08;三&#xff09;——Es搜索&#xff08;简单使用、全文查询、复合查询&#xff09;、地理位置查询、特殊查询、聚合操作、桶聚合、管道聚合 一、Es搜索 这里的 Es 数据博主自己上网找的&#xff0c;为了练习 Es 搜索。 1、Elasticsearch 搜索入门 …