【深度学习 目标检测】R-CNN系列算法全面概述(一文搞懂R-CNN、Fast R-CNN、Faster R-CNN的来龙去脉)

news2025/1/23 13:14:43

🚀个人主页:为梦而生~ 关注我一起学习吧!
💡相关专栏
深度学习 :现代人工智能的主流技术介绍
机器学习 :相对完整的机器学习基础教学!
💡往期推荐
【机器学习基础】一元线性回归(适合初学者的保姆级文章)
【机器学习基础】多元线性回归(适合初学者的保姆级文章)
【机器学习基础】决策树(Decision Tree)
【机器学习基础】K-Means聚类算法
【机器学习基础】DBSCAN
【机器学习基础】支持向量机
【机器学习基础】集成学习
【机器学习 & 深度学习】神经网络简述
【机器学习 & 深度学习】卷积神经网络简述
💡本期内容:R-CNN系列算法是经典的two-stage的目标检测算法,相较于one-stage精度更高,但是速度略有下降。从R-CNN到Fast R-CNN和Faster R-CNN,整个思路是:候选框选取——特征提取——对候选框进行分类(判定类别)和回归(修正候选框位置)。R-CNN系列算法在目标检测领域有着重要的影响和应用,是计算机视觉领域的重要算法之一。


文章目录

  • 0 前言
  • 1 R-CNN
    • 1.1 算法步骤
      • 1.1.1 候选区域的生成
      • 1.1.2 提取特征
      • 1.1.3 判定类别
      • 1.1.4 精细修正候选框的位置
    • 1.2 算法总结
    • 1.3 存在问题
  • 2 Fast R-CNN
    • 2.1 算法步骤
    • 2.2 与Fast R-CNN的区别
      • 2.2.1 共享卷积层
      • 2.2.2 ROI pooling
      • 2.2.3 分类器和边界框回归器
      • 2.2.4 损失函数
    • 2.3 算法总结
  • 3 Faster R-CNN
    • 3.1 算法步骤
    • 3.2 RPN
      • 3.2.1 anchor
      • 3.2.2 IOU
      • 3.2.3 损失函数
    • 3.3 Faster R-CNN的训练
    • 3.4 算法总结


0 前言

RCNN在2013年在目标检测领域首次使用深度学习和卷积神经网络,他与Alex net一起引爆了21世纪第二个十年计算机视觉领域的技术爆炸。

在这里插入图片描述

后续所有基于深度学习的目标检测——特别是两阶段目标检测算法。如Fast RCNN Faster R-CNN,都是在R-CNN上进行的迭代升级。

在这里插入图片描述

所以弄懂RCNN特别重要。甚至可以说,没弄懂RCN后边的算法根本就看不懂。


1 R-CNN

1.1 算法步骤

  1. 一张图像生成1K~2K个候选区域(使用Selective Search方法)
  2. 对每个候选区域,使用深度网络提取特征
  3. 特征送入每一类的SVM分类器,判别是否属于该类
  4. 使用回归器精细修正候选框位置

在这里插入图片描述

1.1.1 候选区域的生成

利用selective Search算法通过图像分割的方法得到一些原始区域,然后使用一些合并策略将这些区域合并,得到一个层次化的区域结构,而这些结构就包含着可能需要的物体。

在这里插入图片描述

1.1.2 提取特征

将2000候选区域缩放到227x227pixel,接着将候选区域输入事先训练好的AlexNet CNN网络获取4096维的特征得到2000×4096维矩阵。

在这里插入图片描述

1.1.3 判定类别

将2000×4096维特征与20个SVM组成的权值矩阵4096×20相乘,获得2000×20维矩阵表示每个建议框是某个目标类别的得分。分别对上述2000×20维矩阵中每一列即每一类进行非极大值抑制剔除重叠建议框,得到该列即该类中得分最高的一些建议框。

在这里插入图片描述

进行非极大值抑制处理

在这里插入图片描述

1.1.4 精细修正候选框的位置

对NMS处理后剩余的建议框进一步筛选。接着分别用20个回归器对上述20个类别中剩余的建议框进行回归操作,最终得到每个类别的修正后的得分最高的bounding box。

在这里插入图片描述

如图,黄色框口P表示建议框Region Proposal,绿色窗口G表示实际框Ground Truth,红色窗口 G ^ \hat{G} G^表示Region Proposal进行回归后的预测窗口,可以用最小二乘法解决的线性回归问题。

1.2 算法总结

在这里插入图片描述

R-CNN算法可以分为以下步骤:

  1. 候选区域生成:利用Selective Search算法在每张图像上生成约2000个候选区域。这些候选区域被认为是可能包含目标的区域。
  2. 特征提取:将每个候选区域缩放为227×227,然后输入到预训练的CNN网络中,提取出4096维的特征向量。这一步将每个候选区域转换为固定大小的向量。
  3. 分类和回归:对于每个候选区域,使用SVM分类器进行分类,判断是否属于该类。然后使用回归器精细修正候选框的位置。

到后面我们会看到,这几个部分会不断融合,形成一个端到端的框架。

1.3 存在问题

  1. 测试速度慢:
    测试一张图片约53s (CPU)。用Selective Search算法提取候选框用时约2秒,一张图像内候选框之间存在大量重叠,提取特征操作冗余。
  2. 训练速度慢:
    过程及其繁琐
  3. 训练所需空间大:
    对于SVM和bbox回归训练,需要从每个图像中的每个目标候选框提取特征,并写入磁盘。对于非常深的网络,如VGG16,从VOC07训练集上的5k图像上提取的特征需要数百GB的存储空间。

2 Fast R-CNN

Fast R-CNN是作者Ross Girshick继R-CNN后的又一力作。同样使用vGG16作为网络的backbone,与R-CNN相比训练时间快9倍,测试推理时间快213倍,准确率从62%提升至66%(再Pascal voc数据集上)。

在这里插入图片描述

2.1 算法步骤

  1. 一张图像生成1K~2K个候选区域(使用Selective Search方法)
  2. 将图像输入网络得到相应的特征图,将SS算法生成的候选框投影到特征图上获得相应的特征矩阵
  3. 将每个特征矩阵通过ROI pooling层缩放到7x7大小的特征图,接着将特征图展平通过一系列全连接层得到预测结果

在这里插入图片描述

2.2 与Fast R-CNN的区别

2.2.1 共享卷积层

一次性计算整张图像特征

R-CNN依次将候选框区域输入卷积神经网络得到特征。

Fast-RCNN将整张图像送入网络,紧接着从特征图像上提取相应的候选区域。这些候选区域的特征不需要再重复计算

在这里插入图片描述

2.2.2 ROI pooling

不限制输入图像的尺寸,便于计算
统一缩放为7×7大小的特征图

在这里插入图片描述

2.2.3 分类器和边界框回归器

该网络的框架是这样的:

  • 首先将图像输入到CNN网络得到feature map
  • 再根据共享卷积层的映射关系对应到相应的特征矩阵
  • 之后通过ROI pooling层缩放为7×7大小的矩阵
  • 然后进行展平处理,在经过两个全连接层之后,得到feature vector
  • 在feature vector的基础上,再并联两个全连接层
  • 一个是分类器用于分类概率的预测,另一个回归器用于边界框回归参数的预测

分类器输出N+1个类别的概率(N为检测目标的种类,1为背景)共N+1个节点

在这里插入图片描述

边界框回归器输出对应N+1个类别的候选边界框回归参数(dx, dy, dw, dh),共(N+1)x4个节点

在这里插入图片描述

回归的具体计算如下图所示:

在这里插入图片描述

p x , p y , p w , p h p_x,p_y,p_w,p_h px,py,pw,ph分别为候选框的中心x,y坐标,以及宽高
G ^ x , G ^ y , G ^ w , G ^ h \hat{G}_x,\hat{G}_y,\hat{G}_w,\hat{G}_h G^x,G^y,G^w,G^h分别为最终预测的边界框中心x,y坐标,以及宽高

在这里插入图片描述

2.2.4 损失函数

它的损失函数分为分类损失和边界框回归损失
在这里插入图片描述

  • p是分类器预测的softmax概率分布 p = ( p 0 , … , p k ) p=(p_0,…,p_k) p=(p0,,pk)
  • u对应目标真实类别标签
  • t u t^u tu对应边界框回归器预测的对应类别u的回归参数 t x u , t y u , t w u , t h u t^u_x,t^u_y,t^u_w,t^u_h txu,tyu,twu,thu
  • v对应真实目标的边界框回归参数 v x , x y , v w , v h v_x,x_y,v_w,v_h vx,xy,vw,vh

其中,分类损失在原论文中说的是使用log损失 L c l s ( p , u ) = − log ⁡ p u L_{c l s}(p, u)=-\log p_{u} Lcls(p,u)=logpu

边界框回归损失为:
L l o c ( t u , v ) = ∑ i ∈ { x , y , w , h } smooth ⁡ L 1 ( t i u − v i ) smooth ⁡ L 1 ( x ) = { 0.5 x 2  if  ∣ x ∣ < 1 ∣ x ∣ − 0.5  otherwise  \begin{array}{l} L_{l o c}\left(t^{u}, v\right)=\sum_{i \in\{x, y, w, h\}} \operatorname{smooth}_{L_{1}}\left(t_{i}^{u}-v_{i}\right) \\ \operatorname{smooth}_{L_{1}}(x)=\left\{\begin{array}{ll} 0.5 x^{2} & \text { if }|x|<1 \\ |x|-0.5 & \text { otherwise } \end{array}\right. \end{array} Lloc(tu,v)=i{x,y,w,h}smoothL1(tiuvi)smoothL1(x)={0.5x2x0.5 if x<1 otherwise 

2.3 算法总结

在这里插入图片描述

该算法首先还是使用selective search寻找候选框

但是后面的特征提取,分类和回归已经融入到了一个网络,进一步提高了速度。


3 Faster R-CNN

Faster R-CNN是作者Ross Girshick继Fast R-CNN后的又一力作。同样使用vGG16作为网络的backbone,推理速度在GPU上达到5fps(包括候选区域的生成),准确率也有进一步的提升。在2015年的ILSVRC以及cOCO竞赛中获得多个项目的第一名。

在这里插入图片描述

3.1 算法步骤

  1. 将图像输入网络得到相应的特征图
  2. 使用RPN结构生成候选框,将RPN生成的候选框投影到特征图上获得相应的特征矩阵
  3. 将每个特征矩阵通过ROI pooling层缩放到7x7大小的特征图,接着将特征图展平通过一系列全连接层得到预测结果

实际上就是RPN+Fast R-CNN

在这里插入图片描述

所以,接下来只需要详细介绍一下RPN网络结构

3.2 RPN

在Faster R-CNN的训练过程中,RPN网络的训练是第一步。在这个阶段,使用ImageNet预训练的模型初始化RPN网络,并通过端到端的微调来优化网络参数,使其能够生成高质量的候选区域。在后续的训练步骤中,RPN网络和Fast R-CNN网络会共享卷积层,构成一个统一的网络,从而进一步提高目标检测的准确性和效率。

原论文给出的RPN网络的结构:

在这里插入图片描述

  • 该网络使用滑动窗口在feature map上面进行滑动,每次滑动时都会生成一系列候选框(即anchors)
  • 输出的通道数为256-d,再分别连接两个1x1conv,输出2k个score和4k个坐标,
  • 对于k个anchor,得出2k个预测概率和4k个边界框回归参数
  • 分类概率分别为前景和背景的概率,边界框回归参数还是Fast R-CNN提到的那四个
  • 向量的维度与backbone有关,这里使用ZF网络所以是256维,如果是VGG16,那就是512维

3.2.1 anchor

RPN(Region Proposal Network)网络中的anchor是Faster R-CNN中的一个核心概念。Anchor是在特征图上预先定义的一组矩形框,用于在图像中滑动并检测可能包含目标物体的区域。其主要目的是提供一种在图像中搜索目标物体的方式,通过不同尺度和长宽比的矩形框来覆盖图像中的不同区域

在RPN网络中,每个anchor都对应一个特征图上的点,这个点称为anchor的中心点。以这个中心点为基准,根据设定的尺度和长宽比,在特征图上生成一个矩形框,这个矩形框就是anchor。因此,anchor的数量和特征图的大小以及设定的尺度和长宽比有关。

在这里插入图片描述

RPN网络中的anchor具有两个重要的作用

  • 一是用于生成候选区域(proposals),即可能包含目标物体的区域;
  • 二是用于训练RPN网络,使其能够区分正样本和负样本,并对候选区域进行边框回归,调整其位置和大小。

anchor三种尺度(面积){1282,2562,5122}
anchor三种比例{ 1:1, 1:2, 2:1 }
每个位置在原图上都对应有3x3=9 anchor

在这里插入图片描述

对于一张1000x600x3的图像,大约有60x40x9(20k)个anchor,忽略跨越边界的anchor以后,剩下约6k个anchor。对于RPN生成的候选框之间存在大量重叠,基于候选框的cls得分,采用非极大值抑制,IoU设为0.7,这样每张图片只剩2k个候选框。

在这里插入图片描述

3.2.2 IOU

在训练阶段,RPN网络会为每个anchor生成一个二分类标签(正样本或负样本),以及一个边框回归值。正样本是指与真实目标边界框(ground-truth box)重叠程度较高的anchor,而负样本则是指与真实目标边界框重叠程度较低的anchor。

在这里插入图片描述

通过不断优化网络参数,RPN网络可以逐渐学习到如何区分正样本和负样本,并对候选区域进行准确的边框回归。

在这里插入图片描述
对于如何确定正负样本,原论文给出了这样的定义:

  • 首先,与ground-truth的交并比大于0.7的anchor为正样本
  • 其次,如果所有ground-truth与anchor的交并比都小于0.7,选择与ground-truth有最大交并比的anchor作为正样本
  • 最后,选择与ground-truth的交并比小于0.3的anchor为负样本

3.2.3 损失函数

原论文中给出的损失函数:
在这里插入图片描述

  • p i p_i pi表示第i个anchor预测为真实标签的概率
  • p i ∗ p_i^* pi当为正样本时为1,当为负样本时为0
  • t i t_i ti表示预测第i个anchor的边界框回归参数
  • t i ∗ t_i^* ti表示第i个anchor对应的GT Box
  • N c l s N_{cls} Ncls表示一个mini-batch中的所有样本数量256
  • N r e g N_{reg} Nreg表示anchor位置的个数(不是anchor个数)约2400

分类损失

分类损失在原论文中给出的是一个softmax cross entropy

L c l s = − log ⁡ ( p i ) L_{cls}=-\log (p_i) Lcls=log(pi)

  • p i p_i pi表示第i个anchor预测为真实标签的概率

边界框回归损失

这一部分与Fast R-CNN的边界框回归损失是一样的

论文中给出的是smooth L1损失

L reg  ( t i , t i ∗ ) = ∑ i smooth ⁡ L 1 ( t i − t i ∗ ) t i = [ t x , t y , t w , t h ] t i ∗ = [ t x ∗ , t y ∗ , t w ∗ , t h ∗ ] \begin{array}{l} L_{\text {reg }}\left(t_{i}, t_{i}^{*}\right)=\sum_{i} \operatorname{smooth}_{L_{1}}\left(t_{i}-t_{i}^{*}\right) \\ t_{i}=\left[t_{x}, t_{y}, t_{w}, t_{h}\right] \quad t_{i}^{*}=\left[t_{x}^{*}, t_{y}^{*}, t_{w}^{*}, t_{h}^{*}\right] \end{array} Lreg (ti,ti)=ismoothL1(titi)ti=[tx,ty,tw,th]ti=[tx,ty,tw,th]
smooth ⁡ L 1 ( x ) = { 0.5 x 2  if  ∣ x ∣ < 1 ∣ x ∣ − 0.5  otherwise  \operatorname{smooth}_{L_{1}}(x)=\left\{\begin{array}{ll} 0.5 x^{2} & \text { if }|x|<1 \\ |x|-0.5 & \text { otherwise } \end{array}\right. smoothL1(x)={0.5x2x0.5 if x<1 otherwise 

在这里插入图片描述

  • p i ∗ p_i^* pi当为正样本时为1,当为负样本时为0
  • t i t_i ti表示预测第i个anchor的边界框回归参数
  • t i ∗ t_i^* ti表示第i个anchor对应的GT Box

3.3 Faster R-CNN的训练

现在的很多地方都是直接采用RPN Loss+ Fast R-CNN Loss的联合训练方法

原始的训练方法是这样的:

  1. 利用ImageNet预训练分类模型初始化前置卷积网络层参数,并开始单独训练RPN网络参数;
  2. 固定RPN网络独有的卷积层以及全连接层参数,再利用lmageNet预训练分类模型初始化前置卷积网络参数,并利用RPN网络生成的目标建议框去训练Fast RCNN网络参数。
  3. 固定利用Fast RCNN训练好的前置卷积网络层参数,去微调RPN网络独有的卷积层以及全连接层参数。
  4. 同样保持固定前置卷积网络层参数,去微调Fast RCNN网络的全连接层参数。最后RPN网络与Fast RCNN网络共享前置卷积网络层参数,构成一个统一网络。

3.4 算法总结

在这里插入图片描述
在Faster R-CNN中,这四个部分都融合到了一个网络当中,实现了端对端的训练过程

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

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

相关文章

基于微信小程序的培训机构客户管理系统小程序

摘 要 随着社会的发展&#xff0c;社会的方方面面都在利用信息化时代的优势。互联网的优势和普及使得各种系统的开发成为必需。 本文以实际运用为开发背景&#xff0c;运用软件工程原理和开发方法&#xff0c;它主要是采用java语言技术和mysql数据库来完成对系统的设计。整个开…

秋招上岸大厂,分享一下经验

文章目录 秋招过程学习过程项目经验简历经验面试经验offer选择总结 秋招过程 今天是除夕&#xff0c;秋招已经正式结束了&#xff0c;等春节过完就到了春招的时间点了。 运气比较好&#xff0c;能在秋招的末尾进入一家大厂&#xff0c;拿到20k的sp offer。 从九月份十月份就开…

MYSQL学习笔记:mysql运算符

MYSQL学习笔记&#xff1a;mysql运算符 select * from user where score in (99,100); select * from user where name like zhang%;通配符放到后面或者中间是可以利用索引的&#xff0c;但是通配符放到开头没法用到索引

2024年湖南省考报名时间及流程,选岗很重要!

注册时间&#xff1a;2024年2月18日9:00-25日17:00 报名时间&#xff1a;2024年2月19日9:00-25日17:00 网上确认时间&#xff1a;2024年2月28日9:00-3月2日24:00 缴费时间&#xff1a;2024年2月28日9:00-3月2日24:00 打印准考证时间&#xff1a;2024年3月11日9:00-15日17:00 考…

团队配置管理规范浅见

在一段时间的工作过程中配置管理工作确实对我们的生产活动产生了巨大的工作量&#xff0c;现在就这个工作来进行梳理一下。 本文主要分为两部分&#xff1a; 1、借用软件系统分析师的配置管理部分内容来介绍配置管理的工作&#xff08;原谅时间精力有限&#xff0c;原文基本已…

ctfshow-php特性(web102-web115)

目录 web102 web103 web104 web105 web106 web107 web108 web109 web110 web111 web112 web113 web114 web115 实践是检验真理的 要多多尝试 web102 <?php highlight_file(__FILE__); $v1$_POST[V1]; $v2$_GET[v2]; $v3$_GET[v3]; $v4is_numeric($v2)and is…

就业|高校毕业生就业信息小程序|基于微信小程序的高校毕业生就业信息的设计与实现(源码+数据库+文档)

高校毕业生就业信息小程序目录 目录 基于微信小程序的高校毕业生就业信息的设计与实现 一、前言 二、系统功能设计 三、系统实现 1、用户小程序模块 2、用户信息管理 2、职位招聘管理 3、公司信息管理 4、论坛信息管理 四、数据库设计 1、实体ER图 五、核心代码 …

【十六】【C++】stack的常见用法和练习

stack的常见用法 C标准库中的stack是一种容器适配器&#xff0c;它提供了后进先出&#xff08;Last In First Out, LIFO&#xff09;的数据结构。stack使用一个底层容器进行封装&#xff0c;如deque、vector或list&#xff0c;但只允许从一端&#xff08;顶部&#xff09;进行…

C++ //练习 6.4 编写一个与用户交互的函数,要求用户输入一个数字,计算生成该数字的阶乘。在main函数中调用该函数。

C Primer&#xff08;第5版&#xff09; 练习 6.4 练习 6.4 编写一个与用户交互的函数&#xff0c;要求用户输入一个数字&#xff0c;计算生成该数字的阶乘。在main函数中调用该函数。 环境&#xff1a;Linux Ubuntu&#xff08;云服务器&#xff09; 工具&#xff1a;vim 代…

分析“e^iπ+1=0”的错谬及其违反数学规则

如果评选从远古到现代对人类智商羞辱最严重的事件&#xff0c;欧拉公式“e^iπ-1”若说第二、就没有哪个能称第一。 看下面罗列的关系&#xff0c;数学伦理在大数学家欧拉眼里形同虚设&#xff1a; ①“e^iπ-1”没有代码&#xff0c;不能表示数量变化关系&#xff0c;它来自e^…

【Docker】Docker Container(容器)

文章目录 一、什么是容器&#xff1f;二、为什么需要容器&#xff1f;三、容器的生命周期容器OOM容器异常退出容器暂停 四、容器命令详解docker createdocker logsdocker attachdocker execdocker startdocker stopdocker restartdocker killdocker topdocker statsdocker cont…

【网站项目】028蜀都天香酒楼管理系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

【蓝桥杯选拔赛真题34】C++最大值 第十三届蓝桥杯青少年创意编程大赛C++编程选拔赛真题解析

目录 C/C最大值 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 七、推荐资料 C/C最大值 第十三届蓝桥杯青少年创意编程大赛C选拔赛真题 一、题目要求 1、编程实现&#xff08;C&#xff09; 给定一个…

黄金交易策略(Nerve Nnife.mql4):趋势做单

完整EA&#xff1a;Nerve Knife.ex4黄金交易策略_黄金趋势ea-CSDN博客 当大小趋势相同行情走向也相同&#xff0c;就会开仓做顺势单&#xff0c;并会顺势追单&#xff0c;以达到快速止盈平仓的效果。大趋势追求稳定&#xff0c;小趋势追求敏捷&#xff0c;行情走向比小趋势更敏…

【JAVA-Day75】Java字节输出流,掌握OutputStream

标题 《Java字节输出流深度解析&#xff1a;掌握OutputStream的奥秘》摘要引言一、什么是字节输出流 &#x1f680;基本原理常用方法write(int b)write(byte[] b)write(byte[] b, int off, int len) 示例代码注意事项 二、字节输出流操作TXT &#x1f4c4;文件写入基本步骤示例…

i.MX6ULL 嵌入式学习(一)

i.MX6ULL 嵌入式学习(一) i.MX6ULL理论知识 i.MX6ULL 嵌入式学习(一)进程psipc 进程间通信管道信号(类似中断)system-V 消息队列system-V 信号量system-V 共享内存 进程 创建进程(复制)&#xff0c;同程序 fork #include<unistd.h> a. 返回值 成功 0 或 非负非零整数( 父…

FL Studio版本升级-FL Studio怎么升级-FL Studio升级方案

已经是新年2024年了&#xff0c;但是但是依然有很多朋友还在用FL Studio12又或者FL Studio20&#xff0c;今天这篇文章教大家如何升级FL Studio21 FL Studio 21是Image Line公司开发的音乐编曲软件&#xff0c;除了软件以外&#xff0c;我们还提供了FL Studio的升级服务&#…

【C语言】assert断言:保护程序的利器

在软件开发过程中&#xff0c;我们经常会遇到一些假设条件或者预期行为。例如&#xff0c;我们可能假设一个函数的输入参数必须在某个范围内&#xff0c;或者某个变量的值应该满足特定的条件。当这些假设或预期行为被打破时&#xff0c;程序可能会出现异常行为&#xff0c;甚至…

轻薄型机型EM-T195,对移动作业so easy

由于移动工作环境特殊且不固定&#xff0c;不仅温差大&#xff0c;还会产生潮湿、干燥、灰尘等恶劣气候环境&#xff0c;使普通平板电脑无法适应移动工作。但三防平板电脑是设计制造的&#xff0c;材料特殊&#xff0c;可以平静面对上述恶劣环境&#xff0c;保证随时随地保持良…

备战蓝桥杯---数学基础3

本专题主要围绕同余来讲&#xff1a; 下面介绍一下基本概念与定理&#xff1a; 下面给出解这方程的一个例子&#xff1a; 下面是用代码实现扩展欧几里得算法&#xff1a; #include<bits/stdc.h> using namespace std; int gcd(int a,int b,int &x,int &y){if(b…