【学习笔记】经典目标检测算法

2023-11-15

定义

在这里插入图片描述
目标检测任务的目标是找到图像中的所有感兴趣区域,并确定这些区域的位置和类别。目标检测领域的深度学习方法主要分为两大类:两阶段式(Two-stage)目标检测算法和单阶段式(One-stage)目标检测算法。

  • 两步模型有独立地、显式地提取候选区域提取过程,即先在输入图像上筛选出一些可能存在物体的候选区域,然后针对每个候选区域,判断其是否存在物体。典型的模型有R-CNN、SPPNet、Fast R-CNN、Faster R-CNN、R-FCN、Mask R-CNN等。
  • 单步模型是指没有独立地、显式地提取候选区域,直接由输入图像得到其中存在的物体的类别和位置信息的模型。直接将目标边界定位问题转换成回归问题,图像会被缩放到同一尺寸,并以网格形式均等划分,模型仅需处理图像一次就能得到位置和分类结果。典型的模型有MultiBox、OverFeat、YOLO、SSD等。

一般来说,单步模型在计算效率上有优势,两步模型在检测精度上有优势。

  1. 多数单步模型是利用预设的锚框(anchor box)来捕捉可能存在于图像各个位置的物体,因此,单步模型会对数量庞大的锚框进行是否有物体及物体所属类别的密集分类。由于正负样本数极不均衡,会导致分类器训练效果不佳。而在两步模型中,由于含有独立的候选区域提取步骤,第一步就筛选掉大部分不含有待检测物体的区域(负样本),就不存在类似问题。
  2. 两步模型在候选区域提取的过程会对候选框的位置和大小进行修正,在进入第二步前,候选区域的特征已被对齐,有利于提供质量更高的特征。单步模型没有特征对齐步骤,各锚框的预测基于该层上每个特征点的感受野,定位和分类精度容易受到影响。
  3. 两步模型在第二步对候选区域进行分类和位置回归时,是针对每个候选区域独立进行的,因此该部分算法复杂度线性正比于预设的候选区域数目。

候选区域 Region Proposal

在这里插入图片描述
region在不同的论文中有不同的名字。传统滑窗检测算法中,它叫做windows;在RetinaNet等anchor-based的算法中,它的名字叫做anchor;而在FCOS等anchor-free的算法中,它又代表着anchor point。概括来说,region就是在图像上预设好不同大小、不同长宽比的参照框。region设置时需要其大小和长宽比与待检测物体尺度基本一致,才能让region与物体的IOU大于阈值,成为正样本;否则,正样本数会很少,导致漏检很多。
最直接的获得候选区域(Region Proposal)的方法是滑窗法,就是遍历图像的所有的区域,用不同大小的窗口在整个图像上滑动,那么就会产生所有的矩形区域,然后再后续排查,思路简单,但开销巨大。基于图像的颜色、纹理、面积、位置等合并相似的像素来得到得到一系列的候选矩阵区域的方法有Selective Search和EdgeBoxes,相比于滑窗法更高效。

Selective Search

假设现在图像上有 n n n个预分割的区域,计算每个区域与它相邻区域的相似度,得到一个 n × n n\times n n×n的相似度矩阵,从矩阵中找出最大相似度值对应的两个区域,将这两个区域合二为一;重复上面的过程直到最后只剩一个区域。

R-CNN

《Rich feature hierarchies for accurate object detection and semantic segmentation》 2014 CVPR
在这里插入图片描述
R-CNN先使用无监督的Selective Search算法将输入图像中具有相似颜色直方图特征的区域进行递归合并,得到2000个最有可能包含物体的候选区域。然后将这些不同大小的候选区域统一到相同的尺寸送入CNN中进行特征提取和分类。最后对检测结果进行NMS操作,得到最终的检测结果。多个候选区域对应的图像需要预先提取,占用较大的磁盘空间;Crop或者Warp操作会使得物体截断或拉伸,导致输入CNN的信息丢失;每一个候选区域都需要进入CNN网络计算,上千个Region存在大量的范围重叠,重复的特征提取带来巨大的计算浪费。

SPPNet

在这里插入图片描述
SPPNet中的SPP是指空间金字塔池化。由于RCNN中要对候选区域进行裁剪或缩放至固定尺寸,会破坏截取图像的长宽比,并损失一些信息。SPP被放置在CNN的末端,可以接受任意尺寸的特征图作为输入,输出固定尺寸的池化特征。此外,SPPNet只进行一次全图的特征提取,而后对每个候选区域对应的特征直接从全图特征中进行截取,然后送入到空间金字塔池化层进行尺寸的统一。

Fast R-CNN

《Fast R-CNN》 2015 ICCV
在这里插入图片描述
Fast R-CNN还是通过Selective Search得到候选框,但是将输入图像直接通过CNN模型得到特征图,将候选区域映射到特征图中得到映射Patch,然后不同大小的区域通过RoI Pooling层得到相同大小的特征向量,最后通过两个全连接层得到类别和边界框的预测。Fast R-CNN使用全连接层代替之前的SVM分类器和线性回归器来进行物体分类和检测框修正,大大增强了检测任务的一体性,提高了计算效率。
在这里插入图片描述
ROI Pooling 在映射Patch上划分成固定数目的网格,数目根据下一层希望的输入大小决定,最后在每个小的网格区域内进行Max Pooling,以得到固定大小的特征。

Faster R-CNN

《Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks》 2015 NIPS
在这里插入图片描述
Faster R-CNN提出了RPN网络用于在特征图上提取候选区域,将候选框提取合并到深度网络中,提高速度并保证了精度。RPN在最后一个卷积层输出的特征图上,先用3x3的卷积得到channel为 d d d的特征图,这样特征图上每个位置能构成一个 d d d维的特征向量,然后基于这个特征向量去回归9个不同大小和长宽比的窗口,把这些窗口按照置信度进行排序,然后取前 n n n个作为候选窗口。

Mask R-CNN

《Mask RCNN》在这里插入图片描述
Mask-RCNN 大体框架还是 Faster-RCNN 的框架,分为两个阶段:
(1)backbone生成图像特征,RPN生成 proposal regions;
(2)预测类别和bbox回归。Mask R-CNN添加了一个全卷积网络的分支,对每个RoI预测了对应的二值掩膜(binary mask),以说明给定像素是否是目标的一部分。
Mask-RCNN 将 RoI Pooling 层替换成了 RoI Align。
ROI Pooling 的作用是根据预选框的位置坐标在特征图中将相应区域池化为固定尺寸的特征图,以便进行后续的分类和包围框回归操作。由于预选框的位置通常是由模型回归得到的,一般来讲是浮点数,而池化后的特征图要求尺寸固定,所以ROI Pooling这一操作存在两次量化的过程,此时的候选框已经和最开始回归出来的位置有一定的偏差,这个偏差会影响检测或者分割的准确度。
在这里插入图片描述
ROI Align取消量化操作,使用双线性插值的方法获得坐标为浮点数的像素点上的图像数值,从而将整个特征聚集过程转化为一个连续的操作。整个过程中没有用到量化操作,没有引入误差,即原图中的像素和feature map中的像素是完全对齐的,没有偏差,这不仅会提高检测的精度,同时也会有利于实例分割。

SSD

《SSD: Single Shot MultiBox Detector》2016 ECCV
在这里插入图片描述
SSD能直接预测目标类别和Bounding Box。与Faster R-CNN相比,该算法不需要生成候选区域,这极大提高了检测速度。SSD对不同卷积层的特征图分别用两个不同的 3×3 的卷积核进行卷积,分别预测类别与边界框。对于宽高大的特征图,感受野小,锚框多,适合检测小的物体;而对于宽高小的特征图,感受野大,锚框少,则适合检测大的物体,这样能实现多尺度的目标检测。

YOLO

《YOLOv4: Optimal Speed and Accuracy of Object Detection》CVPR 2020
在这里插入图片描述

YOLOv1

YOLOv1把图像看成一个 7 × 7 7\times7 7×7的栅格,每个栅格预测2个边界框(包括位置、尺寸和置信度),总共输出98个边界框,通过非极大值抑制算法得到最后可靠的结果。

非极大值抑制算法大致分两步,(1)根据阈值去除那些置信度低的边界框,(2)挑选出最大置信度的边界框作为预测输出,去除与这个边界框的IoU超过0.5的其他候选框,如此确定了一个对象的边界框。重复此步直到没有剩余的边界框。

YOLOv1对相互靠的很近的物体,还有很小的群体检测效果不好,这是因为一个网格中只预测了两个框,并且只属于一类。同一类物体出现的新的不常见的长宽比和其他情况时,泛化能力偏弱。
在这里插入图片描述
YOLOv1对VGG最后几层进行了修改,最后的输出是 7 × 7 × 30 7\times7\times30 7×7×30的特征图。 7 × 7 7\times7 7×7代码49个栅格,30个channels中的前10个代表2个边界框的坐标(x, y, w, h)以及对象的置信度confidence,后20个代表VOC数据集的20个类别。
在这里插入图片描述

YOLOv2

YOLOv2借鉴了RPN网络,利用k-means聚类出 k k k种候选框的宽和高,在卷积特征图上进行滑窗操作,每一个中心可以预测 k k k种不同大小的候选框。在每一个卷积层后添加BN。添加了一个转移层,把浅层特征图连接到深层特征图,使特征图拥有更好的细粒度特征。YOLOv2使用了新的特征提取模型DarkNet19。使用不同尺寸的图像同时训练网络,增强模型的鲁棒性。

YOLOv3

YOLOv3对v2的改进主要有三点:(1)将置信度和坐标分开预测,坐标预测还是通过网络进行预测,而置信度则是单独通过逻辑回归进行预测。(2)使用新的特征提取模型DarkNet53。(3)借由FPN的思想,引用中间层的输出与后层输出进行融合,进行三个尺度预测,每个尺度预测3个Bounding Boxes,候选框大小的选择仍然使用聚类得到9种尺寸,将其按照大小均分给3个尺度。

YOLOv4

YOLOv4运用了非常多现有的实用技巧,例如:加权残差连接(WRC)、跨阶段部分连接(CSP)、跨小批量标准化(CmBN)、自对抗训练(SAT)、Mish激活、马赛克数据增强、CIoU Loss等,让精度也上了一个台阶。YOLOv4 = CSPDarknet53 + SPP + PANet + YOLOv3

YOLOv5

YOLOv5的模型架构是与v4非常相近,只是修改了部分参数。YOLOv4在性能上优于YOLOv5,但是在灵活性与速度上弱于YOLOv5。

FPN

《Feature Pyramid Networks for Object Detection》
在这里插入图片描述
FPN(特征金字塔)结构是自上而下的路径和横向连接去结合低层高分辨率的特征,把高层的特征传下来,补充低层的语义,可以获得高分辨率、强语义的特征,有利于小目标的检测。SSD只用网络中的最高层构建金字塔,放弃了低级特征,但这对于小目标分辨来说是非常重要的。FPN实现了从单尺度的单张输入图像,快速构建在所有尺度上都具有强语义信息的特征金字塔,同时损失不大。

CornerNet

《CornerNet: Detecting Objects as Paired Keypoints》2018 ECCV
在这里插入图片描述
CornerNet 是根据一对关键点来进行物体的检测的,即左上角坐标和右下角坐标,这种anchor-free的方法可以省去计算anchors花费的时间,提高了检测的速度和精度。CornerNet 为每个点分配一个embedding vector,属于同一物体的点的vector的距离较小,以匹配同一物体bounding box的左上角和右下角。
在这里插入图片描述
CornerNet使用了Corner Pooling,以建立点corner和目标的位置关系。当求解某一个点的 Top-left Corner Pooling时 ,就是以该点为起点,水平向右看遇到的最大值以及竖直向下看最大的值之和。
在这里插入图片描述
网络有两个分支,分别用于左上角和右下角。每个分支有三个输出(heatmaps、embeddings、offsets),共6个输出。heatmaps表示了不同类别的左上角和右下角的位置信息以及位置的置信度信息。embeddings用来衡量左上角和右下角的距离的,从而判断某一对角点是否属于同一个物体的两个角点。offsets用于调整预测角点和真实值的偏差,缓解heatmaps被降采样后,再升采样回去造成的精度损失。网络的backbone是Hourglass Network,是一种呈沙漏状的downsampling 和 upsampling组合,常被用在姿态估计任务中。

Neck

Neck是目标检测框架中承上启下的关键环节。它对Backbone提取到的重要特征,进行再加工及合理利用,有利于下一步head的具体任务学习,如分类、回归、keypoint、instance mask等常见的任务。

上下采样

该方法的特点是不具有特征层聚合性的操作,直接在多级特征图后接head。如果backbone输出的特征图在尺寸上是相同的,如DenseNet,则需要构造出各种大小的特征图来检测不同大小的物体。中间尺寸特征图直接使用,大尺寸特征图以尺寸变换层上采样获得,小尺寸特征图以池化获得。
在这里插入图片描述

路径聚合

由于深层特征图尺寸小,经过层层卷积下采样使得小物体的信息严重丢失,所以深层不利于小物体检测,就将小物体检测交给浅层来做。由于深层特征图具有非常丰富的语义信息,那么最好把深层特征再往浅层传,以增加浅层语义信息。这也是FPN是工作原理。
这类方法的共性就是反复利用各种上下采样、拼接、点和或点积,来设计聚合策略。
在这里插入图片描述

NAS搜索

这类方法利用神经网络搜索方法来搜索合适的聚合路径,但是搜索的时间成本极高,且数学可解释性低。最新的研究已表明,人工设计的路径聚合在精度上亦可超过NAS搜索出来的结构 。
在这里插入图片描述

加权聚合

简单的聚合对所有参与的特征层都是一视同仁的,而实际上,这些来自不同层级的特征图对于单个物体而言,必然只有某一个是最适合检测它的,因此对聚合进行加权就显得尤为重要。ASFF就引入了可参与训练的加权因子来体现不同层级特征图的重要性。
在这里插入图片描述

非线性聚合

FPN以及其他的路径聚合法,都可视为是线性聚合。在《Deep Feature Pyramid Reconfiguration for Object Detection》一文中,作者建立了一种非线性聚合法。先把所有的层级特征图放在一起,然后学习多个非线性映射。非线性映射的学习模仿SENet的方法,带有注意力的味道。
在这里插入图片描述

增强小物体检测效果

  1. 采用特征金字塔、沙漏结构等网络子结构,来增强网络对多尺度尤其是小尺度特征的感知和处理能力;尽可能提升网络的感受野,使得网络能够更多地利用上下文信息来增强检测效果;减少网络总的下采样比例,使最后用于检测的特征分辨率更高。
  2. 提高小物体样本在总体样本中的比例;将图像缩小以生成小物体样本。
  3. 使用更大的输入图像尺寸。

常用损失函数

好的目标框回归损失应该考虑三个重要的几何因素:重叠面积,中心点距离,长宽比。

Smooth L1 Loss

  • L1 Loss 对 x 的导数为常数,在训练后期,x 很小时,若学习率不变,损失函数会在稳定值附近波动,很难收敛到更高的精度。
  • L2 Loss 对 x 的导数在 x 值很大时,其导数也很大,在训练初期不稳定。
  • Smooth L1 Loss 的公式为  smooth  L 1 ( x ) = { 0.5 x 2 i f ∣ x ∣ < 1 ∣ x ∣ − 0.5  otherswise  \text { smooth }_{L 1}(x)=\left\{\begin{array}{cc} 0.5 x^{2} & i f|x|<1 \\ |x|-0.5 & \text { otherswise } \end{array}\right.  smooth L1(x)={0.5x2x0.5ifx<1 otherswise  结合了L1 Loss 和 L2 Loss 的优点,避开其缺点。缺点是计算损失时要独立求出4个点的 loss,然后相加得到最终的 bbox loss。没有考虑 box 的四个坐标之间的相关性。

在这里插入图片描述

IOU Loss

 IoUloss  = − ln ⁡ ( IoU ⁡ ( b b o x g t , b b o x pred  ) ) \text { IoUloss }=-\ln \left(\operatorname{IoU}\left(b b o x_{g t}, b b o x_{\text {pred }}\right)\right)  IoUloss =ln(IoU(bboxgt,bboxpred ))
目标检测的常用评价方式是IoU,IOU Loss 可以反映预测框与目标框的相交情况。
缺点是:

  1. 当预测框与目标框不相交时,IOU 均为0,不能反映两个框距离的远近,此时损失函数不可导,IOU Loss 无法优化两个框不相交的情况。
  2. 当IoU值相同时,IoU值不能反映两个框是如何相交的。

GIOU Loss

G I o U = I o U − ∣ C − ∣ A ∪ B ∥ C , Loss ⁡ G I O U = 1 − G I o U G I o U=I o U-\frac{|C-| A \cup B \|}{C}, \operatorname{Loss}_{G I O U}=1-G I o U GIoU=IoUCCABLossGIOU=1GIoU
在这里插入图片描述
A 和 B 是预测框和目标框,C 是能够将 A 和 B 包围在内的最小封闭形状,计算 C 中没有覆盖 A 和 B 的面积占 C 总面积的比例。GIoU 的取值范围为[-1,1],在两框重合时取最大值,在两框无限远时取最小值-1。GIoU不仅关注重叠区域,也关注非重叠区域,能更好反映两者的重合度。
缺点是当目标框完全包裹预测框时,IoU和GIoU相同,无法区分其相对位置。

DIOU Loss

Loss ⁡ D I o U = 1 − I o U + ρ 2 ( b , b g t ) c 2 \operatorname{Loss}_{D I o U}=1-I o U+\frac{\rho^{2}\left(b, b^{g t}\right)}{c^{2}} LossDIoU=1IoU+c2ρ2(b,bgt)
其中 ρ ( ) \rho() ρ()表示预测框和目标框中心点的欧式距离, c c c表示预测框和目标框最小外接矩形的对角线距离。
在这里插入图片描述
DIoU Loss在和目标框不重叠时,仍然可以为边界框提供移动方向;可以直接最小化两个目标框的距离。缺点是没有考虑长宽比。

CIOU Loss

Loss ⁡ C I o U = 1 − I o U + ρ 2 ( b , b k ) c 2 + α v \operatorname{Loss}_{C I o U}=1-I o U+\frac{\rho^{2}\left(b, b^{k}\right)}{c^{2}}+\alpha v LossCIoU=1IoU+c2ρ2(b,bk)+αv
CIOU Loss 在 DIOU Loss 的基础上加了一个影响因子,其中 α = v ( 1 − I o U ) + v \alpha=\frac{v}{(1-I o U)+v} α=(1IoU)+vv v = 4 π 2 ( arctan ⁡ w g t h θ t − arctan ⁡ w h ) 2 v=\frac{4}{\pi^{2}}\left(\arctan \frac{w^{g t}}{h^{\theta t}}-\arctan \frac{w}{h}\right)^{2} v=π24(arctanhθtwgtarctanhw)2

EIoU Loss

Loss ⁡ E I O U = 1 − I o U + ρ 2 ( b , b g t ) c 2 + α 2 ( w , w g t ) C w 2 + ρ 2 ( h , h g t ) C h 2 \operatorname{Loss}_{E I O U}=1-I o U+\frac{\rho^{2}\left(b, b^{g t}\right)}{c^{2}}+\frac{\alpha^{2}\left(w, w^{g t}\right)}{C_{w}^{2}}+\frac{\rho^{2}\left(h, h^{g t}\right)}{C_{h}^{2}} LossEIOU=1IoU+c2ρ2(b,bgt)+Cw2α2(w,wgt)+Ch2ρ2(h,hgt)
EIoU Loss 将 CIoU Loss 中的 α v \alpha v αv替换成 α 2 ( w , w g t ) C w 2 + ρ 2 ( h , h g t ) C h 2 \frac{\alpha^{2}\left(w, w^{g t}\right)}{C_{w}^{2}}+\frac{\rho^{2}\left(h, h^{g t}\right)}{C_{h}^{2}} Cw2α2(w,wgt)+Ch2ρ2(h,hgt)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【学习笔记】经典目标检测算法 的相关文章

  • Autosar软件架构

    软件架构 应用层通过 Simulink模型实现 模型的代码生成使用统一配置脚本 底层软件模块满足AUTOSAR 4 2 1标准要求 其软件架构如下图所示 软件架构 2 2 2 Com通信模块配置 BCU通过唤醒信号控制相应CAN消息的通信使
  • Vue.js 最新官方下载地址与项目导入

    目录 VUE2下载网址 VUE2使用示例 VUE3下载与使用 VUE3示例 在官网上下载vue js或者是vue min js 并用
  • shell学习笔记(3)grep -v grep

    网上查阅shell定时脚本相关代码 其中有一句grep v grep awk awk print 2 不是很理解 基础知识太薄弱 pid ps ef grep run jar grep v grep awk print 2 经查阅资料 gr

随机推荐

  • 【零基础 快速学Java】韩顺平 p87-101 四种进制及其相互转换、二进制运算(原码、补码、反码)、7种位运算符

    课程 p87 101 四种进制介绍 小总结 二进制0b开头 八进制0开头 十六进制0x开头 进制字母不区分大小写 直接输出十进制 如 public class temp public static void main String args
  • c++去掉多余空格

    题目 输入一个字符串 字符串中可能包含多个连续的空格 请将多余的空格去掉 只留下一个空格 输入格式 共一行 包含一个字符串 输出格式 输出去掉多余空格后的字符串 占一行 数据范围 输入字符串的长度不超过 200200 保证输入字符串的开头和
  • 什么是价值流图 (Value Stream)?示例汇总

    价值流图 VSM 是一种精益制造技术 用于分析 设计和管理将产品带给客户所需的材料和信息流 它使用标准符号系统来描述各种工作流和信息流 项目被映射为添加值或不从客户的角度添加值 目的是根除不增加价值的项目 值流映射可用于改进可重复步骤的任何
  • 前端这一刻我悟了

    早上没事 在回顾react的时候 突然悟了 发现vue 还是react组件化开发 父组件套子组件 父子组件之间相互通信 写页面样式 逻辑 发送服务器请求 学习主要学的是语法 这些语法写个两三遍就都会了 还真是代码搬运工 再就是代码写的漂亮点
  • vue项目中Echarts图表完整引入、按需加载以及修改主题色

    一 完整引入Echarts 下载安装echarts包 npm install echarts S or yarn add echarts 定义图表显示的容器 并进行渲染
  • 项目资源管理

    目录 申明 1 核心概念 2 虚拟团队 分布式团队 3 规划质量管理 3 1 1 输入 3 1 2 工具和技术 3 1 2 1 责任分配矩阵 3 1 3 输出 4 估算活动资源 4 1 1 输入 4 1 2 工具与技术 4 1 3 输出 4
  • git常用操作指令手册、持续更新....

    一 拉取远程代码到本地流程 1 新建文件夹 git bash here 初始化本地仓库 git init 2 和远程仓库建立连接 git remote add origin 远程地址 3 获取远程分支最新状态 git fetch origi
  • gitee删除远程仓库

    1 登录自己的gitee 2 点击仓库进行选择要删除的仓库 4 进入要删除的仓库 5 在导航栏中点击管理 强调在导航中就有了 6 在左侧的仓库设置中 再点击删除仓库 右侧删除仓库的内容浮现 7 点击删除仓库 点击确认删除 要记得输入gite
  • 【Python 1-7】Python手把手教程之——详解列表List

    列表 作者 弗拉德 来源 弗拉德 公众号 fulade me 列表 在其他语言中又被称为数组 是由一系列按特定顺序排列的元素组成 你可以创建包含字母表中所有字母 数字0 9或所有家庭成员姓名的列表 你也可以创建几个列表 把这几个列表又放在一
  • qvboxlayout布局背景色怎么设置_QT开发(二十一)——QT布局管理器

    一 布局管理器简介 QT中使用绝对定位的布局方式无法自适应窗口的变化 QT中提供了对界面组件进行布局管理的类 用于对界面组件进行管理 能够自动排列窗口中的界面组件 窗口大小变化后自动更新界面组件的大小 QLayout是QT中布局管理器的抽象
  • 西门子200SMART笔记

    第一章 PLC概述 上位机 控件库 HslControls SunnyUI 初级课程 传感器接线方式 棕色 BN 蓝色 BL 黑色 BK 信号线 NPN型 1M M 接 24V PNP型 1M M 接 0V PLC输出接线 电路图 gt 梯
  • 部队脱文档水印软件_网上下载的Word文档有水印?4种方法教你快速去水印!!...

    Hello 各位叨友们好呀 我是叨叨君 我们在网上查找资料下载文档的时候 经常会遇到一些带有水印的文件 那么该怎么把水印去除呢 今天就教大家如何快速去除Word PDF文件中的水印 方法一 设置无水印 打开word文档 点击 设计 工具 再
  • Jquery中$(function(){})

    1 在哪书写js文件 如果我们要执行一段js代码 我们该怎么办呢 1 我们可以写一个js文件 在js文件里写执行函数 然后再 进行引用 2 我们可以直接在HTML页面下 插入脚本 同样是 两种方式没什么区别 唯一的区别就是程序的解耦 所以当
  • 接口测试 —— Requests库GET请求

    Requests库GET请求是使用HTTP协议中的GET请求方式对目标网站发起请求 不带参数的GET请求请看上一篇文章的练习 1 Requests库待参数的GET请求 使用Get方法带参数请求时 是params 参数字典 而不是data 参
  • new出的对象数组必须要用delete[]删除,而普通数组和结构数组delete和delete[]都一样

    为何new出的对象数组必须要用delete 删除 而普通数组delete和delete 都一样 CrtMemBlockHeader 温馨提示 该文所有测试没有特殊说明都是在Debug模式下 用的是VS2010编译器
  • JavaScript的数组塌陷

    关注微信公众号 大前端私房菜 回复暗号 面试宝典 即可免费领取107页前端面试题 什么是数组塌陷 当数组执行删除单元操作时 被删除单元 之后的单元 会前移 进而顶替被删除单元 出现在被删除单元的位置上 造成数组长度减少的情况 这样的现象称为
  • 修改Intelij IDEA的maven下载地址为国内阿里云镜像

    1 win7环境 默认情况下在用户目录的 m2下自己新建setting文件 m2 settings xml 2 settings xml文件内容为 1 2 3 4 5 6 7 8 9 10 11 12 13 14
  • 【数学建模】2023 深圳杯 & 东三省 数学建模 B 题 :电子资源版权保护问题(含源代码 & 最终论文)

    文章目录 一 题目介绍 二 问题的解答 2 1 问题一 2 1 1 图像的预处理 2 1 2 LSB的方法 stegano库测试 2 1 3 LSB 方法建模 2 2 问题二 2 3 问题三 2 3 1 方法与步骤概述 2 3 2 基于DC
  • Python的编码风格是怎么样的?核心要点有这些

    Python因为其简洁明了的编码风格和以缩进划分作用域的规则让其在编码时对风格的统一是有非常严格的要求的 下文就将详细说明python的编码风格是怎么样的 现在你将要写更长 更复杂Python代码 是时候讨论一下代码风格了 大多数语言都能以
  • 【学习笔记】经典目标检测算法

    定义 目标检测任务的目标是找到图像中的所有感兴趣区域 并确定这些区域的位置和类别 目标检测领域的深度学习方法主要分为两大类 两阶段式 Two stage 目标检测算法和单阶段式 One stage 目标检测算法 两步模型有独立地 显式地提取