【深度学习】卷积神经网络之双阶段目标检测|R-CNN、SPP-Net、Fast-RCNN、Faster-RCNN、R-FCN

news2024/12/21 14:56:16

文章目录

  • 基本概念
  • 一、R-CNN
      • 1. 网络结构
      • 2. 训练流程
      • 3. 测试阶段
      • 5.RNN存在的问题
  • 二、SPP-Net
    • 1. 网络结构
      • 2. 基础知识
          • 共享卷积计算
          • 金字塔池化 Spatial Pyramid Pooling
      • 3. 训练流程
      • 4. 测试流程
      • 5. 存在问题
  • 三、 Fast R-CNN
      • 1. 网络结构
      • 2. 基础知识
          • 感兴趣区域池化层 (ROI pooling)
          • 多任务损失(Multi-task loss)
      • 3.训练&测试流程
  • 四、Faster R-CNN
      • 1. 网络结构
      • 2. RNP
  • 参考文章

基本概念

Selective Search: 主要思想是先按照像素将图像分割成小区域,再查看现有小区域,按照合并规则合并可能性最高的两个相邻区域,重复直到整张图像合并成一个区域位置。
IoU(重叠度Intersection of Uint): 定义两个bounding box的定位精度——两个矩形框的重叠面积占两个矩形框并集的面积比例。

非极大值抑制(NMS): 抑制不是极大值的元素,搜索局部的极大值。
算法步骤:

  1. 在当前类别的候选边界框中寻找得分最高的边界框;
  2. 计算其他边界框与该边界框的IOU值;
  3. 删除所有IOU值大于给定阈值的目边界框;

mAP(mean Average Precision): 给每一类计算AP,然后求平均。

一、R-CNN

1. 网络结构

各级层独立:

Regin proposal-Selective Search
Feature extraction-CNN
Classification-SVM
Bounding box regression

算法主要分为4个步骤:

  1. 通过Selective Search方法获取约2000张候选区域;
    Selective Search算法步骤如上所述。
  2. 对每个候选区域使用CNN提取特征;
    通过区域预处理将区域图片的Bounding box向外膨胀16个像素,变换成 227 × 227 227\times 227 227×227的图片;之后进入预训练好的卷积神经网络得到特征图。
  3. fc7特征送入每一类SVM分类器,判断该区域是否属于该类;
    2000 × 4096 2000\times 4096 2000×4096维特征与20个SVM分类器组成的 4096 × 20 4096\times 20 4096×20维的权重矩阵相乘,得到 2000 × 20 2000\times 20 2000×20维矩阵,该矩阵表示表示每个建议框是某类目标的得分。
  4. conv5特征进行Bounding box回归精调预测框结构
    通过非极大值抑制(NMS)处理后的剩余边界框进行进一步筛选,接着使用20个回归器对20个类别的回归框进行回归操作,并且对候选框进行修正得到最终的边界框。

2. 训练流程

  • 预训练:使用ImageNet数据集对CNN模型进行预训练初始化网络参数。

    • 由于目标检测的训练数据较少,如果要直接采用随机初始化CNN参数的方法,那么目前的训练数据量是远远不够的,所以采用有监督的预训练——直接使用Alexnet,VGG的网络参数。
  • fine- tuning:使用SS算法生成的所有区域对预训练出的网络进行微调。

    • Log loss
    • 微调是将卷积层最后一层替换掉,替换为N+1个神经元的softmax层(N类+1类背景),然后这一层采用参数随机初始化的方法,其他网络层的参数不变,接着以SGD训练:开始的时候,SGD学习率选择0.001,在每次训练的时候,我们batch size大小选择128,其中32个正样本、96个负样本。
    • 用SS算法挑选出的候选框与人工标注矩形框的重叠区域IoU>0.5,分为正样本,反之分为负样本(背景类别)
    • 如果不针对特定的任务进行fine-tuning,而是仅仅把CNN当作特征提取器,卷积层学到的就是基础的共享特征提取层,可以用于提取各种图片的特征,而f6,f7所学习到的特征是用于针对特定任务的特征卷积层所学习到的为共性特征,全连接层所学习到的是特定任务的特征。
      在这里插入图片描述
  • SVM分类:使用微调后的网络中的fc7训练SVM线性分类器。

    • Hinge Loss
    • 每个类别(N类)对应一个分类器
    • IoU阈值定义为0.3,当重叠度大于0.3时定义为正样本,反之。
    • 一旦CNN fc7层特征被提取出来,将每个物体类训练一个svm分类器,通过分类判断是需要的物体还是backgound。
    • 在这里插入图片描述
  • Bounding Box回归:使用微调后的网络中的conv5训练Bounding Box回归模型。

    • Square Loss

    • 每个类别训练(N类)训练一个回归模型

    • IoU阈值定义为0.3,当重叠度大于0.3时定义为正样本,反之。

    • 由于目标检测问题的衡量标准是重叠面积:许多看似准确的检测结果,往往因为候选框不够准确,重叠面积很小。故需一个位置精修操作:对每一类目标使用一个线性回归模型进行精修。正则项 λ = 1000 \lambda=1000 λ=1000。输入为 conv5的4096维特征,输出为xy方向的缩放和平移。

3. 测试阶段

  1. 使用SS算法提取出2000个区域目标图;
  2. 将每个区域目标图通过预处理归一化到 227 × 227 227\times 227 227×227
    使用fine-tune过的CNN计算2套特征
  3. fc7 -> SVM -> 类别分值
    • NMS(IoU>=0.5)获取无冗余的区域子集
  4. con5 -> Bounding box -> Box偏差
    • 使用Bbox偏差修正区域子集

5.RNN存在的问题

  1. 测试速度慢,测试一张图片在CPU上需要53S,使用Selective Search算法提取候选框需要2S,一张图像内候选框之间存在大量重叠,提取特征操作存在大量冗余;
  2. 训练速度慢,过程极其繁琐,不仅需要训练图像分类网络,还需要训练SVM分类器、Bounding Box回归器,训练过程都是相互独立的;
  3. 训练所需空间大,对于SVM和Bounding Box回归训练,需要从每个图像中的每个目标候选框提取特征,并写入磁盘,对于非常深的网络,训练集上5K图像上提取的特征需要数百GB的存储空间。

Q: 为什么使用SVM分类不直接使用softmax多分类器?
A: svm训练和cnn训练过程的正负样本定义方式各有不同,导致最后采用CNN softmax输出比采用svm精度还低。训练过程中对于训练数据的标注很宽泛(bounding box只包含一部分)标记为正样本,容易过拟合;svm对于训练样本数据的iou要求严格(bounding box包含整个物体)。


二、SPP-Net

在R-CNN的基础上提出两个创新点:共享卷积计算和金字塔池化(spatial pyramid pooling)。

  1. 共享卷积计算: 在conv5层输出提取所有区域的特征。
  2. 金字塔池化: 为不同尺寸的区域,在Conv5输出提取特征;映射到尺寸固定的全连接层上。

1. 网络结构

Regin proposal-Selective Search
Feature extraction--CNN+SPP
Classification-SVM
Bounding box regression

算法主要分为5步骤(大部分与RCNN类似):

  1. 通过Selective Search方法获取约2000张候选区域;
  2. 对每个候选区域使用CNN提取特征;
  3. 对CNN提取后的特征图提取SPP特征
  4. fc7特征送入N类SVM分类器,判断该区域是否属于该类;
  5. conv5特征进行N类Bounding box回归精调预测框结构

2. 基础知识

共享卷积计算

直接输入整张图片,进行一次共享卷积计算,将conv5层输出所有区域的特征。

金字塔池化 Spatial Pyramid Pooling

在R-CNN中,需要将每个候选框统一大小后分别作为CNN的输入,低效而费时。SPP提出只对原图进行一次卷积计算,得到整张图的卷积特征,然后找到每个候选框在特征图上的映射,将映射作为候选框的卷积特征输入到SPP层中,变换成相同尺度。
具体操作:
将spp替换conv5中的pooling层,spp的思路是对于任意大小的feature map首先分成3个不同level的切割图,切割尺寸分别为 1 × 1 1\times 1 1×1 2 × 2 2\times 2 2×2 4 × 4 4\times 4 4×4,每个切割图得到1,4,16个块,然后在每个块上最大池化,池化后的特征拼接得到一个固定维度的输出。以满足全连接层的需要。

3. 训练流程

  • 预训练:使用ImageNet数据集对CNN模型进行预训练初始化网络参数。
  • SPP特征:计算所有SS区域的SPP特征。
  • fine-tuning:使用SPP特征对全连接层进行微调。
  • SVM分类:使用微调过后的fc7特征对每一类进行svm分类。
  • bounding box回归:使用spp特征进行bounding box回归。
    • R-CNN是使用conv5进行bounding box回归
    • 只对全连接层进行fine-tuning

4. 测试流程

基础结构与R-CNN类似,将预处理过程去除,对图片进行共享卷积计算,将得到的conv5层特征图和SS算法提取的区域图进行映射得到原图区域作为SPP层的输入,SPP层将不同尺寸的映射到原图的区域进行金字塔池化将其变成尺寸相同的特征图,再进入全连接层,后续步骤和R- CNN类似。

  • 与R-CNN不同的是SPP在图片级计算不做fine-tunning,只在区域级计算时计算时进行fine-tunning。

5. 存在问题

  1. 继承了RCNN剩余问题: 需要存储大量特征、复杂的多阶段训练、训练时间仍长
  2. 新问题:SPP层之前的所有卷积层参数不能finetune

三、 Fast R-CNN

在SPP的基础上提出3个改进:

  1. 实现end-to-end单阶段训练,通过多任务损失函数实现end-to-end.
  2. 所有层的参数都可以finetune
  3. 不需要离线存储特征文件

Fast R-CNN在SPP Net的基础上提出两个优化点:感兴趣区域池化层(ROI pooling)和多任务损失函数(Multi- task loss)。

1. 网络结构

第二阶段
Classification-SVM
Feature extraction-CNN
Bounding box regression
Regin proposal-Selective Search

算法步骤分为5步:

  1. 通过Selective Search方法获取约2000张候选区域;
  2. 对每个候选区域使用CNN提取特征;
  3. 对CNN提取后的特征图提取ROI特征
  4. fc7特征送入N+1类softmax分类,判断该区域是否属于哪类;
  5. conv5特征进行N类Bounding box回归精调预测框结构

与SPP网络结构异同点:

  • 提取特征的backbone由AlexNet改换为VGG,提取特征能力更强
  • SPP Pooling替换为ROI Pooling
  • SVM分类和回归任务使用多任务损失函数替代,目标检测任务就不需要分阶段训练
  • 提取到ROI特征向量后并联连接这两个分支。使用softmax替代SVM分类器(C+1类,包含background)。FC全连接边界框回归器替代了LR回归模型,新的边界框回归器输出对应(C + 1)个类别的候选框边界回归参数(dx, dy, dw, dh),共输出(C + 1) * 4个节点,如下图每4个一组,这里回归参数的含义与RCNN保持一致。

2. 基础知识

感兴趣区域池化层 (ROI pooling)

ROI pooling是SPP pooling的单层特例。ROI pooling是将ROI区域的卷积特征拆分为 H × W H \times W H×W网格,然后对每个Bin内的所有特征进行Max pooling。

多任务损失(Multi-task loss)

损失函数为: L ( p , u , t u , v ) = L c l s ( p , u ) + λ [ u ≥ 1 ] L l o c ( t u , v ) L(p,u,t^u,v)=L_{cls}(p,u)+\lambda [u\ge 1]L_{loc}(t^u,v) L(p,u,tu,v)=Lcls(p,u)+λ[u1]Lloc(tu,v)

该损失函数分为两部分,第一部分分类器的损失: L c l s ( p , u ) = − l o g p u L_{cls}(p,u)=-logp_u Lcls(p,u)=logpu,其中p为每个ROI的概率分布,u为Ground truth类别。

第二部分为回归器损失L1 loss:
L l o c ( t u , v ) = ∑ i = { x , y , w , h } s m o o t h L 1 ( t i u − v i ) L_{loc}(t^u,v)=\sum_{i=\{x,y,w,h\}}smooth_{L1}(t_i^u-v_i) Lloc(tu,v)=i={x,y,w,h}smoothL1(tiuvi)
s m o o t h L 1 ( x ) = { 0.5 x 2 , ∣ x ∣ < 1 ∣ x ∣ − 0.5 , o t h e r w i s e smooth_{L1}(x)=\left\{\begin{matrix} 0.5x^2 & ,\left | x \right |< 1 \\ \left | x \right |-0.5 &,otherwise \end{matrix}\right. smoothL1(x)={0.5x2x0.5,x<1,otherwise
其中 v = { v x , v y , y w , v h } v=\{v_x,v_y,y_w,v_h\} v={vx,vy,yw,vh}为偏差目标, t u = { t x u , t y u , t w u , t h u } t^u=\{t_x^u,t_y^u,t_w^u,t_h^u\} tu={txu,tyu,twu,thu}为预测偏差, [ u ≥ 1 ] [u\ge1] [u1]为指示函数,当该值为1的时候分类为物体类别,有回归loss;当值为0时,分类为背景类别,没有回归loss.
预测偏差的计算公式:
t x = ( G x − P x ) / P w t y = ( G y − P y ) / P h t w = l o g ( G w / P w ) t h = l o g ( G h / P h ) \begin{matrix} t_x=(G_x-P_x)/P_w\\ t_y=(G_y-P_y)/P_h\\ t_w=log(G_w/P_w)\\ t_h=log(G_h/P_h) \end{matrix} tx=(GxPx)/Pwty=(GyPy)/Phtw=log(Gw/Pw)th=log(Gh/Ph)

3.训练&测试流程

训练流程: 将整张图片输入到CNN网络中,同时进行ss算法提取候选框,在Conv5特征图中映射到候选框的特征矩阵,做ROI Pooling,规整到固定大小,然后经过全连接层,分别将全连接层后的特征输入到SoftMax分类器和Bounding box回归器中(根据输出维度需要再接一层FC),使用多任务组合损失函数进行计算和梯度回传,实现端到端的网络训练。

在pre-trained模型上做finetune。在Fast R-CNN训练时,随机梯度下降(SGD)的小批量(mini-batches)采用分层抽样,首先采样N个图像,然后对于每一张图像采样R/N个RoI区域。

  • batch_size=128
  • Batch尺寸(128)=每个batch的图片数量(2)*每个图片ROI数量(64)
  • 一个batch来自两张图片,每张图片各自取64个候选区域,正负样本比为1:3,正样本判定条件为IOU值大于0.5,负例的判定条件是IOU要在0.1-0.5之间,是一种难例挖掘的策略。

测试流程: 与训练过程相同,为每一类加上后处理NMS算法即可。


四、Faster R-CNN

为解决Fast RCNN算法中SS选择耗时时间长的问题,Faster RCNN提出一个RPN(Region Proposal Network)网络,即其他部分与Fast RCNN相同,即Faster RCNN = RPN + Fast RCNN,RPN取代了离线Selective Search模块,解决了性能瓶颈。同时Faster RCNN进一步共享卷积层计算,并基于Attention机制,待改


1. 网络结构

Faster RCNN = RPN + Fast RCNN,主要分为以下几个步骤:
  • 将图像输入到CNN网络得到特征图
  • 使用RPN网络结构生成候选框,然后将这些RPN生成的候选框投影到第一步得到相应的特征矩阵
  • 然后将每个特征矩阵通过ROI Pooling层缩放到固定的 7 × 7 7\times7 7×7大小的特征图,最后将特征图flatten后经过一系列全连接层得到分类和回归的结果。

2. RNP

1.网络结构
RNP网络具体结构如下:

  • 向RNP网络输入图片Conv5 13 × 13 × 256 13\times13\times256 13×13×256的特征图,依次经过 3 × 3 × 256 3\times3\times256 3×3×256的卷积核和 1 × 1 × 256 1\times 1\times256 1×1×256的卷积核和ReLu激活函数,得到 3 × 3 × 256 3\times3\times256 3×3×256的特征矩阵。
  • 将得到的特征矩阵并联输入到两个分支中,第一个分支 c l s   l a y e r cls \ layer cls layer用2k个 1 × 1 × 256 1\times 1\times256 1×1×256卷积核进行卷积,输出2k个数,表示某个区域有没有物体的分数。
  • 第二个分支 r e g   l a y e r reg \ layer reg layer用4k个 1 × 1 × 256 1\times 1\times256 1×1×256卷积核进行卷积,最后输出4k个数,表示x,y,w,h的偏移量。

2.Anchor
Anchor box为图像中的参考框,对应网络结构中的k,一般来说k=9,分别包括了3个尺度和3个长宽的ratio的组合。

  • 3个尺度:[128,256,512]
  • 3个ratio:1:1,1:2,2:1
  • RPN网络在输入特征图后进行 3 × 3 3 \times 3 3×3的卷积,特征图位置和原图像之间有对应关系,这里Anchor box参考框的中心就是卷积核 的中心,在conv5层上每卷积一次就会自动对应9个Anchor box,这样拟合的边界框偏移量就是Anchor box的偏移量。

3.Loss Function
L ( { p i } , { t i } ) = 1 N c l s ∑ i L c l s ( p i , p i ∗ ) + λ 1 N r e g ∑ i p i ∗ L r e g ( t i , t i ∗ ) L(\{p_i\},\{t_i\})=\frac{1}{N_{cls}\sum_{i}L_{cls}(p_i,p_i^*) }+\lambda \frac{1}{N_{reg}\sum_{i}p_i^*L_{reg}(t_i,t_i^*) } L({pi},{ti})=NclsiLcls(pi,pi)1+λNregipiLreg(ti,ti)1

  • p i p_i pi为第i个anchor预测为真实标签的概率
  • p i ∗ p_i^* pi为正样本时为1,负样本为零(作用类似于Faster RCNN中艾佛森括号)
  • t i t_i ti表示预测第i个Anchor box的边界框回归参数
  • t i ∗ t_i^* ti表示第i个Anchor box对应的GT Box
  • N c l s N_{cls} Ncls表示一个mini-batch中所有样本的数量
  • N r e g N_{reg} Nreg表示Anchor box位置个数

第一部分为分类损失,若使用多类别的Softmax交叉熵损失,由于分类类别只有背景和前景,因此对于k个Anchor box就有2k个值。若使用的是二分类的交叉熵损失,对于每个Anchor box只计算一个概率,对于k个Anchor box就有k个值。

第二部分为边界框回归损失,形式和Faster RCNN类似。

4.RPN Loss和Fast RCNN Loss联合训练
具体步骤如下:

  1. 训练RPN网络
    使用Image Net预训练分类模型初始化卷积层参数;
  2. 训练Fast RCNN网络
    使用Image Net预训练分类模型初始化卷积层参数;Region proposals由步骤1的RPN生成
  3. 调优RPN
    使用Fast RCNN卷积层参数对其进行初始化;
    固定卷积层,finetune剩余层
  4. 调优Fast RCNN
    固定卷积层,finetune剩余层;Region proposals由步骤3的RPN生成。

参考文章

RCNN- 将CNN引入目标检测的开山之作
在Rcnn中为什么使用IoU非极大值抑制?

目标检测(3)-SPPNet

fast rcnn 论文解读(附代码链接)
Fast R-CNN

RCNN系列(R-CNN、Fast-RCNN、Faster-RCNN、Mask-RCNN)
RCNN、Fast-RCNN、Faster-RCNN的算法步骤以及其中的难点
一文读懂目标检测:R-CNN、Fast R-CNN、Faster R-CNN、YOLO、SSD
快速的区域卷积网络方法(Fast R-CNN)

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

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

相关文章

别再被数据分析“割韭菜了”,光学python、BI没有用,上项目才行

前几天有个粉丝找我&#xff0c;说花699报了一门数据分析课程&#xff0c;还有实战项目&#xff0c;让我帮她看看她做的数据分析。项目的名称叫&#xff1a;豆瓣高分电影分析。她写了一大堆内容&#xff0c;我也没细看&#xff0c;截取几张可视化图表给大家&#xff0c;大家觉得…

嵌入式串口转CAN模块详细参数分析

引脚定义和尺寸 测试评估板 将模块插到评估板上&#xff0c;注意模块引脚标注要与评估板上插座引脚标注相对应&#xff0c;然后进行参数设置。特别的&#xff0c;也可以在模块集成到电路板上后&#xff0c;直接通过模块的CAN口来配置参数。 通过CAN通道配置参数 模块集成到用…

基于javaweb+mysql的就业管理系统设计和实现(java+springboot+ssm)

基于javawebmysql的就业管理系统设计和实现(javaspringbootssm) 运行环境 Java≥8、MySQL≥5.7 开发工具 eclipse/idea/myeclipse/sts等均可配置运行 适用 课程设计&#xff0c;大作业&#xff0c;毕业设计&#xff0c;项目练习&#xff0c;学习演示等 功能说明 基于jav…

windows10下安装fbprophet及使用虚拟环境

Prophet是Facebook 在2017年2月开源的一款基于 Python 和 R 语言的时间序列预测框架&#xff0c;也是一种数据分析工具。github官网&#xff1a;https://github.com/facebookincubator/prophet prophet是基于可分解&#xff08;趋势季节节假日&#xff09;模型的开源库&#xf…

【云原生 | 从零开始学istio】五、istio灰度发布以及核心资源

istio灰度发布接着上一章部署bookinfo通过 Istio 实现灰度发布什么是灰度发布&#xff1f;使用 istio 进行灰度发布istio 核心资源解读GatewayVirtualServiceDestinationRule写在最后接着上一章部署bookinfo 1.进入 istio 安装目录。 2.istio 默认自动注入 sidecar&#xff0c…

面试题 17.04. 消失的数字

顺序表题目消失的数字1、题目详情2、题目详解&#xff08;1&#xff09;方法1&#xff08;2&#xff09;方法2&#xff08;3&#xff09;方法3&#xff08;4&#xff09;方法4&#xff1a;消失的数字 1、题目详情 题目链接&#xff1a;leetcode消失的数字 数组nums包含从0到…

CSS——基础学习

目录 一&#xff0c;什么是CSS 二&#xff0c;基本语法规范 三&#xff0c;引入方式 1.内部样式表 2.行内样式表 3.外部样式 四&#xff0c;代码风格 1.样式格式 (1).紧凑风格 (2).展开风格(推荐) 2.样式大小写 3.空格规范 五&#xff0c;选择器 1.选择器的种类 …

牛客网-《刷C语言百题》第二期

✅作者简介&#xff1a;嵌入式入坑者&#xff0c;与大家一起加油&#xff0c;希望文章能够帮助各位&#xff01;&#xff01;&#xff01;&#xff01; &#x1f4c3;个人主页&#xff1a;rivencode的个人主页 &#x1f525;系列专栏&#xff1a;《C语言入门必刷百题》 &#x…

[每周一更]-(第18期):Postman全局配置token信息,加速测试接口进度

Postman作为API调试工具&#xff0c;对于后端开发至关重要&#xff0c;开发、测试、写文档&#xff0c;都必不可少&#xff0c;但是日常使用过程中都是token校验&#xff0c;不同接口之间都会携带token头信息&#xff0c;但是接口的情况&#xff0c;除了写请求参数也要一个个配…

FCOS相关

因为用到了某家带bpu的(懂的都懂) 他们支持这个只是demo做的有点差 还没有c的~~ 因为他们用所以就搬来了 勿怪啊 基于昨天和他们相关的tops 又说说这个!! FCOS是一种基于全卷积的单阶段目标检测算法&#xff0c;并且是一种Anchor box free的算法。其实现了无Anchor&#xff…

该反省了!元数据管理平台为什么会被当成一件“摆设”?

尽管企业越来越意识到元数据管理的重要性&#xff0c;但是在实际中很多应用并没有发挥应有的价值。 前不久与一个行业客户沟通&#xff0c;他提出让他们帮着总结一下元数据管理到底有哪些应用场景&#xff0c;他感觉元数据管理平台就是一种摆设呢&#xff1f; 说者无意听者有心…

1978,1990,2020,2026,2041,2051

文章目录总结1978. 上级经理已离职的公司员工1990. 统计实验的数量[建立两个临时表并笛卡尔积]2020. 无流量的帐户数2026. 低质量的问题2041. 面试中被录取的候选人2051.商店中每个成员的类别总结 多表左连接转2051题【重点】 其他待补充 1978. 上级经理已离职的公司员工 # Wr…

【前端】HTML入门 —— HTML的常见标签

JavaEE传送门JavaEE 网络原理——No.4 传输层_TCP协议中的延迟应答, 捎带应答, 面向字节流与TCP的异常处理 网络原理——网络层与数据链路层 目录网站HTML认识 HTML 标签HTML 常见标签注释标签标题标签段落标签换行标签格式化标签图片标签超链接标签表格标签列表标签表单标签…

【Java学习笔记】第三章 数组知识点大全

文章目录3. 数组3.1 数组的概述3.2 一维数组的使用3.2.1 一维数组初始化3.2.2 一维数组内存解析3.3 多维数组的使用3.3.1 多维数组初始化3.3.2 多维数组的注意事项&#xff1a;3.3.3 int[] x,y[]3.3.4 多维数组的内存解析3.4 数组中涉及到的常见算法3.4.1 线性查找3.4.2 二分法…

【PCL】PCL点云库介绍及VS环境配置

文章目录PCL介绍Windows PCL环境配置PCL介绍 PCL是跨平台点云处理库&#xff0c;用来点云可视化、分割、聚类等应用。 PCL官网在这&#xff1a;https://pointclouds.org/ Github库在这&#xff08;这里用1.8.1&#xff09;&#xff1a;https://github.com/PointCloudLibrary…

DASCTF X GFCTF 2022十月挑战赛 - pwn

DASCTF X GFCTF 2022十月挑战赛 - pwn 简单题&#xff0c;自己做了一下发现要比官方wp思路麻烦一点&#xff0c;所以这里就用官方wp的思路 高版本编译出来的&#xff0c;所以没有csu这种万能的gadget&#xff0c;果断看一下汇编 看完之后仔细思考了一下发现这里完全可以使用…

案例篇:Python爬虫的多重领域使用

大家好呀&#xff01; 相信大家早有体会&#xff0c;大数据时代已到&#xff0c;数据的获取和分析已被应用于各行各业&#xff0c;在诸多领域承担着重要决策的作用&#xff0c;如互联网就业选择。 Python爬虫作为最好的数据采集技术&#xff0c;市场对它需求一直在增涨&#xf…

vue3-tauri-chat:基于tauri聊天实例|tauri仿微信客户端

Vue3.jsTauri桌面端聊天实例|tauri仿微信/QQ聊天TauriChat。 基于taurivite3.xvue3element-plus等技术开发客户端仿微信/QQ聊天实战案例。实现发送消息、预览图片/视频/网址链接、拖拽/粘贴发送图片、朋友圈等功能。 使用技术 编辑器&#xff1a;VScode使用技术&#xff1a;ta…

【C++笔试强训】第十五天

&#x1f387;C笔试强训 博客主页&#xff1a;一起去看日落吗分享博主的C刷题日常&#xff0c;大家一起学习博主的能力有限&#xff0c;出现错误希望大家不吝赐教分享给大家一句我很喜欢的话&#xff1a;夜色难免微凉&#xff0c;前方必有曙光 &#x1f31e;。 &#x1f4a6;&a…

C++模板

目录 ​一、认识模板 1.什么是模板 2.模板的分类 二、函数模板 1.泛型和函数模板 2.函数模板的格式 三、类模板 四、实例化 1.隐式实例化 2.显式实例化 3.隐式类型转换 4.模板参数的匹配原则 一、认识模板 1.什么是模板 模板&#xff08;Template&#xff09;指C…