计算机视觉-目标检测(一):从 R-CNN 到 Faster R-CNN

文章目录

  • 1. 概要
  • 2. 区域卷积卷积神经网络R-CNN
    • 2.1 模型结构
    • 2.2 Selective Search
    • 2.3 warp
    • 2.4 R-CNN训练
    • 2.5 R-CNN推理
    • 2.6 R-CNN性能评价
    • 2.7 R-CNN的缺点
  • 3. SPP-Net
    • 3.1 SPP-Net对RCNN的改进
    • 3.2 SPP-Net网络结构
    • 3.3 SPP-Net训练过程
    • 3.4 SPP-Net的问题
  • 4. Fast R-CNN
    • 4.1 Fast R-CNN改进点
    • 4.2 Fast R-CNN网络结构
    • 4.3 训练
  • 5. Faster R-CNN
    • 5.1 Region Proposal Network(RPN)
    • 5.2 Faster R-CNN训练过程
  • 6. 总结
  • 参考

1. 概要

目标检测的任务是检测图片中所有物体的类别标签位置(最小外接矩阵/Bounding Box),如下图所示
在这里插入图片描述
目标检测与其他任务的区别如下图所示
Alt
目标检测模型进化过程如下
Alt

2. 区域卷积卷积神经网络R-CNN

论文来源:CVPR-2014
论文链接:Rich feature hierarchies for accurate object detection and semantic segmentation
代码链接:RCNN-PyTorch实现

2.1 模型结构

总体按分类问题对待,分为两个模块
(1)模块1:提取物体区域(Region Proposal)
不同位置、不同尺寸,数量很多
(2)模块2:对区域进行分类识别(Classification)
CNN 分类器,计算量大

传统方法与R-CNN比较如下
在这里插入图片描述

在这里插入图片描述
R-CNN总体流程如上图所示:

  • 输入图片
  • 通过Selective Search(SS) 方法抽取候选区域(数量很多,大概有2k个左右)
  • 对候选区域进行warped,使得所有候选区域都变成相同大小
  • 将warped候选区域送入CNN网络提取特征,并进行分类

2.2 Selective Search

使用Felzenszwalb and Huttenlocher[1]的方法产生图像初始区域,使用贪心算法对区域进行迭代分组,具体步骤如下

  • 按照Felzenszwalb and Huttenlocher的方法产区域集R
  • 计算区域集R里每个相邻区域的相似度 S = { s 1 , s 2 , . . . } S=\{s_1, s_2, ...\} S={s1,s2,...}
  • 找出S中相似度最高的两个区域,将其合并为新集,并添加到R
  • 从S 中移除所有与step3中有关的子集
  • 计算新集与所有子集的相似度
  • 跳转至step3,直至S为空

在合并时优先合并四种区域

  • 颜色(颜色直方图)相近的
  • 纹理(梯度直方图)相近的
  • 合并后总面积小的
  • 合并后总面积在其BBOX中所占比例大的

2.3 warp

warp的方式主要包括如下几种

  • 在原始区域目标周围取一块区域进行等比缩放到CNN 需要的图片大小
  • 去除原始目标区域然后对目标区域进行填充,再等比缩放到CNN所需的图片大小
  • 直接将原始目标区域非等比缩放到CNN需要的图片大小

2.4 R-CNN训练

(1)CNN 模型微调

  • 先在ImageNet上对CNN模型进行pre-train
  • 在SS生成的所有区域上对模型进行fine tunne
    • Log Loss
    • softmax层改成(N+1) way
    • 正样本有N类:跟ground truth重合IoU>0.5
    • 负样本1类:IoU < 0.5

注意: I o U = A ∩ B A ∪ B IoU = \frac{A \cap B}{A \cup B} IoU=ABAB,即表示两个区域的重合度,如果IoU=1,表示两块区域完全重合
在这里插入图片描述

(2)训练分类部分
使用微调的CNN模型抽取候选区域特征,然后训练线性SVM分类器

  • 每个物体类别对应一个SVM分类器(即SVM是一对多的分类器)
  • 正样本:所有Groundtruth 区域
  • 负样本:更ground truth区域重合IoU < 0.3 的SS区域,如下图所示负样本包括不包括目标物体的区域,或者包括其他物体的区域

在这里插入图片描述

(3)回归部分
回归器主要用于对selective search生成的候选框进行修正。如下图所示,黄色框口P表示建议框Region Proposal,绿色窗口G表示实际框Ground Truth,红色窗口 G ^ \hat G G^ 表示Region Proposal进行回归修正后的预测窗口,现在的目标是找到P到 G ^ \hat G G^的映射,使得 G ^ \hat G G^与G越相近,这就相当于一个简单的最小二乘法解决的线性回归问题。
在这里插入图片描述
具体损失函数的定义如下:
定义 P P P 窗口的数学表达式: P i = ( P x i , P y i , P w i , P h i ) P^i=(P_x^i,P_y^i,P_w^i,P_h^i) Pi=(PxiPyiPwiPhi),其中 ( P x i , P y i ) (P_x^i,P_y^i) (PxiPyi)表示第一个 i i i窗口的中心点坐标, P w i P_w^i Pwi P h i P_h^i Phi 分别为第 i i i个窗口的宽和高;

G G G 窗口的数学表达式为: G i = ( G x i , G y i , G w i , G h i ) G^i=(G^i_x,G^i_y,G^i_w,G^i_h) Gi=(GxiGyiGwiGhi)

G ^ \hat G G^ 窗口的数学表达式为: G ^ i = ( G ^ x i , G ^ y i , G ^ w i , G ^ h i ) \hat G^i=(\hat G^i_x,\hat G^i_y,\hat G^i_w,\hat G^i_h) G^i=(G^xiG^yiG^wiG^hi)

则损失函数为:
Loss ⁡ = argmin ⁡ ∑ i = 0 N ( t ∗ i − w ^ ∗ T ϕ 5 ( P i ) ) 2 + λ ∥ w ^ ∗ ∥ 2 \operatorname{Loss}=\operatorname{argmin} \sum_{\mathrm{i}=0}^{\mathrm{N}}\left(\mathrm{t}_*^{\mathrm{i}}-\hat{\mathrm{w}}_*^{\mathrm{T}} \phi_5\left(\mathrm{P}^{\mathrm{i}}\right)\right)^2+\lambda\left\|\hat{\mathrm{w}}_*\right\|^2 Loss=argmini=0N(tiw^Tϕ5(Pi))2+λw^2
其中 ϕ 5 ( P i ) \phi_5(P^i) ϕ5(Pi) 表示目标 P i P^i PiCNN网络Pool5层特征(注意:上一章节中训练分类器使用的是全连接层输出结果), N N N 表示一共有N个bounding box(SS选出的BBOX中与Ground Truth的IoU>0.6的部分); t ∗ t_* t 分别表示表示 ( t x , t y , t h , t w ) (t_x, t_y, t_h, t_w) (tx,ty,th,tw)
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 ) \begin{gathered} \mathrm{t}_{\mathrm{x}}=\left(\mathrm{G}_{\mathrm{x}}-\mathrm{P}_{\mathrm{x}}\right) / \mathrm{P}_{\mathrm{w}} \\ \mathrm{t}_{\mathrm{y}}=\left(\mathrm{G}_{\mathrm{y}}-\mathrm{P}_{\mathrm{y}}\right) / \mathrm{P}_{\mathrm{h}} \\ \mathrm{t}_{\mathrm{w}}=\log \left(\mathrm{G}_{\mathrm{w}} / \mathrm{P}_{\mathrm{w}}\right) \\ \mathrm{t}_{\mathrm{h}}=\log \left(\mathrm{G}_{\mathrm{h}} / \mathrm{P}_{\mathrm{h}}\right) \end{gathered} tx=(GxPx)/Pwty=(GyPy)/Phtw=log(Gw/Pw)th=log(Gh/Ph)
因此该损失函数的意思为:拟合SS预测的BBOX和人工标注的BBOX的误差,训练完通过误差修正SS预测的BBOX,预测阶段如下所示,其中 d ∗ ( P ) = w ∗ T ϕ 5 ( P ) \mathrm{d}_*(\mathrm{P})=\mathrm{w}_*^{\mathrm{T}} \phi_5(\mathrm{P}) d(P)=wTϕ5(P) w ∗ T \text{w}_*^T wT为训练阶段的参数
G ^ x = P w d x ( P ) + P x G ^ y = P h d y ( P ) + P y G ^ w = P w exp ⁡ ( d w ( P ) ) G ^ h = P h exp ⁡ ( d h ( P ) ) \begin{gathered} \hat{\mathrm{G}}_{\mathrm{x}}=\mathrm{P}_{\mathrm{w}} \mathrm{d}_{\mathrm{x}}(\mathrm{P})+\mathrm{P}_{\mathrm{x}} \\ \hat{\mathrm{G}}_{\mathrm{y}}=\mathrm{P}_{\mathrm{h}} \mathrm{d}_{\mathrm{y}}(\mathrm{P})+\mathrm{P}_{\mathrm{y}} \\ \hat{\mathrm{G}}_{\mathrm{w}}=\mathrm{P}_{\mathrm{w}} \exp \left(\mathrm{d}_{\mathrm{w}}(\mathrm{P})\right) \\ \hat{\mathrm{G}}_{\mathrm{h}}=\mathrm{P}_{\mathrm{h}} \exp \left(\mathrm{d}_{\mathrm{h}}(\mathrm{P})\right) \end{gathered} G^x=Pwdx(P)+PxG^y=Phdy(P)+PyG^w=Pwexp(dw(P))G^h=Phexp(dh(P))
以下省去 i i i 上标。 d x d_x dx d y d_y dy 通过平移对 x x x y y y 进行变化 , d w d_w dw d h d_h dh通过缩放对 w w w h h h进行变化

2.5 R-CNN推理

  • (1)使用Selective Search提取大约2000个BBOX/区域
  • (2)将所有区域放大/缩小到 227*227
  • (3)使用fine tunne过的AlexNet计算两套特征。对于每个类别:
    • (a)FC7特征 -> SVM分类器 -> 分类分值
    • (b)使用非极大值抑制NMS(IoU>=0.5)获取无冗余的区域子集
    • (c)Conv5特征 -> BBOX回归模型 -> BBOX误差 -> 修正BBOX

非极大值抑制的具体做法如下
SVM分类器的输出结果为的维度为[2000, 20],即2000个框,每个框分成20类

① 对2000×20维矩阵中每列按从大到小进行排序;
② 从每列最大的得分建议框开始,分别与该列后面的得分建议框进行IoU计算,若IoU>阈值,则剔除得分较小的建议框,否则认为图像中存在多个同一类物体;
③ 从每列次大的得分建议框开始,重复步骤②;
④ 重复步骤③直到遍历完该列所有建议框;
⑤ 遍历完2000×20维矩阵所有列,即所有物体种类都做一遍非极大值抑制;
⑥ 最后剔除各个类别中剩余建议框得分少于该类别阈值的建议框

2.6 R-CNN性能评价

(1)平均精度(AP): 针对某一类别,计算PR曲线下的面积,是precision对于recall的积分
(2)mAP:针对所有类别,计算AP的均值

2.7 R-CNN的缺点

(1)训练时间很长(84h): Fine Tune(18h) + 特征提取(63h) + SVM/BBOX训练(3h)
(2)测试阶段很慢:VGG一张图片47s(每张图片的2000个都会计算CNN特征)
(3)复杂的多阶段训练:用于SVM,BBOX回归的特征需要存储到磁盘中,这将占用大量磁盘空间,此外特征提取也很慢

3. SPP-Net

3.1 SPP-Net对RCNN的改进

(1)直接输入整张图片,所有区域共享卷积计算(将CNN计算提前到SS之前,在Conv5输出上提取所有区域特征)
(2)引入空间金字塔结构(Spatial Pyramid Pooling),为不同尺寸的区域在Conv5输出上提取特征,将不同尺寸映射到尺寸固定的全连接层上

在这里插入图片描述

3.2 SPP-Net网络结构

具体结构如下图所示
在这里插入图片描述
(1)直接一整张图输入CNN网络,提取整个图片的特征,然后再根据region proposal的位置在整个feature map上截取出对应的feature,这样就避免了重复性用CNN对每个region proposal单独提取特征
(2)CNN网络的conv5层后加入了SPP layer,这样就可以不需要warp/crop region proposal了,因为SPP layer可以接受不同size的输入,并可以得到相同尺寸的输出

图片特征抽取
在SPP-net中,一整张图输入CNN网络中,然后经过5个卷积层得到整个图的feature map,然后从这整个feature map上截取出每个region proposal对应的feature。
如下图所示,在feature map中得到原图中蓝色的region对应的feature。定位一个矩形框,只要知道中心点的坐标和矩形框的宽高就可以。所以我们需要根据原图中的region proposal推导出对应的feature map的中心点和宽高。这就需要我们找到卷积网络中两个卷积层之间的映射关系:包括边的映射和点的映射。具体映射关系可以查看SPP-net
在这里插入图片描述
SPP层
CNN时需要输入固定size的图像,这主要是受CNN中的全连接层所限制。因为卷积层计算的方式类似于滑窗,因此对于不同size的输入,卷积层都可以正确计算。但是对于连接数固定的全连接层,例如4096*1000,那么这个全连接层的输入必须是4096维,否则就会出现错误。因此在训练CNN之前都需要先把图片resize到一个固定的尺寸,如3.1章节中图所示crop是从原图中裁剪出固定大小的图片,这样的方式会使得部分图像的信息丢失。warp是直接将图片resize到规定的大小,这样会导致图片发生形变。

在RCNN中通过selective search来提取出不同size的region proposal,然后对不同的region proposal提取出不同尺寸的feature map, 那这些feature map也要经过warp之后才输入之后的FC layer或SVM分类器,那这样或多或少会影响最后的检测结果。

在SPP-Net中增加了空间金字塔结构,如下图
在这里插入图片描述
具体来说就是把输入的feature map划分成不同尺度,比如图中(4, 4) (2, 2) (1, 1)三种不同的尺度,然后会产生不同的bin,比如分成(4, 4)就16个bin,然后在每个bin中使用max pooling,然后就变成固定长度为16的向量。如下图不同尺寸的输入,经过SPP层之后都得到了相同的长度的向量,之后再输入FC layer。所以,使用SPP Layer之后,不同size的输入就可以输出相同的size
在这里插入图片描述

3.3 SPP-Net训练过程

(1)在ImageNet上对CNN模型进行pretrain
(2)计算所有SS的候选区域的的spp特征
(3)使用SPP特征fine tunne后面的全连接层fc6, fc7, fc8
(4)取fc7层特征训练svm分类器
(5)使用SPP特征训练BBOX回归器

与RCNN区别:

  • fine tunne的时候只能fine tunne全连接层(感受野太大,fine tunne CNN困难)

3.4 SPP-Net的问题

(1)需要存储大量的特征
(2)复杂的多阶段训练
(3)训练时间仍然长(25.5h): fine tune(16h)+特征提取(5.5h)+SVM/BBOX训练(4h)
(4)SPP层之前的所有卷积层参数无法fine tune

4. Fast R-CNN

4.1 Fast R-CNN改进点

(1)比R-CNN, SPP-Net 更快的训练/测试速度
(2)更高的精度mAP
(3)实现端到端的单阶段训练(多任务损失函数)
(4)所有层参数都能fine tune
(5)不需要理想存储特征文件

综合来说,Fast R-CNN在SPP-Net上引入2个新技术

  • 感兴趣区域池化层(RoI Pooling Layer)
  • 多任务损失函数(Multi task Loss)

如下图所示
在这里插入图片描述

4.2 Fast R-CNN网络结构

在这里插入图片描述
RoI Pooling
下图展示RoI pooling和 SPP Pooling层的区别
ROI Pooling 是 SPP Pooling的单层特例,具体来说将CNN网络输出的图片特征只进行一次7*7的分割,然后将每个Bin中的所有特征做Max Pooling。
好处是输入特征尺寸不同,但输出尺寸都相同
在这里插入图片描述
在反向传播时,重叠的ROI区域如何处理?
多个区域的偏导之和
在这里插入图片描述
多任务损失
总体损失为分类器损失+回归损失
分类器损失为使用softmax得到每个类别的概率后,取负对数
而回归损失基本原理与SPP-Net一致,拟合误差,但是采用了smopth L1损失,如下图所示,防止两个预测BOX与Ground Truth相差太大造成影响( ∣ x ∣ < 1 |x|<1 x<1 部分)
在这里插入图片描述

4.3 训练

(1)在pretrain模型上做fine tunne

(2)采用了 mini batch sampling抽样的trick,具体做法为:
分层抽样法:每个batch大小为128(候选框的数量)=每个batch图片数量为2 * 每个图片的ROI数量64

ROI分类:基于RoI与Ground Truth重叠

  • 包含物体的RoI占25%(IoU>=0.5)
  • 背景占75%:IoU在[0.1, 0.5)

(3)采用SVD分解加速运算
由于要处理的RoI数量比较多,几乎一半的前向计算时间都被用于全链接层。就Fast R-CNN来说,RoI池化层后的全链接层需要进行约2k次计算,因此Fast R-CNN采用了SVD分解加速全连接层的计算
具体来说如下图所示,将两个矩阵相乘,分解成三个矩阵相乘,由于右边的中间层很小,所以总的参数量会比左边的计算小
在这里插入图片描述

5. Faster R-CNN

使用region proposal network(RPN)网络代替离线selective search模块,即Faster R-CNN = Fast R-CNN + RPN;基于attention机制引导Fast R-CNN关注区域,Region Proposal 量少(约300个)质高

5.1 Region Proposal Network(RPN)

RPN网络结构如下图所示
在这里插入图片描述
(1)输入图片的Conv5特征输入到RPN网络中,首先进行33 256-d卷积层 + RELU
(2)进行1
1, 4k-d卷积层,输出k组proposal的偏差(r, c, w, h)
(3)进行1*1, 2k-d卷积层,输出k组得分(包含目标和不包含目标)

k默认为9,是指预定义的9种大小的候选框(anchor);包含三种尺度scale (128, 256, 512)和三种宽高比(1:1, 1:2, 2:1)。Conv5特征图上每个点都有k个anchor,所以anchor的总量为W*H*k
在这里插入图片描述

RPN网络损失函数
总体损失函数如下所示
L ( { p i } , { t i } ) = 1 N c l s ∑ i L c l s ( P i , i i ∗ ) + λ 1 N r e g ∑ i p i ∗ L r e g ( t i , t i ∗ ) L\left(\left\{p_i\right\},\left\{t_i\right\}\right)=\frac{1}{N_{c l s}} \sum_i L_{c l s}\left(P_i, i_i^*\right)+\lambda \frac{1}{N_{r e g}} \sum_i p_i^* L_{r e g}\left(t_i, t_i^*\right) L({pi},{ti})=Ncls1iLcls(Pi,ii)+λNreg1ipiLreg(ti,ti)
分为两部分:

  • 分类损失 L c l s L_{cls} Lcls覆盖两类:框种存在目标,框中不存在目标
  • 回归损失 L r e g L_{reg} Lreg,与Fast RCNN基本一致,使用sooth L1,拟合候选框的偏差
    在这里插入图片描述
    同时在训练样本中也存在采样,保证正负样本的分布均衡。对于每一张图片,包含128个正样本:与groundth的IoU > 0.7的anchor(或若都小于0.7则取最大Iou);128个负样本:IoU<0.3的anchor框

5.2 Faster R-CNN训练过程

(1)训练RPN网络:通过ImageNet上预训练的模型参数初始化卷积层
(2)训练Fast R-CNN网络(除了RPN以外其他部分):卷积层由ImageNet上预训练的模型参数初始化;Region Proposal由step1RPN生成
(3)调优RPN:使用step2的参数初始化卷积层,然后固定卷积层,finetunne剩余层
(4)调优Fast R-CNN:固定卷积层,fine tune剩余层,Region Prosals由step3的RPN生成

6. 总结

从SPP-Net到Fast R-CNN是一个巨大的进步,从分别训练分类器和回归器的多任务,到分类器回归器合二为一一起训练
在这里插入图片描述
R-CNN 和 SPP-Net对比
在这里插入图片描述
SPP-Net和Fast R-CNN对比
在这里插入图片描述
Fast R-CNN 和 Faster R-CNN 对比
在这里插入图片描述

参考

[1] Felzenszwalb P F, Huttenlocher D P. Efficient Graph-Based Image Segmentation[J]. International Journal of Computer Vision, 2004, 59(2):167-181.
[2]. 知乎-SPP-net
[3]. R-CNN论文详解
[4]. 一文读懂Faster RCNN
[5]. b站-计算机视觉零基础入门

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

河北沃克HEGERLS仓储货架生产厂家|夹抱式伸缩货叉四向穿梭车新型物流机器人

众所周知仓库作业主要是围绕存取、搬运、拣选、输送分拣而进行的&#xff0c;而随着物流作业的多样化、复杂化&#xff0c;四向穿梭车作为新的存储技术&#xff0c;以其灵活、柔性等特点而备受瞩目。河北沃克在成功研发四向穿梭车的基础上又对其进行了产品的横向发展。目前&…

微服务_fegin

Feign服务调用 是客户端组件 ruoyi系统中Log\Auth\User用了远程服务调用&#xff0c;用工厂模式给他的报错加了层工厂类&#xff0c;return错误的时候重写了以下方法。 在ruoyi-common-core模块中引入依赖 <!-- SpringCloud Openfeign --><dependency><group…

python语法-数据可视化(全球GDP动态柱状图开发)

python数据可视化&#xff08;全球GDP动态柱状图开发&#xff09; 开发工具&#xff1a;pycharm、pyecharts模块 &#xff08;项目数据见文末参考内容&#xff09; """ 演示GDP动态柱状图开发 """from pyecharts.charts import Bar,Timeline fr…

ExtractOfficeContent: 提取Office文件中文本、表格和图像

引言 最近有空写了一下这个库&#xff0c;用来提取Office文件中的文本和图像内容&#xff0c;用作后续整理训练语料使用。最新更新请移步&#xff1a;Github Extract Office Content Use Installextract_office_content$ pip install extract_office_contentRun by CLI. Ext…

数据可视化大屏人员停留系统的开发实录(默认加载条件筛选、单击加载、自动刷新加载、异步加载数据)

项目需求 录入进入房间的相关数据&#xff1b;从进入时间开始计时&#xff0c;计算滞留房间的时间&#xff1b;定时刷新数据&#xff0c;超过30分钟的人数&#xff0c;进行红色告警&#xff1b; 实现流程 为了完整地实现上述需求&#xff0c;我们可以按照以下步骤开发&#…

JAVA面向对象(三)

第三章 封装与继承 目录 第三章 封装与继承 1.1.封装 1.2.包 1.3.访问权限控制 1.4.static修饰符 1.4.1.成员变量 1.4.2.成员方法 1.4.3.代码块 总结 内容仅供学习交流&#xff0c;如有问题请留言或私信&#xff01;&#xff01;&#xff01;&#xff01;&#xff0…

【计算机组成与体系结构Ⅰ】知识点整理

第一章 计算机系统概论 1.1 从源文件到可执行文件 .c源程序、.i源程序、.s汇编语言程序、.o可重定位目标程序、可执行目标程序&#xff1b;后两个为二进制&#xff0c;前面为文本 1.2 可执行文件的启动和执行 冯诺依曼结构计算机模型的5大基本部件&#xff1a;运算器、控制…

技巧:win10的另一种美化字体的方式,使用noMeiryoUI

目录 1. 前提2. 字体选择3. 查看已经安装的字体并查看效果4. 安装软件修改系统字体5. 修改浏览器字体 1. 前提 21年的时候写了一篇文章&#xff0c;《Windows10下美化字体&#xff0c;达到类似mac的效果》&#xff0c;当时还很迷恋macType这个软件的使用&#xff0c;觉得好牛逼…

java异常 | 处理规范、全局异常、Error处理

文章目录 &#x1f683;异常类型&#x1f3a0;显示声明异常&#xff1a;①&#xff1a;try-catch②方法签名 &#x1f683;异常处理规范⚓️异常包装⚓️异常传递⚓️异常日志记录⚓️异常处理的最佳实践 &#x1f683;全局异常处理⛵️优点&#xff1a;⛵️代码示例&#xff1…

YOLOv7训练自定义数据集

使用YOLOv7做对比实验&#xff0c;需要重新部署一下YOLO环境&#xff0c;并将COCO格式数据集转换为YOLO格式 博主的COCO数据集是由WiderPerson数据集转换来的&#xff0c;并且做了一些处理。 环境 Ubuntu18.0 CUDA11.2 NVIDIA T4 项目部署 下载项目&#xff1a; git clone…

PureComponent和Component的区别和底层处理机制

PureComponent和Component都是React中的组件类&#xff0c;但它们在实现细节和使用上有些差别。 Component是React中定义组件的基类&#xff0c;它的shouldComponentUpdate方法默认返回true&#xff0c;也就是说&#xff0c;每次调用setState或forceUpdate方法都会引发组件重新…

算法提高-图论-单源最短路的综合应用

单源最短路的综合应用 单源最短路的综合应用AcWing 1135. 新年好AcWing 340. 通信线路AcWing 342. 道路与航线AcWing 341. 最优贸易 单源最短路的综合应用 AcWing 1135. 新年好 多次dijkstra求每个点到其它点的最短距离&#xff0c; 此时相当于建好了一张图&#xff0c;每个点…

实验篇(7.2) 09. 通过安全隧道走对方宽带上网 (FortiClient-IPsec) ❀ 远程访问

【简介】要想所有的流量都走安全隧道&#xff0c;就需要禁用隧道分割。这样上网流量也会通过隧道到达远端防火墙&#xff0c;再通过远端防火墙的宽带接口去到互联网。我们来看看FortiClient客户端用IPsec VPN是如何实现的。 实验要求与环境 OldMei集团深圳总部防火墙有两条宽带…

【运筹优化】最短路算法之A星算法 + Java代码实现

文章目录 一、A星算法简介二、A星算法思想三、A星算法 java代码四、测试 一、A星算法简介 A*算法是一种静态路网中求解最短路径最有效的直接搜索方法&#xff0c;也是解决许多搜索问题的有效算法。算法中的距离估算值与实际值越接近&#xff0c;最终搜索速度越快。 二、A星算…

javaScript蓝桥杯-----天气趋势 A

目录 一、介绍二、准备三、目标四、代码五、完成 一、介绍 日常生活中&#xff0c;气象数据对于人们的生活具有非常重要的意义&#xff0c;数据的表现形式多种多样&#xff0c;使用图表进行展示使数据在呈现上更加直观。 本题请实现一个 Y 城 2022 年的天气趋势图。 二、准备…

100天精通Python(可视化篇)——第88天:全网最全Seaborn库常用绘图3万字总结(参数说明+案例实战)

文章目录 一、Seaborn介绍1.1 介绍1.2 安装1.3 风格设置1.3.1 style&#xff08;风格&#xff09;1.3.2 context&#xff08;环境设置&#xff09; 1.4 调色盘设置1.5 数据集下载 二、Relational plots&#xff08;关系图&#xff09;2.1 scatterplot&#xff08;散点图&#x…

SpringSecurity 总结

SpringSecurity 总结 第一章 权限管理 权限管理SpringSecurity 简介整体架构 权限管理&#xff1a; 实现: "对用户访问系统的控制"(身份认证) &#xff0c; 按照 "安全规则"或者 "安全策略" (对已经认证的用户进行授权) 控制&#xff0c;用…

K8s in Action 阅读笔记——【13】Securing cluster nodes and the network

K8s in Action 阅读笔记——【13】Securing cluster nodes and the network 13.1 Using the host node’s namespaces in a pod Pod中的容器通常在不同的Linux名称空间下运行&#xff0c;这使得它们的进程与其他容器或节点默认名称空间下运行的进程隔离开来。 例如&#xff…

【计算机组成与体系结构Ⅰ】课程设计——基于Logisim的模型计算机设计

基于Logisim的模型计算机设计 一、实验目的 基于Logisim软件&#xff0c;根据一个模型指令系统&#xff0c;在逐步学习和了解计算机组成各部分逻辑组成和各部分互联的基础上&#xff0c;深入理解课程中的知识点&#xff0c;利用此软件设计并实现一个模拟的8位模型计算机原型。…

Python爬取影评并进行情感分析和数据可视化

Python爬取影评并进行情感分析和数据可视化 文章目录 Python爬取影评并进行情感分析和数据可视化一、引言二、使用requestsBeautifulSoup进行影评的爬取1、分析界面元素2、编写代码 三、情感分析1、数据预处理2、情感分析3、数据可视化 一、引言 前几天出了《航海王&#xff1…