深度学习-CV基础知识笔记

2023-05-16

CNN卷积神经网络相关(分类,backbone)

LeNet
卷积神经网络的里程碑。由2个卷积层、2个池化层和2个全连接层组成,卷积核大小是5 * 5,池化层大小为2 * 2,最后通过softmax输出。

AlexNet
卷积神经网络崛起之作。由5个卷积层和3个全连接层组成,输出为softmax。
贡献:

  1. ReLU 激活函数。极大缓解了梯度消失问题,速度也比之前的sigmoid函数和tanh函数快。
  2. 重叠池化(Overlapping Pooling)。AlexNet使用的是最大池化(Maxpooling),步长小于池化核,造成输出之间会有重叠和覆盖,可以提升特征的丰富性。
  3. Drupout。在训练时,Dropout随机忽略一部分神经元,使得这部分神经元在网络前向和反向传播时不可见。可以有效减少模型过拟合。
  4. 局部响应归一化(LRN)。通过LRN层对局部神经元的活动创建竞争机制,使得响应较大的神经元值变得更大,反馈较小的神经元得到抑制。增强了模型的泛化能力。
  5. 大数据与多GPU训练。数据才是原罪。
  6. 数据增强。对于图像数据,常见的变化包括裁剪、镜像、旋转、缩放、色彩光照变化(变化,加入噪点,RGB通道强度变化)等。

VGGNet
继承了AlexNet的特点,使用了小卷积核,从而追加网络深度,提升网络效果。
两个3 * 3卷积的卷积级联感受野相当于5 * 5卷积,三个3 * 3卷积级联感受野相当于7 * 7卷积。每个卷积层后面跟着非线性激活函数,这样既增加了非线性变化也减少了网络参数。

Inception
来自Google,Inception v1 又名GoogLeNet。Inception模块的设计,增加了网络的宽度。
Inception多条通路的设计,使用不同大小的滤波器对输入图进行卷积操作,并附加最大池化,最后子层的输出级联起来(filter concat),并传送至下一个Inception模块。
这样的设计,为了解决在一个图上信息差异,具有全局的信息使用大卷积,信息比较局部的信息使用小卷积,从而同时得到多种信息。
级联(filter concat)操作前提条件是特征图大小相同,只是通道方向进行追加。
为了降低参数,在使用3 * 3和5 * 5卷积层之前进行了1 * 1卷积层来降低通道数,称为瓶颈操作(Bottleneck)。

Inception v2借鉴了VGGNet的方法,对卷积进行分解,将5 * 5卷积拆分成两个3 * 3卷积,减少了训练参数,引入了更多非线性变换。Module A
更进一步,将nn的卷积拆分成1 * n,n * 1的卷积。这种非对称的卷积拆分。与之前的拆分为小卷积相比,效果更好,增加特征多样性。Module B
考虑到宽度,将Module A 和 B结合,单独输出1
3和3*1进行级联,以增加宽度。Module C
Inception v2认为瓶颈操作不应该出现在浅层,因此通过几个卷积层才将Module A。Module B。Module C模块串联。
另一项重大改进是使用了批归一化(Batch Normalizattion,BN)。网络中间特征也能保持特征分布均衡,加速模型收敛。防止过拟合的有效方法。可以减少Drupout的使用。

Inception v3整合了v2的所有改进,在原基础上使用了更大的分解的7*7卷积核。也使用了RMSProp优化器,在损失上增加了正则化项,防止网络对某一类过分过拟合。

Inception v4对浅层进行了设计,stem部分。对Inception A,B,C也进行了改进。网络中对下采样的处理由原来的池化,设计了降为模块。

ResNet
深度残差网络,是近年的开创性工作,使得上千层成为可能。减缓了之前由于网络太深造成的梯度消失问题。
每一个残差模块,由一系列层和一个捷径(shortcut)组成。这个捷径将输入特征图和经过一系列层的输出特征图连接到一起,对应元素位置进行加法运输,残差模块的输入输出特征的现状是一致的。

DenseNet
多层特征融合重用,保证浅层特征信息多次利用。密集连接模块(Dense Block),在模块中任意两层之间都有连接,BN + RuLU + 3 * 3 conv的组合,在通道上进行连接操作,因此特征图大小一致。
Dense Block之间由转换层连接,一般转换层由BN层,11的卷积层和22的平均池化层组成。
优点:1.解决了深层网络的梯度消失。2.加强了特征的传播。减少了模型参数。
缺点:内存消耗较大。耗时。

轻量级:
MobileNet
使用的是非常规的深度可分离卷积。是由一次逐通道卷积和一次逐点卷积组成。正常的一个卷积为(m,d,d),m为通道。逐通道卷积是(1,d,d), 一共由m个卷积进行卷积操作DWconv。逐点卷积就是1*1卷积conv,(m,1,1)。
MobileNet平衡了计算量,存储空间和准确率三个方面的要求。与vgg16相比,精度相差不大,但速度和运算量上要好很多。

ShuffleNet
使用分组逐点卷积(Gconv)来代替逐点卷积,将输入特征图分成若干组,卷积操作限制在每个组内,各自完成独立操作。然后进行通道重排(channel shuffle),分组后的输出重新排列。
分组数是超参,较大的分组数有利于网络编码更多的信息,提升模型识别效果。
shufflenet继承了深度残差网络(resnet),基于分组逐点卷积和通道重排进行了设计。设计了shufflenet卷积模块和降采样模块。

RNN循环神经网络

权值共享,短期记忆。当前使用在序列数据处理,如语音识别,面部人脸建模,看图说话,视频预测。

对于简单的循环网络,输入层到隐藏层的参数为权重矩阵U,隐藏层到输出层的参数为权重矩阵V,隐藏层到隐藏层之间的参数权重矩阵W(该权重共享),U处有一个偏置b,V处一个偏置c.

循环神经网络的参数学习,有两种方式:时间反向传播算法BPTT(先从最后一个时间节进行求导)和实时循环学习算法BTRL.
循环神经网络变种比较多,可以根据图看出不同的处理方式。

长期依赖问题,造成的梯度消失和梯度爆炸。目前解决方式,使用最多的,最好的策略是门控RNN。其中最著名的两个网络长短期记忆(LSTM)和基于门控循环单元(GRU)的网络。

双向RNN(Bi-RNN),通过提取过去和未来的信息,结合上下文信息,产生更精准的精度。在图像,语音和自然语言处理广泛应用。如视频动作检测。

序列到序列seq2seq,可变长度的序列。

主要包含两部分:
编码器(encoder)--输入RNN,通过RNN处理得到输入序列的隐藏单元状态,代表着输入序列的语义特征,“上下文”C。
解码器(decoder)--输出RNN,以固定长度的向量为条件,使用向量C作为约束,产生输出序列,并且上一时刻的输出作为下一时刻的输入,直到输出终止符。

注意力机制 将向量C变成一个长度可变的序列而不是一个定长的向量,引入了将序列C的元素与输出序列的元素关联匹配的注意力机制。

机器翻译: 通过注意力机制,输出序列的每个文字都得到一个“上下文”信息C,而不是只有一个了。这种方式的优点是在解码时,每一个时间步长产生的结果更有针对性,更好解码。
自注意力模型: 动态的生成不同的连接权重。可以作为卷积神经网络或循环神经网络中的一个模块来使用。

深度生成模型

概率生成模型,可分为 变分自编码(VAE)和生成对抗网络(GAN),GAN网络应用较广,图像合成,图像语义编辑,风格迁移,图像超分辨率等。

GAN网络由生成器G和判别器D构成(两个神经网络)。生成器G的目标是捕获真实数据的潜在发布,并生成新数据。判别器D是一个二分类,其目标是判别输入是来自真实数据还是新生成样本。

生成对抗网络典型模型:DCGAN、WGA、 LAPGAN
DCGAN(生成卷积生成对抗网络)。 开发人员给出的几点建议,判别器使用一个比生成器小的模型,因为生成器的任务更重。在判别器中使用Dropout,防止过拟合,使生成器生成奇怪的图像。较高的L2正则可以降低判别器的能力,使生成器的学习变得简单。
WGAN 基于DCGAN进行的优化,缓解了模型塌陷问题,质量更好。
LAPGAN 借鉴了拉普拉斯金字塔的方式,学习相邻层间的残差,从从粗到细地生成图像。
应用: 图像生成、图像转换。图像修复和超分辨率。视频预测。

深度强化学习RL

强化学习模型的结构包含两个部分:智能体(Agent)和环境(Environment). 智能体通过观察环境的状态(State)并获取反馈的奖励(Reward)来进行学习和决策,环境会受智能体的动作(Action)影响而改变状态,并反馈奖励

强化学习分类:基于值函数的强化学习,基于策略函数的强化学习,演员-评判家算法。

开创性深度强化学习,深度Q网络,基于值函数。
应用:机械臂抓取,自动驾驶汽车控制,机器人视觉自主导航等等。

计算机视觉CV

目标检测(Object Detection)

数据集: Pascal VOC,COCO, KITTI(自动驾驶三维目标检测)

基于区域的卷积神经网络目标检测: 生成预测框,然后对预测框进行分类,是两阶段的检测算法。

R-CNN:

  1. 生成候选区域(选择性搜索算法生成2000左右的候选区域)(RoI)
  2. 候选区域缩放到固定大小(缩到224 *224)
  3. 特征提取(使用CNN提取候选区域的特征,输出4096维特征)
  4. 候选区域分类(对2000多个的4096维特征向量进行分类,每个类别一个分类器)
  5. 非极大值抑制NMS
  6. 边界精调(使用线性回归器来精调边框位置,每个类别一个线性回归器)

优缺点:计算量大且冗余,候选框缩放造成失真,训练复杂。

SPP-Net:

空间金字塔池化(SPP)取代了原来的裁剪缩放操作,对候选区域窗口进行空间金字塔池化,取相同维度的特征。(提取多尺度特征,将窗口划分为4 * 4,2 * 2,1 * 1三种尺度块(block),每块进行Max pooling得到16 * 256,4 * 256,1 * 256,并将这些特征拼接起来,得到1 * 21 * 256的定长特征向量。
只进行了一次CNN提取特征,然后将特征与生成框进行映射,而不必每次都对候选框进行特征提取。

  1. 生成候选框(2000)
  2. 特征提取(CNN提取整个图特征)
  3. 空间池化采样(将所以特征图映射到特征图上,对每个窗口进行SPP操作),输出固定长度的特征到全连接层)
  4. 候选框分类
  5. 边界精调
  6. NMS

优缺点:提升了训练速度,但支持向量机和回归器依然是单独训练,且保存了大量特征。

Fast-RCNN:

使用神经网络进行分类和边界框精调代替了原来的支持向量机和线性回归器。参考SPP层提出了RoI Pooling,不仅能将选择搜索算法得到的候选框映射到特征图上,并且可以梯度回传到CNN。

RoI Pooling操作将候选区域映射到特征图上的区域称为兴趣区域(RoI),并且舍弃了多尺度特征,只将RoI划分为7 * 7的块后进行Max pooling,得到7 * 7 * 256的特征,并将这个特征送人全连接层。
全连接层分为分类分支和边界框预测分支。在分类分支,特征向量经过全连接层后接softmax进行K + 1分类,包含一个背景类。在边界框预测分支,只计算了K类RoI对应的边框值t=(x,y,w,h).

分类loss 使用softmax loss ,边框回归使用的 smooth L1. 构成了多任务损失函数。loss = softmax loss + smooth L1

  1. 生成候选框(2000)
  2. 特征提取(CNN)
  3. RoI pooling(将候选区域映射到特征图上的特征,通过RoI Pooling得到固定长度送人全连接层)
  4. 分类和边界精调
  5. NMS

Faster-RCNN:
为了解决选择性搜索算法的巨大耗时,提出了区域提名网络(RPN). 除了候选框生成外,其它仍然采样Fast RCNN的方式进行。第一次意义上实现了端到端检测训练的实现。

  1. 特征提取(使用CNN进行特征提取,将特征图分布送入RPN和目标分类回归子网)
  2. 生成候选框(RPN生成预测框,得分高的2000个候选框作为训练,300个作为预测)
  3. RoI Pooling(将生成的预测框映射到之前的特征图上,经过RoI Pooling得到固定长度特征送入全连接层)
    4)分类和边框回归(经过两个全连接层后分别进行分类和边框预测)
  4. NMS

RPN:
生成图像中的边界框,输出类别和对应的位置。因为只需判断目标是否存在于边界框中,只有两个类别,前景和背景。
Anchors(预先设计的框), 设置了k=9个边界框,其长宽比为1:1, 1:2, 2:1, 面积尺度为8,16,32.(此处为feature map面积尺度,映射到原图中为128,256,512,此次默认下采样为16倍,面积尺度也属于超参,自行计算修改,收敛会更快)

在提取后的H*W特征图的每个点上创建一个Anchor,并用卷积提取其窗口内的特征,输出为256维的向量,分别送人分类和回归分支(一个特征点有9个窗口,输出向量为9 * 256)。
在分类中,分为前景和背景两类(两类概率),因此k * 256(9 * 256)转换为2k个输出。
在回归中,k个边框对应的边界框左上角顶点的位置与边框大小(x, y, w, h),256维向量转换维4k个输出。

RPN输出所以的预测框的类别和位置后,需要根据真正的边界框来定义边界框的正负样本,以进行网络训练。预测框与真实框的IOU大于0.5的为正样本,大于0.1小于0.5的为负样本。

loss使用了和fast rcnn类似的损失函数,分类loss 使用softmax loss ,边框回归使用的 smooth L1. 构成了多任务损失函数。loss = softmax loss + smooth L1

基于回归的卷积神经网络目标检测: 从输入图像的位置上直接回归这个位置的分类和边框。一阶段的检测算法 通过感受野设置相关参数

YOLO:

  1. 缩放图像(将图像缩放至448 * 448,然后送人CNN)
  2. 预测边界框(将图像分割成S*S的网格,每个网格对应B个边界框,预测所以网格对应的边界框位置,并对网格内容进行分类)
  3. NMS

在YOLO算法中,输入图像被分割成S * S的网格,每个网格对应B个边界框,每个边界框包含5个参数,边界框的位置(x,y,w,h)和一个置信度。
此外还要进行网格中物品的分类,总共C个类别,则S*S的网格总共有S * S * (B * 5+C)的特征。

优缺点: 速度大大的加快,将图像分割S*S的网格,减低了检测精度,最多只能检测S * S * B个物品,同在一个格子中的小物品,也只能检出一个。

SSD:

  1. 缩放图像(缩放至300 * 300,并送人CNN)
  2. 特征提取(使用CNN提取特征,并且保留多尺度特征图)
  3. 预测边界框(对不同尺度的特征图,每个特征点都设置一组default box(类似Anchor,不同的面积和长宽比), 对每个default box进行分类和回归)
  4. NMS

使用VGG16, 通过对多尺度特征图,对不同尺度特征图使用不同的default box。如 38 * 38的特征图上,使用了4种不同的default box,共生成38 * 38 * 4个default box。
经过卷积产生38 * 38 * 4 * (4+C)维向量,4是边框位置和尺寸,C是类别数。(即每个类的4点信息)。最后,全部特征图一共产生(38 * 38 * 4 + 19 * 19 * 6 + 10 * 10 * 6 + 5 * 5 * 6 + 3 * 3 * 4 + 1 * 1 * 4)= 8732个box。

优缺点:在速度同样快速的情况下,精度也有了较大的提升,但是SSD需要人工设定default box的形状与面积,需要相当的经验才能取得好的效果。

语义分割(Semantic Segmentation)

像数级的分类,同一类使用相同颜色,而实例分割,则不仅将像数点进行标记,更对这一类的不同个体进行区分。FCN,SegNet,U-Net,DeepLab

全卷积神经网络(FCN)
FCN可以接受任意尺寸的输入图像,通过反卷积层对最后一个卷积层的特征图进行上采样,将它恢复到输入图像尺寸大小。
这样就可以对每一个像数产生一个预测,最后对上采样的特征图进行像数的分类。

以Alexnet为例,FCN是将其最后三层全连接层改为了卷积层,其卷积核大小为(256,1,1,4096).(4096,1,1,4096),(4096,1,1,1000),最后这层可以看作是所有类别的热力图,因为VOC有21类,所以将1000改为21(20+1)。
直接输出的结果是很粗糙的,细节不明显。因此,采用skip(跳跃)连接的方式,将之前的特征图融合起来,提高语义分割的准确率。

将不同池化层的结果进行上采样,然后结合这些结果来优化输出,分为FCN-32s,FCN-16s,FCN-8s三种。
FCN-32s 对conv7的特征图进行上采样,使它扩大32倍。
FCN-16s 由于conv7的输出维度是等于pool5的,而pool5的输出维度又是pool4输出的二分之一,因此现将conv7上采样扩大2倍,然后和pool4的输出进行融合,最后对融合之后的上采样扩大16倍,得到与原始图像相同的大小。
FCN-8s 同理,由于conv7的输出尺寸是pool3的输出尺寸的四分之一,pool4的输出又是pool3的二分之一,所以先将conv7的输出上采样4倍,然后将pool4的输出上采样2倍,得到和pool3一样的输出大小,最后将三个融合起来,再进行上采样8倍,得到和输入图像一样的大小。

SegNet
编码-解码结构的端到端语义分割网络
编码 正常的CNN操作
解码 对特征图上采样,后接卷积层增强特征,上采样的方法是反向的Max pooling操作,根据之前的max pooling时保留的位置信息,恢复其特征,其余补0.

类似Segnet这种编码-解码方法,还有DeconvNet(使用转置卷积来增强上采样后的特征)、U-Net(使用类似FCN的skip方式,将不同尺度的特征图结合进行语义分割)

DeepLab
全卷积网络+条件随机场(CRF)。

全卷积网络:去掉池化层,以避免池化层的下采样带来的信息丢失。将后续的卷积改为空洞卷积以增加卷积层的感受野。
条件随机场:在卷积网络进行了粗略的语义分割后,再使用全连接的条件随机场进行更精细的调整,卷积神经网络边界定位不准确的问题。
随着卷积神经网络版本的精度的提升,可以达到精细的结果,CRF的计算量比较大,将其去除。
DeepLab V3,其中的ASSP模块,结合不同尺度的卷积特征,并编码了全局内容的图像层特征,提升了分割效果。

自然语言处理NLP

包含语义理解和语义生成。语义理解有语音识别、词性标注、句法分析、机器翻译等。语义生成包含语音合成、对话生成等。

基本过程 获取语料、语料预处理、特征工程、任务建模。
获取语料 语言材料。可以自己爬取整理,也可以使用公开语料库。
语料预处理
清洗 将不感兴趣的噪点数据删除。类似爬取后多余的广告,文档中作者,出版社等信息。
分词 英文语言问题,是采用空格区分单词。而中文比较困难,现在也有很多基于统计的方法,对其进行分词。
词性标注(不是必须的) 根据上下文对每个单词贴上词性标签。在文本分类不需要考虑词性,但在情感分析、知识推理等问题需要考虑词性。
去停用词(不是必须的) 去除不需要的词,如标点符号,人称,语气等

特征工程 完成预处理后,需要将词表示成计算机容易处理的结构化数据。有两种表示:词袋模型和词向量。
词袋模型 不考虑词语在句子中的顺序,同一放在一个袋子中,词出现的次数作为训练分类器的特征。
词向量 one-hot 将来自词汇表的单词或者短语映射到实数向量。word2vec可以将文本内容处理简化为向量运算,其输出的词可以用来聚类、词性分析等任务,
任务建模 不同深度学习方法进行建模 RNN更适合其使用,通常是两种结合的方式进行,CNN进行特征提取,RNN进行上下文信息获取理解

文本分类 TextCNN
机器翻译 Seq2Seq架构的编码-解码形式,现在火热的transfomer
自动问答 Seq2Seq

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

深度学习-CV基础知识笔记 的相关文章

  • linux安装部署mysql服务 tar.gz rpm两种安装方式教程

    一 介绍 本教程为linux下安装部署mysql服务 xff0c 安装方式分为两种 xff0c 一种tar gz包安装 xff0c 另一种为rpm包安装 二 准备工作 服务器 xff1a linxu CentOS 7 mysql服务tar
  • C:_debug_printf,基于vsnprintf 或 vprintf实现带时间戳和源码信息(__FILE__,__FUNCTION__, __LINE__)的格式化打印输出

    写C程序的时候 printf输出调试信息是常态 xff0c printf输出调试信息时如果能自动带源码信息 FILE FUNCTION LINE xff0c 显然更方便查找问题 xff0c 如果能再加上时间戳就更完美了 如果到处都用prin
  • axios.create的理解以及在VUE项目中为何要对axios进行封装

    最开始学习的时候 xff0c 一直不太理解axios中create的用法 xff0c 今天来大概聊聊 进入公司后 xff0c 发现公司并不是用的axios去获取接口 xff0c 而是对axios进行了一次封装 xff0c 因为我们的项目比较
  • MySQL查看和修改字符集

    一 查看字符集 查看MYSQL数据库服务器和数据库字符集 方法一 xff1a show variables like 39 character 39 方法二 xff1a show variables like 39 collation 39
  • 安装arm_qt交叉编译环境(亲测有效)

    1 下载编译器Linaro Releases Linaro Releases 这里面的版本特别多 xff0c 对应的版本都会不一样 xff0c 如下图 需要看arm开发板是32位的还是64位的 xff0c 我用的开发板是32位的 xff0c
  • linux服务器之间数据迁移权限不够解决方案

    问题描述 xff1a linux下服务器之间迁移文件 xff0c 因权限不够 xff0c 无法迁移成功 Permission denied 原因分析 xff1a 用户权限不够 xff0c 无法迁移到指定目录 解决方案 xff1a 首先在目标
  • rust 条件语句和循环的用法 -7

    目录 一 xff0c 条件语句 二 xff0c 循环 xff08 一 xff09 loop xff0c while for 三种循环 xff0c 三个返回关键字 continue break return xff08 二 xff09 for
  • 避坑-go语言S3参数详解

    云端 事实上 xff0c 笔者之前对互联网存储方式基本没有概念 xff0c 在6个月前才开始接触nas存储 对象存储等 xff0c 并且直接参与项目 xff0c 当时可谓一头雾水 xff0c 连续两晚工作到凌晨才算完成当时s3对象存储求 x
  • 排序——冒泡排序法

    随着大数据和人工智能技术的普及和应用 xff0c 企业所拥有的数据量堵在成倍的增长 xff0c 排序算法成为不可或缺的重要工具之一 排序的过程中 xff0c 数据的移动方式可以分为 直接移动 和 逻辑移动 两种 直接移动 是交换存储数据的位
  • 排序——插入排序法

    插入排序法 插入排序法是将数组中的元素注意与以为排序好的数据进行比较 xff0c 先将前两个元素先派好 xff0c 再将第三个元素插入到适当的位置 也就是这三个元素仍然是排序好的 xff0c 接着将第四个元素加入 xff0c 重复此步骤 x
  • 笔记本电脑键盘失灵拯救方法总结

    笔记本键盘失灵怎么办 笔记本键盘失灵原因屏幕键盘的使用笔记本键盘拯救方案一笔记本键盘拯救方案二 笔记本键盘失灵原因 驱动失效 xff0c 相关文件被删除 xff1b 硬件损坏这种情况很少 xff0c 本文不做硬件修理讨论 xff1b 注册表
  • CATIA二次开发CAA安装

    安装资料在网盘里 Win7 64位 以下软件均已管理员身份运行 xff1a 1 安装vs2008 gt 自定义安装 gt 选择要安装的功能 gt Visual C 43 gt x64编译器和工具 1 2安装SP1 2 安装CATIA V5
  • 在3080显卡电脑上安装Linux系统

    首先电脑配置如下 xff1a 品牌 xff1a 微星 GP76 笔记本电脑 BIOS xff1a American Megatrends International LLC E17K4IMS 404 2022 1 21 CPU xff1a
  • Linux:文件系统

    Linux文件系统简介 1 Linux文件系统与Windows有较大的差别 Windows的文件结构是多个并列的树状结构 xff0c 最顶部的是不同的磁盘 分区 xff0c 如C D E F等 Linux的文件结构是单个的树状结构 xff0
  • Linux:服务器相关指令

    服务相关命令 1 随着微服务兴起 xff0c springboot也用得越来越多 xff0c springboot项目默认是打包成jar包的 xff0c 执行jar包就可以同时启动其内置的tomcat xff0c 免去了单独部署tomcat
  • Linux:用户相关

    Linux用户 1 Linux系统是一个多用户多任务的分时操作系统 xff0c 任何一个要使用系统资源的用户 xff0c 都必须首先向系统管理员申请一个账号 xff0c 然后以这个账号的身份进入系统 2 用户的账号一方面可以帮助系统管理员对
  • Selenium:简介

    HTML简介 1 HTML中文为超文本标记语言 HyperText Markup Language 是一种用于创建网页的标准标记语言 2 HTML是用来描述网页的一种语言 nbsp nbsp nbsp HTML不是一种编程语言 而是一种标记
  • Selenium:元素定位

    Selenium自动化测试 1 Selenium对网页的控制是基于各种前端元素的 在使用过程中 对于元素的定位是基础 只有准确抓取到对应元素才能进行后续的自动化控制 nbsp nbsp nbsp 前面介绍了前端网页HTML是由很多标签元素有
  • Selenium:浏览器操作

    Selenium浏览器操作 1 前面介绍过 根据Selenium下的WebDriver类可以实例化一个浏览器WebDriver对象 返回WebDriver对象 2 打开一个指定网页 定位HTML文档中指定元素都是根据浏览器WebDriver
  • Selenium:弹窗处理

    HTML中的弹窗 1 在实际系统中 在完成某些操作时会弹出对话框来提示 主要分为 警告消息框 确认消息框 提示消息对话 三种类型的对话框 2 警告消息框 alert 警告消息框提供了一个 确定 按钮让用户关闭该消息框 并且该消息框是模式对话

随机推荐

  • Selenium:表单切换

    表单 1 就是网页标签名为frame或iframe的元素 表单引用了其他页面的链接 真正的页面数据没有出现在源码中 但是在浏览器中可以看见 与浏览器的多个窗口类似 nbsp nbsp nbsp 这里说的表单不是HTML中的form标签 而是
  • Seleniu:元素常用操作

    Selenium元素操作 1 在使用Selenium过程中 仅仅是对元素进行定位和对浏览器WebDriver对象进行操作是完全不够的 更多的是需要我们对一个元素进行操作 nbsp nbsp nbsp 比如 向输入框中输入数据 点击按钮等等
  • Selenium:鼠标、键盘事件

    鼠标事件 1 前面介绍了Selenium中模拟鼠标 左键单击 的方法click 仅仅只有这个方法是完全不够的 现在的Web产品中提供了更丰富的鼠标交互方式 nbsp nbsp nbsp 例如鼠标右击 双击 悬停 拖动等功能 nbsp nbs
  • rust实现一个tcp server

    服务端 use std net TcpListener TcpStream use std thread use std time use std io use std io Read Write fn handle client mut
  • Selenium:元素判断

    判断元素是否存在 1 前面有介绍过使用Python中的sleep 方法来进行等待 等待一定的时间 让元素加载出来后再执行代码 nbsp nbsp nbsp 但是元素加载出来的时间是不固定的 有时长有时短 因此我们等待的时间就不固定了 nbs
  • Selenium:元素等待

    元素等待 1 前面介绍过 在使用Selenium做Web自动化过程中 可能会因为网络等原因导致页面元素没有加载出来就执行了代码 进而导致报错 nbsp nbsp nbsp 特别是在进行元素定位时 经常会遇到元素未加载出来就执行了定位代码 导
  • Selenium:操作Cookie

    什么是Cookie 1 Cookie用于辨别用户身份 访问服务器时保持登录状态等功能 用于服务器识别当前访问的是哪个用户 2 在网站中 http请求是无状态的 无状态是指协议对于事务处理没有记忆能力 每次请求都是完全独立 互不影响的 没有任
  • Selenium:操作JS

    JavaScript 1 JavaScript是Web的编程语言 所有现代的HTML页面都会使用JavaScript nbsp nbsp nbsp JavaScript是运行在客户端 浏览器 和服务器端的脚本语言 允许将静态网页转换为交互式
  • Selenium:下拉框操作

    下拉框 1 在Web网页中经常会遇到下拉框 下拉列表 比如说分页 每页显示的条数 语言的切换等功能 很多时候经常都是以下拉框的形式展现 2 下拉列表是网页中一种最节省页面空间的选择方式 默认状态下只显示一个选项 只有单击下拉按钮后才能看到全
  • Selenium:上传、下载文件

    Selenium 上传 下载文件 1 上传文件是比较常见的Web功能之一 比如 常见的上传头像功能 2 对于Web页面的上传功能实现一般有以下两种方式 nbsp nbsp nbsp 普通上传 普通的附件上传是将本地文件的路径作为作为一个值放
  • Python:类的__dict__属性

    Python中类的 dict 属性 1 Python中一切皆对象 nbsp nbsp nbsp 不管是内置的数据类型 内置函数 内置类 第三方类 还是自定义类都叫做对象 nbsp nbsp nbsp 一个对象就会有自己的方法或属性 只是说有
  • Python:处理XML文件汇总

    处理XML文件汇总 1 前面介绍了使用Python中的ElementTree库来解析 创建XML文件 nbsp nbsp nbsp 如果对这个库不了解的可以先去看看这个库 nbsp nbsp nbsp 地址 https mouse blog
  • Python:json数据与Python对象之间的转换

    json数据与Python对象之间的转换 1 前面介绍了在Python中如何处理json数据 主要使用了以下几个方法 nbsp nbsp nbsp dumps 将Python对象转换为JSON格式的字符串 nbsp nbsp nbsp du
  • 用结构体指针访问结构体中的结构体指针(结构体指针的嵌套)

    结构体中的结构体指针是使用 一 问题背景二 代码三 说明 一 问题背景 日常工作中没有编程的机会 xff0c 所以只看得懂代码 xff0c 现在需要重新写一段代码 xff0c 实现固定格式存储数据 xff0c 需要使用到结构体和结构体指针
  • MOOC —— Python语言基础与应用 by 北京大学 第五章 计算和控制流(一)

    第五章 计算和控制流 xff08 一 xff09 23 自动计算过程24 控制流程25 条件分支语句26 条件循环27 迭代循环28 上机练习 基本的计算程序测验题 23 自动计算过程 简单介绍了 冯 诺依曼结构计算机 xff0c 五大部件
  • 关于sort函数中的cmp参数的笔记(C++)

    C 43 43 中sort函数是经常会用到的一个函数 xff0c 主要的功能是排序 xff0c 可以给数组 xff0c 或者链表list 向量排序 sort first pointer first pointer 43 n cmp 在三个参
  • 16进制转10进制方法(初级)

    目标 xff1a 输入16进制字符串 xff0c 输出对应10进制数字 以下以一个题目给出方法 xff1b span class token comment span span class token comment coding in 2
  • 图像格式RGB与BGR互转

    在opencv中 xff0c 读取后图像的格式为BGR的 与其它的读取图像方式不同 xff0c 需要进行转换 基于python的切片特性 xff0c 可以快速进行转换 BGR to RGB opencv 转 常规img im 61 im 1
  • 深度学习框架Pytorch——学习笔记(九) 基础知识补充

    由于基础知识不牢固 xff0c 又学习了一下其他入门学习资料 pytorch中文手册 https github com zergtant pytorch handbook 入门基础补充 相比之前学过的东西 xff0c 一些常用的东西做了下补
  • 深度学习-CV基础知识笔记

    CNN卷积神经网络相关 分类 xff0c backbone LeNet 卷积神经网络的里程碑 由2个卷积层 2个池化层和2个全连接层组成 xff0c 卷积核大小是5 5 xff0c 池化层大小为2 2 xff0c 最后通过softmax输出