SLAM面试笔记(8) — 计算机视觉面试题
目录
问题1:目标检测的算法分类
问题2:卷积神经网络的组成
问题3:输入层的作用
问题4:卷积层作用
问题5:卷积核类型
问题6:1×1卷积核作用
问题7:卷积核是否越大越好
问题8:棋盘效应及解决办法
问题9:如何减少卷积层参数
问题10:神经网络可视化工具
问题11:池化层作用
问题12:卷积层和池化层的区别
问题13:激活函数层作用
问题14:全连接层作用
问题15:如何提高卷积神经网络的泛化能力
问题16:讲一下BN、LN、IN、GN这几种归一化方法
问题17:softmax公式,如果乘上一个系数a, 则概率分布怎么变?
问题18:如何解决正负样本不平衡问题
问题19:训练网络不收敛的原因
问题20:优化算法,Adam, Momentum, Adagard,SGD特点
问题21:小目标难检测原因
问题1:目标检测的算法分类
基于深度学习的目标检测算法主要分为两类
two-stage目标检测算法
- 主要思路:先进行区域(Region Proposal,RP)生成,再通过卷积神经网络进行样本分类。
- 任务路线:特征提取一生成目标候选区域一分类/定位回归。
one-stage 目标检测算法
- 主要思路:不用进行区域生成,直接在网络中提取特征来预测物体分类和位置
- 任务路线:特征提取一分类/定位回归。
问题2:卷积神经网络的组成
卷积神经网络的基本结构由以下几个部分组成:输入层(input layer),卷积层(convolution layer),池化层(pooling layer),激活函数层和全连接层(full-connection layer)。
问题3:输入层的作用
在处理图像的CNN中,输入层一般代表了一张图片的像素矩阵。可以用三维矩阵代表一张图片。三维矩阵的长和宽代表了图像的大小,而三维矩阵的深度代表了图像的色彩通道。比如黑白图片的深度为1,而在RGB色彩模式下,图像的深度为3。
问题4:卷积层作用
卷积神经网络的核心是卷积层,卷积层的核心部分是卷积操作。
对图像(不同的数据窗口数据)和滤波矩阵(一组固定的权重:因为每个神经元的多个权重固定,所以又可以看做一个恒定的滤波器filter)做内积(逐个元素相乘再求和)的操作就是所谓的卷积操作,也是卷积神经网络的名字来源。
在CNN中,滤波器filter对局部输入数据进行卷积计算。每计算完一个数据窗口内的局部数据后,数据窗口不断平移滑动,直到计算完所有数据。这个过程中,有这么几个参数:
- 深度depth:神经元个数,决定输出的depth厚度。同时代表滤波器个数。
- 步长stride:决定滑动多少步可以到边缘。
- 填充值zero-padding:在外围边缘补充若干圈0,方便从初始位置以步长为单位可以刚好滑到末尾位置,通俗地讲就是为了总长能被步长整除。
问题5:卷积核类型
转置(Transposed)卷积
有时我们需要对输入进行如增加尺寸(也称为“上采样”)等处理。先对原始特征矩阵进行填充,使其维度扩大到适配卷积目标输出维度,然后进行普通的卷积操作的一个过程。转置卷积常见于目标检测领域中对小目标的检测和图像分割领域中还原输入图像的尺度。
扩张/空洞(Dilated/Atrous)卷积
引入一个称作扩张率(Dilation Rate)的参数,使同样尺寸的卷积核可以获得更大的感受视野,相应地,在相同感受视野的前提下比普通卷积采用更少的参数。同样是 3x3 的卷积核尺寸,扩张卷积可以提取 5x5 范围的区域特征,在实时图像分割领域广泛应用。
可分离卷积
标准的卷积操作是同时对原始图像 HxWxC 三个方向的卷积运算,假设有3个相同尺寸的卷积核,这样的卷积操作需要用到的参数为 HxWxCxK个;若将长、宽与深度方向的卷积操作进行分离操作,变为先与 HXW方向卷积,再与C方向卷积的两步卷积操作,则同样有 K 个相同的尺寸的卷积核,只需要 (HxW+C) XK个参数,便可得到同样的输出尺度。可分离卷积 (SeperableConvolution)通常应用在模型压缩或一些轻量的卷积神经网络中,如MobileNet、Xception 等
问题6:1×1卷积核作用
对于1x1卷积核的作用主要可以归纳为以下几点
- 增加网络深度(增加非线性映射次数)
- 升维/降维
- 跨通道的信息交互
- 减少卷积核参数(简化模型)
问题7:卷积核是否越大越好
设置较大的卷积核可以获取更大的感受野。但是这种大卷积核反而会导致计算量大幅增加,不利于训练更深层的模型,相应的计算性能也会降低。后来的卷积经网络(VGG、GoogLeNet 等),发现通过堆叠2个3X3 卷积核可以获得与 5X5 卷积核同的感受视野,同时参数量会更少 (3X3X2+1<5X5X1+1),3X3 卷积核被广泛应用许多卷积神经网络中。
但是,这并不表示更大的卷积核就没有作用,在某些领域应用卷积神经网络时仍然可以采用较大的卷积核。在将卷积神经网络应用在自然语言处理领域时,神经网络通常都是由较为浅层的卷积层组成的,但是文本特征有时又需要有较广的感受野让模型能够组合更多的特征(如词组和字符),此时接采用较大的卷积核将是更好的选择。
综上所述,卷积核的大小并没有绝对的优劣,需要视具体的应用场景而定,但是极大和极小的卷积核都是不合适的,单独的 1X1极小卷积核只能用作分离卷积而不能对输入的原始特征进行有效的组合,极大的卷积核通常会组合过多的无意义特征,从而浪费大量的计算资源。
问题8:棋盘效应及解决办法
由以上现象得知,当过滤器尺寸无法被卷积步长整除时,转置卷积就会出现不均匀重叠,造成图像中某个部位的颜色比其他部位更深,因而会带来棋盘效应。
如何避免和减轻棋盘效应:
(1) 确认使用的过滤器的大小是能够被卷积步长整除的,从而来避免重叠问题
(2) 可以采用卷积步长为 1的转置卷积来减轻棋盘效应。
参考文章:卷积操作总结(三)—— 转置卷积棋盘效应产生原因及解决 - 知乎
问题9:如何减少卷积层参数
- 使用堆叠小卷积核代替大卷积核:VGG 网络中 2个 3X3 的卷积核可以代替 1个5X5 的卷积核。
- 使用分离卷积操作: 将原本 KXKXC 的卷积操作分离为 KXKX1和1X1XC的两部分操作。
- 添加 1X1的卷积操作:与分离卷积类似,但是通道数可变,在 KXKXC 卷积前添加1X1XC2的卷积核。
- 在卷积层前使用池化操作:池化可以降低卷积层的输入特征维度
问题10:神经网络可视化工具
神经网络的可视化工具有Netron、draw_convnet、NNSVG、PlotNeuralNet、Tensorboard、Caffe等。
参考文章:【深度学习 | 机器学习】干货满满 | 近万字总结了 12 个令人惊艳的神经网络可视化工具!_旅途中的宽~的博客-CSDN博客
问题11:池化层作用
池化层又称为降采样层(Downsampling Layer),作用是对感受野内的特征进行筛选提取区域内最具代表性的特征,能够有效地减小输出特征尺度,进而减少模型所需要的参数量。 主要有平均池化(Average Pooling)、最大池化(Max Pooling)等。简单来说池化就是在该区域上指定一个值来代表整个区域。池化层的超参数:池化窗口和池化步长。池化操作也可以看做是一种卷积操作。
问题12:卷积层和池化层的区别
卷积层和池化层在结构上具有一定的相似性,都是对感受野内的特征进行提取,并且根据步长设置获取到不同维度的输出,但是其内在操作是有本质区别
卷积层 池化层 结构 零填充时输出维度不变,而通道数改变 通常特征维度会降低,通道数不变 稳定性 输入特征发生细微改变时,输出结果会改变 感受野内的细微变化不影响输出结果 作用 感受野内提取局部关联特征 感受野内提取泛化特征,降低维度 参数量 与卷积核尺寸、卷积核个数相关 不引入额外参数
问题13:激活函数层作用
激活函数(非线性激活函数,如果激活函数使用线性函数的话,那么它的输出还是一个线性函数。)但使用非线性激活函数可以得到非线性的输出值。常见的激活函数有Sigmoid、tanh和Relu等。一般我们使用Relu作为卷积神经网络的激活函数。Relu激活函数提供了一种非常简单的非线性变换方法,函数图像如下所示:
问题14:全连接层作用
在经过多轮卷积层和池化层的处理之后,在CNN的最后一般会由1到2个全连接层来给出最后的分类结果。经过几轮卷积层和池化层的处理之后,可以认为图像中的信息已经被抽象成了信息含量更高的特征。我们可以将卷积层和池化层看成自动图像特征提取的过程。在提取完成之后,仍然需要使用全连接层来完成分类任务
问题15:如何提高卷积神经网络的泛化能力
- 使用更多的数据:竟可能标注更多的训练数据,这是提高泛化能力最理想的方法,更多的数据让模型得到更充分的学习,自然提高了泛化能力。
- 使用更大的batch_size:在相同迭代次数和学习率的条件下,每批次采用更多的数据将有助于模型更好的学习到正确的模式,模型输出结果也会更加稳定。
- 数据过采样:很多情况下我们拿到手的数据都存在类别不均匀的情况,模型这个时候过多的拟合某类数量多的数据导致其输出结果偏向于该类数据,此时如果我们过采样其他类别的数据,使得数据量比较均衡可以一定程度提高泛化能力。
- 数据增强:数据增强是指在数据有限的情况通过一些几何操作对图像进行变换,使得同类数据的表现形式更加丰富,以此提高模型的泛化能力。
- 修改损失函数:这方面有大量的工作,如目标检测中的Focal Loss, GHM Loss,IOU Loss等都是为了提升模型的泛化能力。
- 修改网络:如果网络过浅并且参数量过少往往会使得模型的泛化能力不足导致欠拟合,此时一般考虑使用简单的堆叠卷积层增加网络的参数,提高模型的特征提取能力。而如果网络过深且训练数据量比较少,那么就容易导致模型过拟合,此时一般需要简化网络结构减少网络层数或者使用resnet的残差结构以及BN层。
- 权重惩罚:权重惩罚也即是正则化操作,一般是在损失函数中添加一项权重矩阵的正则项作为惩罚项,用来惩罚损失值较小时网络权重过大的情况,此时往往是网络权值过拟合了数据样本。
- Dropout策略:如果网络最后有全连接层可以使用Dropout策略,相当于对深度学习模型做了Ensemble,有助于提高模型的泛化能力。
问题16:讲一下BN、LN、IN、GN这几种归一化方法
BN
- BatchNormalization,假设特征在不同输入以及H、W层级上是均匀分布的,所以在NHW上统计每个channel的均值和方差,参数量为2C;
- 缺点是容易受到batch内数据分布影响,如果batch_size小的话,计算的均值和方差不具有代表性。而且不适用于序列模型中,因为序列模型中通常各个样本的长度都是不同的。此外当训练数据和测试数据分布有差别时也并不适用。
LN
- Layer Normalization,LN是独立于batch size的算法,样本数多少不会影响参与LN计算的数据量,从而解决BN的两个问题;
- 缺点是在BN和LN都能使用的场景中,BN的效果一般优于LN,原因是基于不同数据,同一特征得到的归一化特征更不容易损失信息。
IN
- Instance Normalization,IN的计算就是把每个HW单独拿出来归一化处理,不受通道和batch_size 的影响,常用在风格化迁移,因为它统计了每个样本的每个像素点的信息;
- 缺点是如果特征图可以用到通道之间的相关性,那么就不建议使用它做归一化处理。
GN
- Group Normalization,其首先将channel分为许多组(group),对每一组做归一化,及先将feature的维度由[N, C, H, W]reshape为[N, G,C//G , H, W],归一化的维度为[C//G , H, W];
- GN的归一化方式避开了batch size对模型的影响,特征的group归一化同样可以解决 I n t e r n a l InternalInternal C o v a r i a t e CovariateCovariate S h i f t ShiftShift 的问题,并取得较好的效果。
问题17:softmax公式,如果乘上一个系数a, 则概率分布怎么变?
当a>1时变陡峭,当a<1是变平滑
问题18:如何解决正负样本不平衡问题
- 过采样:对训练集里面样本数量较少的类别(少数类)进行过采样,合成新的样本来缓解类不平衡。
- 欠采样:对训练集里面样本数量较多的类别(多数类)进行欠采样,抛弃一些样本来缓解类不平衡。
- 合成新的少数类
问题19:训练网络不收敛的原因
数据处理原因
- 没有做数据归一化;
- 没有做数据预处理;
- 没有使用正则化;
参数设置原因
- Batch Size设的太大;
- 学习率设的不合适;
网络设置原因
- 网络存在坏梯度,比如当Relu对负值的梯度为0,反向传播时,梯度为0表示不传播;
- 参数初始化错误;
- 网络设定不合理,网络太浅或者太深;
问题20:优化算法,Adam, Momentum, Adagard,SGD特点
- Adagard在训练的过程中可以自动变更学习的速率,设置一个全局的学习率,而实际的学习率与梯度历史平方值总和的平方根成反比。用adagrad将之前梯度的平方求和再开根号作为分母,会使得一开始学习率呈放大趋势,随着训练的进行学习率会逐渐减小。
- Momentum参考了物理中动量的概念,前几次的梯度也会参与到当前的计算中,但是前几轮的梯度叠加在当前计算中会有一定的衰减。用来解决梯度下降不稳定,容易陷入鞍点的缺点。
- SGD为随机梯度下降,每一次迭代计算数据集的mini-batch的梯度,然后对参数进行跟新。优点是更新速度快,缺点是训练不稳定,准确度下降。
- Adam利用梯度的一阶矩估计和二阶矩估计动态调整每个参数的学习率,在经过偏置的校正后,每一次迭代后的学习率都有个确定的范围,使得参数较为平稳,结合momentum和adagrad两种算法的优势。
问题21:小目标难检测原因
小目标在原图中尺寸比较小,通用目标检测模型中,一般的基础骨干神经网络(VGG系列和Resnet系列)都有几次下采样处理,导致小目标在特征图的尺寸基本上只有个位数的像素大小,导致设计的目标检测分类器对小目标的分类效果差。
小目标在原图中的数量较少,检测器提取的特征较少,导致小目标的检测效果差。神经网络在学习中被大目标主导,小目标在整个学习过程被忽视,导致导致小目标的检测效果差。
Tricks
(1) data-augmentation.简单粗暴,比如将图像放大,利用 image pyramid多尺度检测,最后将检测结果融合.缺点是操作复杂,计算量大,实际情况中不实用;
(2) 特征融合方法:FPN这些,多尺度feature map预测,feature stride可以从更小的开始;
(3)合适的训练方法:CVPR2018的SNIP以及SNIPER;
(4)设置更小更稠密的anchor,回归的好不如预设的好, 设计anchor match strategy等,参考S3FD;
(5)利用GAN将小物体放大再检测,CVPR2018有这样的论文;
(6)利用context信息,建立object和context的联系,比如relation network;
(7)有密集遮挡,如何把location 和Classification 做的更好,参考IoU loss, repulsion loss等.
(8)卷积神经网络设计时尽量采用步长为1,尽可能保留多的目标特征。
(9)matching strategy。对于小物体不设置过于严格的 IoU threshold,或者借鉴 Cascade R-CNN 的思路。
相关文章:
SLAM面试笔记(8) — 计算机视觉面试题
目录 问题1:目标检测的算法分类 问题2:卷积神经网络的组成 问题3:输入层的作用 问题4:卷积层作用 问题5:卷积核类型 问题6:11卷积核作用 问题7:卷积核是否越大越好 问题8:棋…...
聊聊MySQL面试常问名词回表、索引覆盖,最左匹配
文章目录 1. 前言2. 回表操作 Index Lookup2.1 什么是回表2.2 回表的成本2.3 如何避免回表 3. 索引覆盖 Covering Index3.1 什么是索引覆盖3.2 索引覆盖的优点3.3 如何使用索引覆盖 4. 最左匹配原则(Leftmost Prefix Match)4.1 什么是最左匹配原则4.2 最…...
【面试】C/C++面试八股
C/C面试八股 编译过程的四个阶段C和C语言的区别简单介绍一下三大特性多态的实现原理虚函数的构成原理虚函数的调用原理虚表指针在什么地方进行初始化的?构造函数为什么不能是虚函数为什么建议将析构函数设为虚函数虚函数和纯虚函数的区别抽象类类对象的对象模型内存…...
学习记忆——数学篇——算术——无理数
谐音记忆法 2 \sqrt{2} 2 ≈1.41421:意思意思而已;意思意思; 3 \sqrt{3} 3 ≈1.7320:—起生鹅蛋;一起生儿; 5 \sqrt{5} 5 ≈2.2360679:两鹅生六蛋(送)六妻舅;儿儿生…...
python协程和任务
协程概念引入 协程是我要重点去讲解的一个知识点. 它能够更加高效的利用CPU. 其实, 我们能够高效的利用多线程来完成爬虫其实已经很6了. 但是, 从某种角度讲, 线程的执行效率真的就无敌了么? 我们真的充分的利用CPU资源了么? 非也~ 比如, 我们来看下面这个例子. 我们…...
visual studio code配置anaconda3的python虚拟环境
参考: Visual Studio Code配置anconda3虚拟环境 - 知乎...
【Unity3D编辑器开发】Unity3D编辑器开发基础性框架结构【全面总结】
推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 一、前言 嗨,大家好,我是恬静的小魔龙。 同学们…...
一座“城池”:泡泡玛特主题乐园背后,IP梦想照亮现实
“更适合中国宝宝体质”的主题乐园,被泡泡玛特造出来了。 9月26日,位于北京朝阳公园内的国内首个潮玩行业沉浸式 IP 主题乐园,也是泡泡玛特首个线下乐园——泡泡玛特城市乐园 POP LAND正式开园。 约4万平方米的空间中,泡泡玛特使…...
【什么是闭包? 闭包产生的原因? 闭包有哪些表现形式?】
JS闭包 什么是闭包?闭包产生的原因?闭包有哪些表现形式? 什么是闭包? 闭包是指一个函数可以访问并操作在其作用域之外的变量的能力。在 JavaScript 中,每当函数被创建时,就会创建一个闭包。 以下是一个简单的闭包示例…...
JackJson和FastJson
前言: fastjson是一款强大的json格式转换工具,我个人在开发中就非常喜欢用fastjson;但是由于某些原因,导致fastjson会有一些漏洞,因此在漏洞扫描后需要修复都是要求我们升级版本,或者替换为jackjson&#…...
SpringCloud学习一
单体应用存在的问题 随着业务的发展,开发变得越来越复杂。 修改、新增某个功能,需要对整个系统进行测试、重新部署。 一个模块出现问题,很可能导致整个系统崩溃。 多个开发团队同时对数据进行管理,容易产生安全漏洞。 各个模块…...
SpringBoot, EventListener事件监听的使用
1、背景 在开发工作中,会遇到一种场景,做完某一件事情以后,需要广播一些消息或者通知,告诉其他的模块进行一些事件处理,一般来说,可以一个一个发送请求去通知,但是有一种更好的方式,…...
课题学习(三)----倾角和方位角的动态测量方法(基于陀螺仪的测量系统)
一、内容介绍 该测量系统基于三轴加速度和三轴陀螺仪,安装在钻柱内部,随钻柱一起旋转,形成捷联惯性导航系统,安装如下图所示: 假设三轴加速度和陀螺仪的输出为: f b [ f x f y f z ] T f^b\begin{bmatrix}f_{x} …...
1876. 长度为三且各字符不同的子字符串
1876. 长度为三且各字符不同的子字符串 C代码:滑动窗口 // 存在三种字符,且不重复、子串数量 int countGoodSubstrings(char * s){int k 3;int hash[26] {0};int len 0;int l 0;int ans 0;for (int i 0; i < strlen(s); i) {hash[s[i] - a];if…...
Mall脚手架总结(一)——SpringSecurity实现鉴权认证
前言 在结束理论知识的学习后,荔枝开始项目学习,这个系列文章将围绕荔枝学习mall项目过程中总结的知识点来梳理。本篇文章主要涉及如何整合Spring Security和JWT实现鉴权认证的功能!希望能帮助到一起学习mall项目的小伙伴~~~ 文章目录 前言 …...
beego-简单项目写法--路径已经放进去了
Beego案例-新闻发布系统 1.注册 后台代码和昨天案例代码一致。,所以这里面只写一个注册的业务流程图。 **业务流程图 ** 2.登陆 业务流程图 登陆和注册业务和我们昨天登陆和注册基本一样,所以就不再重复写这个代码 但是我们遇到的问题是如何做代码的迁移&…...
Linux-CPU相关常用命令合集
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、cpu相关常用命令 二、cpuinfo 参数详细对照表 前言 本篇文章主要记录平时Linux-常用命令整理! 提示:以下是本篇文章正文内容&#…...
vue 百度地图/天地图设置铺满屏幕100%,解决空隙问题
设置100%无效,刷新依然右侧有空隙,解决:min-width: 100vw; <div class"aui-flex-col" style"width: 100%; height:100%"><div id"mapAllCon" style"width: 100%; min-width: 100vw; height: 10…...
第五章:最新版零基础学习 PYTHON 教程—Python 字符串操作指南(第六节 - Python 中字符串的逻辑运算符)
对于 python 中的字符串,布尔运算符(and、or、not)起作用。让我们考虑两个字符串,即 str1 和 str2,并在它们上尝试布尔运算符: Python3 str1 = str2 = geeks# 使用 repr 打印带引号的字符串# 返回 str1 print(repr(str1 and str2)) # 返回 str1 print(repr(str2 and…...
地震勘探——干扰波识别、井中地震时距曲线特点
目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...
Spring Boot 实现流式响应(兼容 2.7.x)
在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...
【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)
宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...
令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...
C++八股 —— 单例模式
文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全(Thread Safety) 线程安全是指在多线程环境下,某个函数、类或代码片段能够被多个线程同时调用时,仍能保证数据的一致性和逻辑的正确性…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
初学 pytest 记录
安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...
关键领域软件测试的突围之路:如何破解安全与效率的平衡难题
在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...
DingDing机器人群消息推送
文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人,点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置,详见说明文档 成功后,记录Webhook 2 API文档说明 点击设置说明 查看自…...











