当前位置: 首页 > news >正文

基于深度学习的铁路异物侵限检测算法研究_整体认知感觉欠点意思,但是有一个新的变形卷积-Octave 卷积

  • 相比于其他的交通运输方式,铁路运输具有准时性高、连续性强、速度快、运输量大、运输成本低以及安全可靠等优点。同时由于国家高速铁路网络建设的不断推进,铁路运输逐渐成为我国客运与货运的主要运输方式。虽然铁路运输为人们出行和货物运输带来的极大的便利,但铁路网规模的扩大和列车速度的提升同时对列车运行安全带来了更大的挑战,列车运行过程中可能出现的安全隐患亟待解决。其中的铁路异物侵限问题可能会极大的影响列车的安全运行。

  • 铁路异物侵入安全限界会对人民的生命财产和国家的经济利益造成极大的威胁,解决异物侵限问题迫在眉睫。传统的防止异物入侵检测的手段主要是人工线路定期巡检,但是使用人工巡检的检测方式需要消耗大量的人力并且实时性能较低,难以实现24 小时全天候的检测。异物在何时何地侵入限界内通常具有很大的不确定性,当有异物不在巡检时间内进入限界就可能会导致异物无法被检测出,从而影响铁路列车的正常运行。

  • 为了克服传统检测方式存在的不足,近年来,许多传统的机器视觉方法被引入铁路异物检测领域,传统的机器视觉方法主要依靠人工设计的特征提取算子提取出的图像纹理、颜色或形状等特征完成相应的图像处理任务。但是由于该方法依赖根据经验设计出的特征提取算子,存在一定的主观性,可能无法提取出图片中的潜在特征。

  • 当图片中出现遮挡或者光照异常等情况时,将提取出错误的特征信息。而铁路列车的运行环境复杂,因此使用传统的机器视觉方法可能会造成漏检和误检等情况出现,检测的可靠性并不高。这就需要寻找一种更加精确有效的检测算法来实现异物侵限检测。

  • 国内外对于如何检测侵限异物保障列车安全运行进行了许多研究,其中主要可以将异物检测方法分为两个大类:第一类是接触式的检测手段,主要包括电网检测、光纤光栅检测、防护网检测等手段;第二类是非接触式检测,主要有红外检测,超声检测和计算机视觉的检测方法。

  • 相较与国外,国内的铁路建设起点较晚,因此对于铁路异物侵限检测的研究也相对更晚,但后期发展迅速。考虑到使用接触式的异物检测具有的安装费用和维护费用高的缺点,我国也有学者考虑将智能识别的方法运用到铁路异物检测领域,李丹丹提出了改进的 canny 算子和双背景差分法结合的铁路异物侵限方法。此方法先用改进的 canny 算子检测出图像中存在的物体边缘,作者在传统的 canny 算法中加入了迭代式的阈值分割方法用来寻找最高阈值和最低阈值。该方法能够极大的抑制伪边缘,并提取出图像的真实边缘,之后利用直线边缘提取算法提取出铁路轨道的直线边缘,根据直线边缘就可以确定异物检测的范围。考虑到使用单独的某个图像差分算法检测出的结果容易受到噪声干扰,因此作者将背景差分法和帧间差分法进行结合,此方法能够在异物检测范围内检测出的异物轮廓,并且受到外界环境的干扰较小。随着深度学习技术的兴起,国内出现不少学者将深度学习的方法加入到异物智能识别中。姜峰运用生成对抗网络的特点,利用生成网络生成与输入图像相同的图像,如果当图像中存在异物时生成网络产生的图像与原始图像会产生一定的差异,通过判断差异值的大小就可以判断出检测区域内是否存在侵限物体。此方法可以避免训练深度学习模型需要的训练集数量不足的问题,但是当检测环境发生变化时生成网络产生的图片可能会与原图产生差异从而造成误检现象出现,并且这种方式没有办法对异物具体的侵限位置和异物的类别进行判断。陶慧青将 Faster-RCNN 目标检测算法用在异物检测中,并且使用全局平均池化替代了原算法中的全连接层。此方法不仅能够有效的检测出异物的位置还能预测出异物所属的类别。考虑到 Faster-RCNN 算法实时性不够的问题,于晓英等学者采用 YOLOv1算法进行异物检测,检测的准确度虽然没有 Faster-RCNN 算法高,但是检测实时性很高。基于深度学习的铁路异物侵限检测算法研究

  • 许多学者将目光投向了智能检测方向,使用传统的机器视觉或图像差分的方法来进行异物检测。但铁路运营环境复杂多变,依靠根据经验设计的特征提取算子无法适应复杂的检测环境,并不具备良好的泛化能力,容易造成漏检和误检的情况。

  • 帧间差分法是当检测环境内有运动目标时候使用的检测方法,其利用的原理是当有移动物体存在于视频中时候,视频中不同帧的图像的像素之间存在一定的差异。因此使用相邻帧之间的图像进行差分运算,就能够得到图像之间的像素的差值,当此差值达到设定的阈值时,就能够确定是否有运动的物体存在于检测场景中

  • 背景差分法是将图像分成前景和背景,前景即需要检测的物体,背景即除了检测物体之外的其他区域,将包含前景与背景的图像与只包含背景的图像进行差分计算,当差分结果大于给定的阈值时,即判断当前的检测场景中存在物体

  • 传统的机器视觉方法主要先将检测图片划分多个检测窗口,之后对每一个检测窗口采用特征描述子提取检测窗口内的特征,之后基于提取出的特征采用分类器判断前景和背景区域。在对图像进行特征提取之前,需要将图片划分成多个检测窗口,每个检测窗口内都包含一定面积的像素区域,在检测前需要预先设定检测区域的大小和检测窗口移动的步长,每个检测窗口可能包含有待检测物体的局部特征。这种按检测窗口逐个对图片特征进行提取的方法速度缓慢并且操作繁琐因此并不适用于实时性高的场合

  • 根据特征的抽象程度和所包含的语义信息的大小可以分为三类:浅层特征、中层特征和深层特征。浅层特征表示使用简单的特征提取方式就能从图像当中提取出的特征,抽象程度较低,包含的信息含义也能够直观理解,比如颜色、纹理、形状等特征;中层特征指的是在浅层特征的基础上通过多种特征融合的方法得到的综合特征,比如将图像的纹理特征和颜色特征进行融合的特征提取方式 LOMO;深层特征指的是利用深度神经网络对图像数据进行挖掘后得到的特征,这类特征受外界环境影响较小,能够适应各种应用场景,缺点是抽象程度较高,无法知道特征具体表示的含义。

  • 传统的机器视觉方法对特征的提取采用的是手工设计的特征描述子,提取的是主要是图像的浅层特征和中层特征,现有图像特征研究使用的特征描述子主要有提取图像颜色特征的颜色直方图、颜色矩和颜色集;提取图像纹理特征的 LBP 和灰度共生矩阵;提取图像边缘特征的 Canny 算子和 Sobel 算子。这类特征描述子基于图像本身固有的特征,不需要依靠大量数据进行学习和训练,但易受到诸如光照、图像拍摄角度等外界环境影响,而且特征提取过程复杂,提取时间较长。对于复杂的铁路场景,当异常环境情况出现时,可能会对检测结果造成很大的影响。

  • 传统的机器视觉方法最常用的分类器主要是 SVM 分类器,使用HOG 算子提取图像的梯度方向特征,最后使用 SVM 对得到的梯度信息进行分类,区分行人和背景的梯度方向,但对大规模样本进行分类的时候,需要储存和计算大型矩阵,这将会消耗大量的计算资源和计算时间,并且在预测时需要单独训练 SVM 分类器,使网络的训练过程变得更加复杂。

  • 深度学习方法与传统计算机视觉方法最大的不同就在于摒弃了手工设计的特征提取器,转而使用足够深的特征卷积神经网络来提取图像中的抽象特征,虽然无法描述出提取出的特征的具体含义,但此类特征相比手工特征描述子提取出的特征具有更加丰富的语义信息,能够表征待检测的物体。

  • 一个函数能够作为神经网络的激活函数应当具有以下五个性质:

    • 非线性,线性函数对增加神经网络的表达能力并无作用,还会因此增加网络的计算量,因此,选用的激活函数必须满足非线性。

    • 连续可微。神经网络通常运用梯度下降法来求解代价函数的最小值,运用反向反向传播算法来计算神经网络每一处参数的梯度,所以必须保证在激活函数的可微性。

    • 激活函数必须含有非饱和区段,函数的饱和区段是指对函数求导为零的区段,在饱和区段时,使用反向传播算法的到的梯度大小为零,神经网络将无法进行梯度下降

    • 单调性,当激活函数满足单调性时,激活函数的导数正负性不会发生改变,这会使得梯度的方向不发生改变,有利于梯度下降法的进行(感觉不太对🙅‍,swish, softmax)。

    • 在原点处近为线性,神经网络在训练前需要对网络的每一处参数进行初始化,当初始化参数接近于零时,在原点处近似为线性的激活函数有助于加快神经网络的学习(有些激活函数都不过原点)。

    • 激活函数的导函数值域要在一个合适的区间内,不能太大也不能太小,否则会影响训练的效率和稳定性。

  • 知道神经网络模拟了人类神经元的工作机理,激活函数(Activation Function)是一种添加到人工神经网络中的函数,旨在帮助网络学习数据中的复杂模式。在神经元中,输入的input经过一系列加权求和后作用于另一个函数,这个函数就是这里的激活函数。类似于人类大脑中基于神经元的模型,激活函数最终决定了是否传递信号以及要发射给下一个神经元的内容。在人工神经网络中,一个节点的激活函数定义了该节点在给定的输入或输入集合下的输出。标准的计算机芯片电路可以看作是根据输入得到开(1)或关(0)输出的数字电路激活函数。

  • 因为神经网络中每一层的输入输出都是一个线性求和的过程,下一层的输出只是承接了上一层输入函数的线性变换,所以如果没有激活函数,那么无论你构造的神经网络多么复杂,有多少层,最后的输出都是输入的线性组合,纯粹的线性组合并不能够解决更为复杂的问题。而引入激活函数之后,我们会发现常见的激活函数都是非线性的,因此也会给神经元引入非线性元素,使得神经网络可以逼近其他的任何非线性函数,这样可以使得神经网络应用到更多非线性模型中。

  • 目标检测网络模型一般由三个模块组成,第一个部分是由上一节所述特征提取网络构成的主干网(backbone),第二个部分是用于将主干网络提取出的特征进行处理并输入给检测模块的连接模块(neck),第三个部分是用于定义损失函数以及将连接模块的输出特征处理成物体预测信息的检测模块。现有的目标检测模型,可以根据是否使用区域建议网络(RPN)分为“一阶段”和“二阶段”目标检测模型,两种检测模型的总体框架如图 2-15 所示,其中“二阶段”网络主要包括 RCNN 系列网络,“一阶段”网络主要包括 YOLO 系列网络。

  • 在图像处理领域,对于一张采集到的图片,通常由不同的频率分量组成,其中高频部分能够保留比较完整的图片细节信息,而低频部分通常保留着图像中的全局结构。由于图片中的低频部分保存的是图片中的全局结构,所以存在着大量的冗余信息,通过压缩低频部分的图像信息可以达到在保留图像大致结构的基础上,减少信息冗余。相似的,对于卷积层输出的特征图也能够看成是不同频率分量的组合,对于输出特征图的低频部分,每一个位置都独立的储存着自己的特征描述子,而忽略了那些可以共同储存和处理的相邻区域的特征描述子,这就造成了在进行卷积运算时不必要的计算量的产生,因此可以将经过卷积层处理后的特征图分解成不同频率的两个部分,通过对其中低频部分的进行压缩处理,使得特征图中相邻位置的相似特征信息可以同时被储存和处理,这样就可以节省卷积的计算量,节约设备中的计算资源

  • 在卷积神经网络中,传统的卷积方式是使用一定大小的卷积核上的每一个元素乘以原图片或特征图上相应位置的特征值,最后相加,将得到的数值作为经过卷积操作的到的特征图上对应位置的特征值,具体计算公式如式

    • Y i , j = ∑ i , j ∈ N k W i + k − 1 2 , j + k − 1 2 T X p + i , q + j Y_{i,j}=\sum_{i,j\in N_k}W^T_{i+\frac{k-1}{2},j+\frac{k-1}{2}}X_{p+i,q+j} Yi,j=i,jNkWi+2k1,j+2k1TXp+i,q+j
  • 本文对低频部分的特征在空间分辨率上进行了压缩处理,因此在使用上式的卷积方式对不同的频率特征进行处理时,需要先将低频部分的特征图上采样到和高频特征图的大小一致后再沿着通道方向进行拼接,然后将拼接好的特征图输入到卷积神经网络中进行特征提取,这将会给网络带来额外的计算量和存储量,相当于抵消了低频特图压缩给网络带来的计算复杂性的降低,而 Octave 卷积可以解决这个问题。Octave卷积的目的是有效的处理高低频率的特征张量,并且可以完成不同频率特征之间信息的交互,首先将 X 和 Y 作为待分解的输入特征和经过卷积层处理后的输出特征,那么经过分解后,输出特征 Y = { Y H + Y L } Y=\{Y^H+Y^L\} Y={YH+YL},其中 Y H = Y H → H + Y L → H , Y L = Y L → L + Y H → L Y^H=Y^{H→H}+Y^{L→H},Y^L=Y^{L→L}+Y^{H→L} YH=YHH+YLH,YL=YLL+YHL,式中的 Y H → H Y^{H→H} YHH Y L → L Y^{L→L} YLL表示同频率特征图之间的更新, Y L → H Y^{L→H} YLH Y H → L Y^{H→L} YHL 表示不同频率特征图之间的信息交流。为了能够分别计算不同频率的特征,Octave 卷积将卷积核 W 分为两个部分即 W H = { W H → H , W L → H } W^H=\{W^{H→H},W^{L→H}\} WH={WHH,WLH},其中的 W H W^H WH W L W^L WL 同样可以被分解为频率内和频率间两个分即 W H = { W H → H , W L → H } W^H=\{W^{H→H},W^{L→H}\} WH={WHH,WLH} W H = { W L → L , W H → L } W^H=\{W^{L→L},W^{H→L}\} WH={WLL,WHL},Octave 卷积的计算方式和 k* k 卷积核形状如图示。

    • 在这里插入图片描述
  • 下表 为 Octave 卷积的不同计算通道的计算复杂度,其中假设输入特征图的通道数等于输出特征图的通道数等于 c,即 c = c i n = c o u t c=c_{in}=c_{out} c=cin=cout ,输入特征图低频特征通道数占总通道数的比率等于输出特征图低频特征通道数占总通道数的比率等于,即 α = α i n = α o u t \alpha=\alpha_{in}=\alpha_{out} α=αin=αout

    • 在这里插入图片描述

    • 可知新型卷积的计算复杂度为 ( 1 − 0.75 α ( 2 − α ) ) ∗ h ∗ w ∗ k 2 ∗ c 2 (1-0.75\alpha(2-\alpha))*h*w*k^2*c^2 (10.75α(2α))hwk2c2 ,传统卷积得到的计算复杂度为 h ∗ w ∗ k 2 ∗ c 2 h*w*k^2*c^2 hwk2c2 。当  取 0.5 的时,新型卷积的计算复杂度只有传统卷积的 0.44 倍。

  • Octave卷积的主题思想来自于图片的分频思想,首先认为图像可进行分频:

    • 低频部分:图像低频部分保存图像的大体信息,信息数据量较少

    • 高频部分:图像高频部分保留图像的细节信息,信息数据量较大

    • class OctaveConv(pt.nn.Module):def __init__(self,Lin_channel,Hin_channel,Lout_channel,Hout_channel,kernel,stride,padding):super(OctaveConv, self).__init__()if Lout_channel != 0 and Lin_channel != 0:self.convL2L = pt.nn.Conv2d(Lin_channel,Lout_channel, kernel,stride,padding)self.convH2L = pt.nn.Conv2d(Hin_channel,Lout_channel, kernel,stride,padding)self.convL2H = pt.nn.Conv2d(Lin_channel,Hout_channel, kernel,stride,padding)self.convH2H = pt.nn.Conv2d(Hin_channel,Hout_channel, kernel,stride,padding)elif Lout_channel == 0 and Lin_channel != 0:self.convL2L = Noneself.convH2L = Noneself.convL2H = pt.nn.Conv2d(Lin_channel,Hout_channel, kernel,stride,padding)self.convH2H = pt.nn.Conv2d(Hin_channel,Hout_channel, kernel,stride,padding)elif Lout_channel != 0 and Lin_channel == 0:self.convL2L = Noneself.convH2L = pt.nn.Conv2d(Hin_channel,Lout_channel, kernel,stride,padding)self.convL2H = Noneself.convH2H = pt.nn.Conv2d(Hin_channel,Hout_channel, kernel,stride,padding)else:self.convL2L = Noneself.convH2L = Noneself.convL2H = Noneself.convH2H = pt.nn.Conv2d(Hin_channel,Hout_channel, kernel,stride,padding)self.upsample = pt.nn.Upsample(scale_factor=2)self.pool = pt.nn.AvgPool2d(2)def forward(self,Lx,Hx):if self.convL2L is not None:L2Ly = self.convL2L(Lx)else:L2Ly = 0if self.convL2H is not None:L2Hy = self.upsample(self.convL2H(Lx))else:L2Hy = 0if self.convH2L is not None:H2Ly = self.convH2L(self.pool(Hx))else:H2Ly = 0if self.convH2H is not None:H2Hy = self.convH2H(Hx)else:H2Hy = 0return L2Ly+H2Ly,L2Hy+H2Hy
      
  • OctConv 是一种即插即用的卷积单元,可以直接替代传统的卷积,而无需对网络架构进行任何调整。在自然的图像中,信息以不同的频率传递,其中较高的频率通常以精细的细节编码,较低的频率通常以全局结构编码。

  • 在这项工作中,作者提出将混合特征映射根据其频率进行分解,并设计了一种全新的卷积运算:Octave Convolution (OctConv),用以存储和处理在较低空间分辨率下空间变化 “较慢” 的特征图,从而降低了内存和计算成本。

  • 通过简单地用 OctConv 替代卷积,我们可以持续提高图像和视频识别任务的精度,同时降低内存和计算成本

  • 卷积神经网络 (CNNs) 在许多计算机视觉任务中都取得了显著的成功,并且随着最近的研究在降低密集模型参数和特征图通道维数的固有冗余,它们的效率不断提高。然而,CNN 生成的特征图在空间维度上也存在大量冗余,其中每个位置独立存储自己的特征描述符,忽略了可以一起存储和处理的相邻位置之间的公共信息。

相关文章:

基于深度学习的铁路异物侵限检测算法研究_整体认知感觉欠点意思,但是有一个新的变形卷积-Octave 卷积

相比于其他的交通运输方式,铁路运输具有准时性高、连续性强、速度快、运输量大、运输成本低以及安全可靠等优点。同时由于国家高速铁路网络建设的不断推进,铁路运输逐渐成为我国客运与货运的主要运输方式。虽然铁路运输为人们出行和货物运输带来的极大的…...

Spring项目使用Redis限制用户登录失败的次数以及暂时锁定用户登录权限

文章目录 背景环境代码实现0. 项目结构图(供参考)1. 数据库中的表(供参考)2. 依赖(pom.xml)3. 配置文件(application.yml)4. 配置文件(application-dev.yml)5…...

2023.8 - java - 变量类型

在Java语言中,所有的变量在使用前必须声明。声明变量的基本格式如下: type identifier [ value][, identifier [ value] ...] ; 格式说明: type -- 数据类型。identifier -- 是变量名,可以使用逗号 , 隔开来声明多个同类型变量…...

【Kubernetes】Kubernetes的Pod控制器

Pod控制器 一、Pod 控制器的概念1. Pod 控制器及其功用2. Pod 控制器有多种类型2.1 ReplicaSet2.2 Deployment2.3 DaemonSet2.4 StatefulSet2.5 Job2.6 Cronjob 3. Pod 与控制器之间的关系 二、Pod 控制器的使用1. Deployment2. SatefulSet2.1 为什么要有headless?2…...

Ubuntu20.04安装Nvidia显卡驱动教程

1、禁用nouveau 1、创建文件,如果没有下载vim编辑器,将vim换成gedit即可 $ sudo vim /etc/modprobe.d/blacklist-nouveau.conf 2、在文件中插入以下内容,将nouveau加入黑名单,默认不开启 blacklist nouveau options nouveau m…...

视频汇聚/视频云存储/视频监控管理平台EasyCVR添加萤石云设备详细操作来啦!

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…...

AI 绘画Stable Diffusion 研究(十二)SD数字人制作工具SadTlaker插件安装教程

免责声明: 本案例所用安装包免费提供,无任何盈利目的。 大家好,我是风雨无阻。 想必大家经常看到,无论是在产品营销还是品牌推广时,很多人经常以数字人的方式来为自己创造财富。而市面上的数字人收费都比较昂贵,少则几…...

数据结构——链表详解

链表 文章目录 链表前言认识链表单链表结构图带头单循环链表结构图双向循环链表结构图带头双向循环链表结构图 链表特点 链表实现(带头双向循环链表实现)链表结构体(1) 新建头节点(2) 建立新节点(3)尾部插入节点(4)删除节点(5)头部插入节点(6) 头删节点(7) 寻找节点(8) pos位置…...

(学习笔记-进程管理)什么是悲观锁、乐观锁?

互斥锁与自旋锁 最底层的两种就是 [互斥锁和自旋锁],有很多高级的锁都是基于它们实现的。可以认为它们是各种锁的地基,所以我们必须清楚它们之间的区别和应用。 加锁的目的就是保证共享资源在任意时间内,只有一个线程访问,这样就…...

actuator/prometheus使用pushgateway上传jvm监控数据

场景 准备 prometheus已经部署pushgateway服务&#xff0c;访问{pushgateway.server:9091}可以看到面板 实现 基于springboot引入支持组件&#xff0c;版本可以 <!--监控检查--><dependency><groupId>org.springframework.boot</groupId><artifa…...

Linux设置临时目录路径的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…...

19-普通组件的注册使用

普通组件的注册使用-局部注册 一. 组件注册的两种方式:1.局部注册:只能在注册的组件内使用 (1) 创建 vue 文件(单文件组件) (2) 在使用的组件内导入,并注册 components:{ 组件名: 组件对象 } // 导入需要注册的组件 import 组件对象 from.vue文件路径 import HmHeader from ./…...

Java基础篇:抽象类与接口

1、抽象类和接口的定义&#xff1a; &#xff08;1&#xff09;抽象类主要用来抽取子类的通用特性&#xff0c;作为子类的模板&#xff0c;它不能被实例化&#xff0c;只能被用作为子类的超类。 &#xff08;2&#xff09;接口是抽象方法的集合&#xff0c;声明了一系列的方法…...

面对对象编程范式

本文是阅读《设计模式之美》的总结和心得&#xff0c;跳过了书中对面试和工作用处不大或不多的知识点&#xff0c;总结总共分为三章&#xff0c;分别是面对对象编程范式、设计原则和设计模式 现如今&#xff0c;编程范式存在三种&#xff0c;它们分别是面向对象编程、面向过程编…...

“深度学习”学习日记:Tensorflow实现VGG每一个卷积层的可视化

2023.8.19 深度学习的卷积对于初学者是非常抽象&#xff0c;当时在入门学习的时候直接劝退一大班人&#xff0c;还好我坚持了下来。可视化时用到的图片&#xff08;我们学校的一角&#xff01;&#xff01;&#xff01;&#xff09;以下展示了一个卷积和一次Relu的变化 作者使…...

146. LRU 缓存

题目描述 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类&#xff1a; LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中&#xff0c;则返回关键字的值&#xff0c;否…...

Unity框架学习--场景切换管理器

活动场景 用脚本实例化的游戏对象都会生成在活动场景中。 哪个场景是活动场景&#xff0c;则当前的天空盒就会使用该场景的天空盒。 只能有一个场景是活动场景。 在Hierarchy右击一个场景&#xff0c;点击“Set Active Scene”可以手动把这个场景设置为活动场景。也可以使用…...

Kotlin Lambda和高阶函数

Lambda和高阶函数 本文链接&#xff1a; 文章目录 Lambda和高阶函数 lambda输出&#xff08;返回类型&#xff09;深入探究泛型 inline原理探究 高阶函数集合、泛型自己实现Kotlin内置函数 扩展函数原理companion object 原理 > 静态内部类函数式编程 lambda 1、lambda的由…...

ELKstack-Elasticsearch配置与使用

一. 部署前准备 最小化安装 Centos 7.x/Ubuntu x86_64 操作系统的虚拟机&#xff0c;vcpu 2&#xff0c;内存 4G 或更多&#xff0c; 操作系统盘 50G&#xff0c;主机名设置规则为 es-server-nodeX &#xff0c; 额外添加一块单独的数据磁盘 大小为 50G 并格式化挂载到/data/e…...

Kotlin 基础教程二

constructor 构造器一般情况下可以简化为主构造器 即: class A constructor(参数) : 父类 (参数) 也可以在构造器上直接声明属性constructor ( var name) 这样可以全局访问 init { } 将和成员变量一起初始化 susped 挂起 data class 可以简化一些bean类 比如get / set ,自动…...

K8S deployment挂载

挂载到emptyDir 挂载在如下目录&#xff0c;此目录是pod所在的node节点主机的目录&#xff0c;此目录下的data即对应容器里的/usr/share/nginx/html&#xff0c;实现目录挂载&#xff1b;图1红框里的号对应docker 的name中的编号&#xff0c;如下俩个图 apiVersion: apps/v1 k…...

类之间的比较

作者简介&#xff1a; zoro-1&#xff0c;目前大一&#xff0c;正在学习Java&#xff0c;数据结构等 作者主页&#xff1a; zoro-1的主页 欢迎大家点赞 &#x1f44d; 收藏 ⭐ 加关注哦&#xff01;&#x1f496;&#x1f496; 类之间的比较 固定需求式比较器 固定需求式 通过…...

设计模式之备忘录模式(Memento)的C++实现

1、备忘录模式的提出 在软件功能开发过程中&#xff0c;某些对象的状态在转换过程中&#xff0c;由于业务场景需要&#xff0c;要求对象能够回溯到对象之前某个点的状态。如果使用一些共有接口来让其他对象得到对象的状态&#xff0c;便会暴露对象的实现细节。备忘录模式是在不…...

学习笔记230804---restful风格的接口,delete的传参方式问题

如果后端提供的删除接口是restful风格&#xff0c;那么使用地址栏拼接的方式发送请求&#xff0c;数据放在主体中&#xff0c;后端接受不到&#xff0c;当然也还有一种可能&#xff0c;后端在这个接口的接参设置上是req.query接参。 问题描述 今天遇到的问题是&#xff0c;de…...

STM32使用IIC通信的引脚配置问题

STM32使用IIC通信的引脚配置问题 在使用IIC通信时&#xff0c;遇到引脚配置问题&#xff0c;记录一下&#xff1a; IIC的两个引脚SDA和SCL都要求既能输入又能输出。 问题&#xff1a; SDA线是由不同的器件分时控制的&#xff0c;这样就会有一个问题&#xff1a;当一个器件主动…...

题解 | #K.First Last# 2023牛客暑期多校10

K.First Last 签到题 题目大意 n n n 个人参加 m m m 场比赛&#xff0c;每场比赛中获得名次得概率均等 问针对某一人&#xff0c;他在所有场次比赛中都获得第一或倒数第一的概率 解题思路 如果人数 n > 1 n>1 n>1 &#xff0c;每场比赛的概率是 p 2 n p\dfra…...

Python 程序设计入门(025)—— 使用 os 模块操作文件与目录

Python 程序设计入门&#xff08;025&#xff09;—— 使用 os 模块操作文件与目录 目录 Python 程序设计入门&#xff08;025&#xff09;—— 使用 os 模块操作文件与目录一、操作目录的常用函数1、os 模块提供的操作目录的函数2、os.path 模块提供的操作目录的函数 二、相对…...

excel逻辑函数篇1

1、AND(logical1,[logical2],…)&#xff1a;用于测试所有条件是否均为TRUE 检查所有参数均为true&#xff0c;如果是则返回true 2、OR(logical1,[logical2],…)&#xff1a;用于测试是否有为TRUE的条件 如果任意参数值为true&#xff0c;即返回true&#xff1b;只有当所有参数…...

前端基础(Vue的模块化开发)

目录 前言 响应式基础 ref reactive 学习成果展示 Vue项目搭建 总结 前言 前面学习了前端HMTL、CSS样式、JavaScript以及Vue框架的简单适用&#xff0c;接下来运用前面的基础继续学习Vue&#xff0c;运用前端模块化编程的思想。 响应式基础 ref reactive 关于ref和react…...

SystemVerilog interface使用说明

1. Interface概念 System Verilog中引入了接口定义&#xff0c;接口与module 等价的定义&#xff0c;是要在其他的接口、module中直接定义&#xff0c;不能写在块语句中&#xff0c;跟class是不同的。接口是将一组线捆绑起来&#xff0c;可以将接口传递给module。 2. 接口的优…...

机器人制作开源方案 | 送餐机器人

作者&#xff1a;赖志彩、曹柳洲、王恩开、李雪儿、杨玉凯 单位&#xff1a;华北科技学院 指导老师&#xff1a;张伟杰、罗建国 一、作品简介 1. 场景调研 1.1项目目的 近年来&#xff0c;全国多地疫情频发&#xff0c;且其传染性极高&#xff0c;食品接触是传播途径之一。…...

Gradio部署应用到服务器不能正常访问

用Gradio部署一个基于ChatGLM-6B的应用&#xff0c;发布到团队的服务器上&#xff08;局域网&#xff0c;公网不能访问&#xff09;&#xff0c;我将gradio应用发布到服务器的9001端口 import gradio as gr with gr.Blocks() as demo:......demo.queue().launch(server_port90…...

数据暴涨时代,该如何数据治理?_光点科技

随着信息技术的迅猛发展&#xff0c;数据已经成为现代社会的核心资源。在这个被称为"数据暴涨时代"的时代里&#xff0c;大量的数据源源不断地被产生和积累&#xff0c;但如何有效地管理、分析和利用这些数据成为了一个迫切需要解决的问题。数据治理&#xff0c;作为…...

2021年03月 C/C++(三级)真题解析#中国电子学会#全国青少年软件编程等级考试

第1题&#xff1a;找和为K的两个元素 在一个长度为n(n < 1000)的整数序列中&#xff0c;判断是否存在某两个元素之和为k。 时间限制&#xff1a;1000 内存限制&#xff1a;65536 输入 第一行输入序列的长度n和k&#xff0c;用空格分开。 第二行输入序列中的n个整数&#xff…...

GPT-5出世?OpenAI GPT-5商标已注册

OpenAI的GPT已经成为了业界标杆&#xff0c;升级速度之快让人瞠目&#xff0c;别人追GPT-3.5的时候GPT-4横空出世&#xff0c;差距被拉开了&#xff0c;现在GPT-5就要来了。 据商标律师泄露的消息&#xff0c;OpenAI已于7月18日注册了GPT-5商标。虽然注册商标并不罕见&#xf…...

优雅的使用 Dockerfile 定制镜像

一、使用 Dockerfile 定制镜像 1.1、Dockerfile 定制镜像 镜像的定制实际上就是定制每一层所添加的配置、文件。如果我们可以把每一层修改、安装、构建、操作的命令都写入一个脚本&#xff0c;用这个脚本来构建、定制镜像&#xff0c;无法重复的问题、镜像构建透明性的问题、…...

limit的用法mysql

当你在 MySQL 数据库中使用 LIMIT 语句&#xff0c;它可以用于限制查询结果的行数。这在分页查询或者限制返回的数据量时非常有用。下面是一些示例&#xff1a; 返回前几行数据&#xff1a; SELECT * FROM Customers LIMIT 5;这将返回 Customers 表中的前 5 行数据。 分页查…...

clickhouse Checksum doesn‘t match: 问题修复

1. 问题描述 SQL 错误 [40] [07000]: Code: 40. DB::Exception: Checksum doesnt match: corrupted data. Reference: 50e8c1efa78de2881b725d44b04be1fe. Actual: 161c99eb681ec36b83540ecdd65ad8c9. Size of compressed block: 32846. The mismatch is caused by single bit…...

企业如何开展个人信息安全影响评估(PIA)二

基本概念 根据《信息安全 技术个人信息安全影响评估指南》&#xff08;GB/T 39335—2020&#xff1b;personal information security impact assessment&#xff0c;简称“PIA”&#xff09;&#xff0c;个人信息安全影响评估是指针对个人信息处理活动&#xff0c;检验其合法合…...

android TextView 超出长度使用省略号

在Android中最常见的需求&#xff0c;就是在在外部展示信息时&#xff0c;需要简要展示内容。TextView仅需在静态布局文件中设置以下几个属性&#xff1a; android:maxWidth“100dp” // 宽度是多少才算超出 android:maxLines"2" // 高度多少才算超出 android:elli…...

c++ | 字节转换 | 字长 | 机器位数

为什么有的时候脑子转不过来&#xff1f;&#xff1f; 为什么要对字节、机器长啊、位啊都要门清 位数 一般的就是指计算机的位数&#xff0c;比如64位/32位&#xff0c;更简单的理解&#xff0c;计算机就是在不停的做二进制的计算&#xff0c;比如32位计算机&#xff0c;在长…...

7-4 交换最小值和最大值

分数 15 全屏浏览题目 切换布局 作者 C课程组 单位 浙江大学 本题要求编写程序&#xff0c;先将输入的一系列整数中的最小值与第一个数交换&#xff0c;然后将最大值与最后一个数交换&#xff0c;最后输出交换后的序列。 注意&#xff1a;题目保证最大和最小值都是唯一的。…...

解决Pycharm的Settings中Project不见了也无法选择Python Interpreter的方法

目录 一、问题如下二、解决方法 一、问题如下 突然打开项目没有python解释器&#xff0c;也无法重新配置python Interpreter&#xff0c;而且整个文件夹是黄色高亮的形式&#xff0c;如下显示&#xff0c;而且重新安装了pycharm也没用甚至说打开File–>Setting–>Projec…...

AWS EKS 集群自动扩容 Cluster Autoscaler

文章目录 一&#xff0c;需求工作需求说明 二&#xff0c;部署精简命令执行1&#xff0c;要求2&#xff0c;查看EC2 Auto Scaling groups Tag3&#xff0c;创建Serviceaccount需要的Policy&#xff0c;Role4&#xff0c;部署Cluster Autoscaler5&#xff0c;验证6&#xff0c;常…...

excel中有哪些通配符、excel配置问题,数学函数篇1之sum系列

学习excel前需要明确的是事&#xff1a;   在学习excel函数之前&#xff0c;大家需要明确一件事&#xff0c;excel现在设计到了一些新函数&#xff0c;这些新函数只能存在于office365、office2019及更 新版本之中&#xff0c;所以建议大家在学习时安装较新的版本&#xff0c;…...

工控行业需要熟悉的工业级通信协议

1. Modbus RTU Modbus RTU 是一种串行通信协议&#xff0c;常用于工控行业。它具有以下特点和优势&#xff1a; 采用二进制编码&#xff0c;数据传输更加高效。支持多种传输介质&#xff0c;如RS-232、RS-485等。容易实现和使用&#xff0c;适用于各种设备。具备强大的错误检…...

力扣题解(1030. 距离顺序排列矩阵单元格),带注释

题目描述 链接:点我 注意&#xff1a;多看几遍题目&#xff0c;开始没看懂…相当于计算矩阵网格里面的点&#xff08;不要计算边界&#xff09; 我开了题解才明白题的意思 orz… 题解 class Solution {public int[][] allCellsDistOrder(int rows, int cols, int rCenter, …...

每天一道leetcode:剑指 Offer 34. 二叉树中和为某一值的路径(中等图论深度优先遍历递归)

今日份题目&#xff1a; 给你二叉树的根节点 root 和一个整数目标和 targetSum &#xff0c;找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。 叶子节点 是指没有子节点的节点。 示例1 输入&#xff1a;root [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSu…...

利用POM完成脚本分离实现企业级自动化(POM设计模式+页面的框架封装+测试报告截图)

利用POM完成脚本分离实现企业级自动化&#xff08;POM设计模式页面的框架封装测试报告截图&#xff09; 项目-测试-手工测试 项目-测试-手工测试 1.了解需求&#xff1b; 2.编写测试用例&#xff08;开始&#xff09;——功能测试组会去做的事情 3.执行测试用例——发送测试报…...

嵌入式设计中对于只有两种状态的变量存储设计,如何高效的对循迹小车进行偏差量化

前言 &#xff08;1&#xff09;在嵌入式程序设计中&#xff0c;我们常常会要对各类传感器进行数据存储。大多时候的传感器&#xff0c;例如红外光传感器&#xff0c;返回的数据要么是0&#xff0c;要么是1。因此&#xff0c;只需要一bit就能够存储。而很多人却常常使用char型数…...