LoGoNet:基于局部到全局跨模态融合的精确 3D 目标检测
论文地址:https://arxiv.org/abs/2303.03595
论文代码:https://github.com/sankin97/LoGoNet
论文背景
激光雷达传感器点云通常是稀疏的,无法提供足够的上下文来区分远处的区域,从而造成性能次优。
激光雷达-摄像机融合方法在三维目标检测中表现出了良好的性能。目前先进的多模态方法主要进行全局融合,即在整个场景中融合图像特征和点云特征。这样的实践缺乏细粒度的区域级信息,从而产生了次优的融合性能。
为了解决上述问题,论文提出了一种新的局部到全局的融合网络,称为 LoGoNet,它在全局和局部两个层次上进行激光雷达-相机的融合。
LoGoNet 由全局融合(GoF)、局部融合(LoF)和特征动态聚合(FDA)三个新的组件组成。
相关工作
基于图像的 3D 目标检测
由于摄像机比激光雷达传感器便宜得多,许多研究人员致力于通过将图像作为唯一的输入信号来进行3D物体检测。 对于基于图像的 3D 目标检测,由于深度信息不能直接从图像中获得,一些工作首先进行深度估计以生成伪激光雷达表示或将2D特征提升到三维空间,然后在三维空间中进行目标检测。最近,一些工作引入了基于 transformer 的体系结构来利用检测 pipeline 中的3D对象查询和3D-2D对应。 由于从图像中准确估计深度信息极其困难,因此基于图像的方法的性能仍然不如基于激光雷达的方法。
基于雷达的 3D 目标检测
根据所使用的点云表示的类型,当前基于 Lidar 的方法大致可以分为三类:基于点的方法、基于体素的方法和基于点体素的融合方法。基于点的方法直接以原始点云作为输入,利用多层感知器层提取点特征;基于体素的方法倾向于将点云转化为体素,并利用3D稀疏卷积层提取体素特征。最近的一些工作引入了 transformer 来捕捉体素之间的 long-range 关系。点-体素融合方法利用基于体素和基于点的 backbones 从点云的不同表示中提取特征。
多模态 3D 目标检测
多模态融合技术综合了图像和点云的优点, AVOD、MV3D 和 F-Pointnet 是具有开创性的 proposal-level 融合工作,它们独立地进行两个模态的特征提取,并通过二维和三维感兴趣区域直接简单地连接多模态特征。 Clocs 直接组合来自预先训练的二维和三维检测器的检测结果,而不集成特征 。它们在跨模态融合中保持了实例语义的一致性,特征聚合和交互都比较粗糙。 因此,通过交叉融合增强点云特征得到了越来越多的关注。 Point decoration 方法、用从预先训练的分割网络中提取的语义分数或图像特征来增强每个激光雷达点。 3D-CVF 和 EPNET 探索了用学习的校准矩阵进行交叉特征融合。 最近的一些研究以同样的方式探索了基于视图变换的共享表示空间中的全局融合。 这些方法在利用点云的空间 clues 方面效果较差,而且可能会影响摄像机 BEV 表示和跨模态对齐的质量。 此外,许多并行方法引入交叉关注模块,通过学习的偏移矩阵自适应地对齐和融合点云特征和图像特征。
论文框架
LogoNet 的输入点云和多相机图像分别为为 P = { ( x i , y i , z i ) ∣ f i } i = 1 N P=\{ (x_i,y_i,z_i) | f_i \}_{i=1}^{N} P={(xi,yi,zi)∣fi}i=1N 和 来自 T T T个相机的 I = { I j ∈ R H I × W I × 3 } j = 1 T I = \{I_j \in \R^{H_I \times W_I \times 3}\}_{j=1}^T I={Ij∈RHI×WI×3}j=1T。其中 ( x i , y i , z i ) (x_i,y_i,z_i) (xi,yi,zi) 是第 i i i 个点的空间坐标, f i ∈ R C p f_i \in \R^{C_p} fi∈RCp 是包含每个点的强度或延伸的附加特征, N N N 是点云中的点数, H I H_I HI 和 W I W_I WI 是输入图像的高度和宽度。对于点云分支,在给定输入点云的情况下,使用基于3D体素的 backbone 生成 1 × , 2 × , 4 × 1×,2 ×, 4× 1×,2×,4× 和 8 × 8× 8× 下采样体素特征 F V ∈ R X × Y × Z × C V F_V∈\R^{X×Y×Z×C_V} FV∈RX×Y×Z×CV,其中 C V C_V CV 为每个体素特征的通道数, ( X , Y , Z ) (X, Y, Z) (X,Y,Z) 为每个体素层的网格大小。然后,从提取的分层体素特征中使用一个区域提议网络(RPN)来产生初始的 bounding box proposal B = { B 1 , B 2 , . . . , B n } B = \{ B_1,B_2,...,B_n \} B={B1,B2,...,Bn}。对于图像分支,利用二维检测器对原始多摄像机图像进行处理,得到稠密语义图像特征 F I ∈ R H I 4 × W I 4 × C I F_I∈\R^{\frac{H_I}{4}×\frac{W_I}{4}×C_I} FI∈R4HI×4WI×CI,其中 C I C_I CI 为图像特征的通道数。最后,将局部到全局的交叉模态融合应用到两阶段 refinement 中,其中多级体素特征 F V F_V FV、图像特征 F I F_I FI 和从原始点云中提取的局部位置信息自适应融合。LogoNet(local-to-global)融合方法主要包括全局融合(GoF)、局部融合(LoF)和特征动态聚合模块(FDA)。
全局融合模块
以往的全局融合方法通常使用体素中心来表示每个体素特征的位置。然而,这样的做法不可避免地忽略了每个体素内点的实际分布。 如 KPConv 和 PDV 所观察到的,体素点中心更接近物体的扫描表面。 它们更有效地为大尺度点云提供原始几何形状信息和尺度。因此,论文设计了质心动态融合(CDF)模块,以在全局体素特征空间中自适应地融合点云特征和图像特征。利用这些体素点质心来表示非空体素特征的空间位置。这些体素特征及其相关的图像特征通过可变形交叉注意力模块自适应融合,如图所示。给定非空体素特征集合 F V = { V i , f V i } i = 1 N V F_V =\{V_i,f_{V_i}\}^{N_V}_{i=1} FV={Vi,fVi}i=1NV和图像特征 F I F_I FI,其中 V i V_i Vi 为体素索引, f V i ∈ R C V f_{Vi}∈\R^{C_V} fVi∈RCV 为非空体素特征向量, N V N_V NV为非空体素的数量。通过在同一体素 V i V_i Vi 中对所有点的空间位置求平均,得到每个体素特征 f V i f_{V_i} fVi 的点质心 c i c_i ci: c i = 1 ∣ P ( V i ) ∣ ∑ p i ∈ P ( V i ) p i , (1) \tag1 c_i = \frac{1}{|\mathcal P(V_i)|} \sum_{p_i \in \mathcal P(V_i)}p_i, ci=∣P(Vi)∣1pi∈P(Vi)∑pi,(1) 其中 p i = ( x i , y i , z i ) p_i =(x_i,y_i,z_i) pi=(xi,yi,zi) 是空间坐标, ∣ P ( V i ) ∣ |\mathcal P(V_i)| ∣P(Vi)∣ 是体素 V i V_i Vi 内的点数。接下来,为每个计算的体素点质心分配一个体素网格索引,并通过哈希表匹配相关的体素特征。然后,利用摄像机投影矩阵 M \mathcal M M,从每个计算的体素点质心 c i c_i ci 计算出图像平面上的参考点 p i \boldsymbol {p_i} pi: p i = M ⋅ c i , (2) \tag 2 \boldsymbol {p_i} = \mathcal M \cdot c_i, pi=M⋅ci,(2)式中 M \mathcal M M为相机内参矩阵与外参矩阵的乘积,运算 ⋅ · ⋅ 为矩阵乘法。在参考点的基础上,对参考点周围的一组图像特征 F I k F^k_I FIk 进行加权,生成聚合图像特征 F ^ I i \hat F_{I}^i F^Ii ,该集合将学习到的偏移量应用于图像特征 F I F_I FI。 将每个体素特征表示为查询 Q i Q_i Qi,将采样特征 F ^ I i \hat F_I^i F^Ii 表示为键 K K K 和值 V V V。 整个质心动态融合过程表述为: F I k = F I ( p i + Δ p m i k ) , CDF ( Q i , F ^ I i ) = ∑ m = 1 M W M [ ∑ k = 1 K A m i k ⋅ ( W m ′ F I k ) ] , (3) \tag3 F_I^k = F_I(\boldsymbol p_i + \Delta \boldsymbol p_{mik}),\\\text{CDF}(Q_i,\hat F_I^i) = \sum_{m=1}^{M} W_M [\sum_{k=1}^{K}A_{mik}\cdot (W_m^{'}F_I^k)], FIk=FI(pi+Δpmik),CDF(Qi,F^Ii)=m=1∑MWM[k=1∑KAmik⋅(Wm′FIk)],(3)其中, W m W_m Wm 和 W m ′ W_m^{'} Wm′为可学习权值, M M M 为自注意头的个数, K K K 为总采样点数。 Δ p m i k \Delta p_{mik} Δpmik 和 A m i k A_{mik} Amik 分别表示第 m m m 个注意头中第 k k k 个采样点的采样偏移量和注意权重。它们都是通过在查询特征 Q i Q_i Qi 上的线性投影得到的。 将图像增强后的体素特征与原始体素特征进行级联,得到融合体素特征 F ^ V ∗ ∈ R N × 2 C V \hat F^*_V∈\R^{N×2C_V} F^V∗∈RN×2CV。 然后,在 F ^ V ∗ \hat F^*_V F^V∗ 上采用一个 FFN 来减少通道的数量,并从CDF模块获得最终的融合特征 F ^ V ∗ ∈ R N × C V \hat F^*_V∈\R^{N×C_V} F^V∗∈RN×CV,其中FFN表示一个前馈网络。最后,在 F ^ V ∗ \hat F^*_V F^V∗ 上执行 ROI pooling,以生成 proposal 特征 F B g F^g_B FBg 用于后续的 proposal refinement。
局部融合模块
为了在多模态融合过程中提供更多的局部和细粒度几何信息,提出了网格点动态融合(GDF)局部融合(LOF)模块,在 proposal 层动态融合点云特征和图像特征。给定每个 bounding box proposal B i B_i Bi,将其划分为 u × u × u u×u×u u×u×u 的规则体素网格 G j G_j Gj,其中 j j j 索引体素网格。 取中心点 z j z_j zj 作为对应体素网格 G j G_j Gj 的网格点。 首先,使用位置信息编码器(PIE)对相关的位置信息进行编码,并为每个 bounding box proposal 生成每个网格特征 F G j F^j_G FGj。 对每个 proposal 的网格进行 PIE 处理,得到局部网格感兴趣区域特征 F B p = { F G 1 , F G 1 , . . . , F G u 3 } F^p_B =\{F^1_G,F^1_G,...,F^{u^3}_G\} FBp={FG1,FG1,...,FGu3}。 每个网格特征 F G j F^j_G FGj 的 PIE计算如下: F G j = MLP ( γ , c B , log ( ∣ N G j ∣ + τ ) ) (4) \tag4 F^j_G = \text{MLP}(\gamma,c_B,\log(|N_{G_j}|+\tau)) FGj=MLP(γ,cB,log(∣NGj∣+τ))(4) 其中 γ = z j − c B γ=z_j-c_B γ=zj−cB 是每个网格与 bounding box proposla 质心 c B c_B cB 的相对位置, ∣ N G j ∣ |N_{G_j}| ∣NGj∣ 是每个体素网格 G j G_j Gj 中的点数, τ τ τ 是一个恒定的偏移量。 每个网格中的这些信息为在 region proposals 中构建细粒度跨模态融合提供了基础。 除了利用原始点云在每个体素网格中的位置信息外,论文还提出了网格动态融合(GDF)模块,使模型能够利用这些编码的局部ROI 网格特征 F B p F^p_B FBp 自适应地吸收相关的图像特征到局部 proposals 中。 然后,将网格点 G G G 的每个中心点 z j z_j zj 投影到类似于 GoF 模块的多视点图像平面上,并为每个 box proposal 获得若干个参考点 O ∈ R u 3 O∈\R^{u^3} O∈Ru3,对图像特征进行局部多模态特征融合。 利用交叉注意将局部采样图像特征与编码后的局部 ROI 网格特征 F B p F_B^p FBp 融合,查询特征 Q Q Q 是由 ROI 网格特征 F B p F_B^p FBp 与编码后的局部原始点云位置信息生成的、key 和 value 特征 K、V 是由参考点采样的图像特征 F I F_I FI 及其动态偏移量生成的,其操作与公式(3)相同。然后,将图像增强后的局部网格特征与原始的局部网格特征进行拼接,得到融合的网格特征 F ^ B l \hat F^l_B F^Bl。最后,在 F ^ B l \hat F^l_B F^Bl 上采用FFN算法减少通道数,得到融合后的ROI网格特征 F B l F^l_B FBl。
特征动态聚合模块
在LOF、GOF和PIE模之后,得到了三种特征,即 F B p F^p_B FBp、 F B l F^l_ B FBl 和 F B g F^g_B FBg。 这些特征是独立产生的,信息交互性和聚合性较差。因此,论文提出了特征动态聚合(FDA)模块,该模块引入了自注意来自适应地建立不同网格点之间的关系。首先得到每个 bounding box proposal 中所有编码网格点的聚合特征 F S F_S FS 为: F S = F B p + F B l + F B g (5) \tag5 F_S=F_B^p+F_B^l+F_B^g FS=FBp+FBl+FBg(5)然后,引入自注意模块,构建非空网格点特征与标准 transformer 编码器层和残差连接块(RCB)之间的交互。
训练的 Loss 函数
在LoGoNet中,图像分支的权值被冻结,只训练LiDAR分支。总体训练损失 L \mathcal L L 包括RPN损失 L R P N \mathcal L_{RPN} LRPN、置信度预测损失 L c o n f \mathcal L_{conf} Lconf 和 box 回归损失 L r e g \mathcal L_{reg} Lreg: L = L R P N + L c o n f + α L r e g (6) \tag6 \mathcal L = \mathcal L_{RPN}+\mathcal L_{conf}+ \alpha \mathcal L_{reg} L=LRPN+Lconf+αLreg(6)其中 α α α 是平衡不同损耗的超参数,在论文的实验中设为1。 我们遵循 voxel r-cnn 中的训练设置来优化整个网络。
论文总结
论文提出了一种新颖的多模态网络LoGoNet,通过局部到全局的跨模态特征融合,将点云特征与图像特征深度融合,为准确检测提供了更丰富的信息。在 WOD 和 KITTI 数据集上进行了大量实验,LoGoNet 超过了以前的方法,并在 Waymo 3D 检测排行榜上获得了第一名。结果表明,该框架具有很强的有效性和通用性。
相关文章:
LoGoNet:基于局部到全局跨模态融合的精确 3D 目标检测
论文地址:https://arxiv.org/abs/2303.03595 论文代码:https://github.com/sankin97/LoGoNet 论文背景 激光雷达传感器点云通常是稀疏的,无法提供足够的上下文来区分远处的区域,从而造成性能次优。 激光雷达-摄像机融合方法在三…...
Python 多线程、线程池、进程池
线程间的通讯机制 消息队列 event 事件对象 当线程创建完成之后,并不会马上执行线程,而是等待某一事件发生,线程才会启动 import threading# # 创建 event 对象 # event threading.Event() # # 重置代码中的 event 对象,使得所…...
深入浅出了解华为端到端交付流程的概念和5个关键点
如果您或您所在的组织在学习和研究华为,那么对“端到端”这个词语就一点都不陌生。 今天华研荟带着您了解华为端到端的交付流程的思想和一些做法,如果了解了这个,那么对于华为在其他领域提出的端到端要求或做法就一通百通了。 一、什么是端…...
[Linux]进程信号
[Linux]进程信号 文章目录 [Linux]进程信号进程信号的定义信号的特点信号的生命过程发送信号的原理进程处理信号的方式分类使用指令查看Linux系统定义的信号信号产生使用终端按键产生信号使用指令向进程发送信号调用系统调用向进程发送信号由软件条件产生信号硬件异常产生信号 …...
PostgreSQL 数据类型
文章目录 PostgreSQL数据类型说明PostgreSQL数据类型使用单引号和双引号数据类型转换布尔类型数值类型整型浮点型序列数值的常见操作 字符串类型日期类型枚举类型IP类型JSON&JSONB类型复合类型数组类型 PostgreSQL数据类型说明 PGSQL支持的类型特别丰富,大多数…...
智慧港口4G+UWB+GPS/北斗RTK人员定位系统解决方案
港口人员定位系统能够帮助企业实现对港口作业人员的全面监控和管理,不仅可以保障人员的人身安全,还可以提高人员的作业效率,为港口的可持续发展提供有力保障。接下来为大家分享智慧港口人员定位系统解决方案。 方案背景 1、港口作业人员多&a…...
实时时钟和日历电路芯片MS85163/MS85163M
MS85163/MS85163M 是一款 CMOS 实时时钟 (RTC) 和 日历电路,针对低功耗进行了优化,内置了可编程的时钟输出、中断输出和低电压检测器。所有寄存器地址和数据都通过两线双向I 2 C 总线进行串行传输,最大总线传输速度为 400kbit/s 。采用SOP8…...
【Java从入门到精通】这也许就是Java火热的原因吧!
前言:Java是一种高级的、面向对象的、可跨平台的程序设计语言。Java根据技术类别可划分为以下几类:JavaSE(Standard Edition,标准版):支持面向桌面、嵌入式和移动设备的应用程序开发;JavaEE&…...
zTasker—简洁易用强大的定时热键一体自动化工具,效率倍增器
软件名称 zTasker 应用平台 PC Windows7及以上 一句简介 市面上定时类软件很多,但无一例外功能都很单一,要完成不同的任务,需要不同的软件 市面上的热键软件,要么功能少,要么像是AutoHotKey这样对于一般用户太专业…...
惊艳时装界!AIGC风暴来袭,从设计到生产的全新体验
时尚是一个不断演进的领域,充满创新和独创性,但现在,创新迈入了一个崭新的境界——人工智能生成内容(AIGC)。这个革命性的技术,改变了时装设计的游戏规则。在过去的几年里,人工智能已经深刻地改…...
element -ui table表格内容无限滚动 使用插件vue-seamless-scroll
使用插件 一、安装组件依赖 npm install vue-seamless-scroll 二、引入组件 import vueSeamlessScroll from "vue-seamless-scroll"; components: { vueSeamlessScroll }, <div class"table-list "><vue-seamless-scroll :class-option"…...
如何在windows环境下编译T
一, 安装MYSYS2 1. 去https://www.msys2.org下载 msys2-x86_64-xxxxx.exe; 2. 按照msys2.org主页提示的步骤安装; 3.安装完默认起来的是 UCRT的, 可以根据环境的需要选择, 我选择的 MSYS2 MINGW64 4. 搭建编译环境, 安装对应的软…...
USB接口针式打印机
1 针式打印机原理 - 针式打印机16针是纵向排列,每次打印垂直的16bit,然后右移一bit,继续下列打印;字节的MSB表示最上面的点,字节LSB表示最下面的点 - 由于汉字字模的点阵是横向排列的,而提供给打印头的信息…...
外贸建站教程步骤有哪些?独立站怎么搭建?
推荐的外贸建站教程?制作国际贸易网站的流程? 对于那些希望将产品或服务推向全球市场的企业来说,建立一个专业、具有吸引力的网站是至关重要的。下面115SHOP将介绍外贸建站教程的关键步骤,帮助您更好地了解如何在国际市场上建立您…...
useGetState自定义hooks解决useState 异步回调获取不到最新值
setState 的两种传参方式 1、直接传入新值 setState(options); const [state, setState] useState(0); setState(state 1); 2、传入回调函数 setState(callBack); const [state, setState] useState(0); setState((prevState) > prevState 1); // prevState 是改变之…...
input子系统框架、外设驱动开发
一、input子系统基本框架 Linux内核为了两个目的: 简化纯输入类外设(如:键盘、鼠标、游戏杆、轨迹球、触摸屏。。。等等)的驱动开发统一输入类外设产生的数据格式(struct input_event),更加方…...
Google Chrome 浏览器以全屏模式打开
目录 前言以全屏模式打开禁止弹出无法更新的提示窗禁止翻译网页Chrome设置禁止翻译网页可能1可能2可能3 网页添加指令禁止Chrome翻译网页 禁用脚本气泡浏览器解决办法html解决办法方法1:鼠标滑过超链接时,使状态栏不出现超链接方法2:方法3&am…...
安装torch113、cuda116并运行demo【Transformer】
文章目录 01. 导读02. 显卡驱动版本03. 创建环境、下载安装必要包04. 运行参考代码: 01. 导读 安装torch113、cuda116并运行demo【Transformer】 02. 显卡驱动版本 C:\Users\Administrator>nvidia-smi -l 10 Wed Sep 13 23:35:08 2023 ----------------------…...
基于scRNA-seq的GRN分析三阴性乳腺癌的肿瘤异质性
三阴性乳腺癌即TNBC是一种肿瘤异质性高的乳腺癌亚型。最近的研究表明,TNBC患者可能包含具有不同分子亚型的细胞。此外,基于scRNA-seq数据构建的GRN已经证明了对关键调控因子研究的重要性。作者使用scRNA-seq对TNBC患者的GRN进行了全面分析。从scRNA-seq数…...
Python:二进制文件实现等间隔取相同数据量并合并
举例:每3byte为一页,每3页为一wl。将所有wl的第一页/第二页/第三页分别合并为一个文件。 data b\x01\x02\x03\x04\x05\x06\x07\x08\x09\x01\x02\x03\x04\x05\x06\x07\x08\x09\x01\x02\x03\x04\x05\x06\x07\x08\x09\x01\x02\x03\x04\x05\x06\x07\x08\x0…...
python使用openvc库进行图像数据增强
以下是使用Python和OpenCV库实现图像数据增强的简单示例代码,其中包括常用的数据增强操作: import cv2 import numpy as np import os# 水平翻转 def horizontal_flip(image):return cv2.flip(image, 1)# 垂直翻转 def vertical_flip(image):return cv2…...
如何利用Api接口获取手机当前的网络位置信息
在移动互联网时代,手机定位已经成为了一个日常化的需求,无论是导航、社交还是打车等服务都需要获取手机的位置信息。而获取手机位置信息最基础的一步就是获取手机当前的网络位置信息,本文将介绍如何利用API接口获取手机当前的网络位置信息。 …...
vue-elementPlus自动按需导入和主题定制
elementPlus自动按需导入 装包 -> 配置 1. 装包(主包和两个插件包) $ npm install element-plus --save npm install -D unplugin-vue-components unplugin-auto-import 2. 配置 在vite.config.js文件中配置,配置完重启(n…...
idea中dataBase模板生成
controller.java.vm ##定义初始变量 #set($tableName $tool.append($tableInfo.name, "Controller")) ##设置回调 $!callback.setFileName($tool.append($tableName, ".java")) $!callback.setSavePath($tool.append($tableInfo.savePath, "/contro…...
pc端测试手机浏览器运行情况,主要是测试硬件功能
测试h5震动摇晃等功能时不方便测试,需要连电脑显示调试数据 方法: 1.需要手机下载谷歌浏览器,pc端用edge或这谷歌浏览器 2.手机打开USB调试,打开要测试的网页 3.pc端地址栏输入edge://inspect/#devices(这里用的edge浏…...
软件概要设计-架构真题(二十五)
软件概要设计包括软件设计的结构、确定系统功能模块及其相互关系,主要采用()描述程序的结构。(2018年) 程序流程图、PAD图和伪代码模块结构图、数据流图和盒图模块结构图、层次图和HIPO图程序流程图、数据流图和层次图…...
CSDN发文表情包整理
文章目录 简介部分Emoji表情符号简表人物自然物品地点符号 各种Emoji表情链接 简介 CSDN支持Markdown语法及Emoji表情,使用各种Emoji表情可以使得自己的博文更加生动多彩。一般有两种在支持Markdown的语法环境中添加Emoji表情:1.直接将表情包复制到文档…...
springBoot对接Apache POI 实现excel下载和上传
搭建springboot项目 此处可以参考 搭建最简单的SpringBoot项目_Steven-Russell的博客-CSDN博客 配置Apache POI 依赖 <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>5.2.2</version> </…...
定积分的计算:牛顿-莱布尼茨公式
目录 牛顿-莱布尼茨公式 用C语言代码实现 利用换元积分法和分部积分法 利用奇偶性和周期性求积分 利用已有公式求积分 牛顿-莱布尼茨公式 牛顿-莱布尼茨公式(Newton-Leibniz formula)是微积分学中的基本定理之一,它反映了定积分与被积函…...
shell脚本之case 的用法
shell脚本之case case是Shell脚本中的一种控制流语句,它允许根据变量的值选择不同的执行路径。case语句的语法如下: case word in pattern [| pattern]...) command-list ;; pattern [| pattern]...) command-list ;; ... *) command-list ;; esa…...
网页微信登陆首页/宁波网站推广优化
232. 用栈实现队列 文章目录题目描述方法一:双栈有个基本一样的题目 剑指 Offer 09. 用两个栈实现队列题目描述 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列的支持的所有操作(push、pop、peek、empty): 实现 MyQue…...
嘉兴建设网站的/seo营销推广服务公司
1.打开Finder — 同时按住 Command Shift G2.输入地址(其中xxxx为自己的用户名) /Users/xxxx/Library/Developer/Xcode/UserData/CodeSnippets备注:如果提示这个目录不存在,则进入 /Users/xxxx/Library/Developer/Xcode/UserData/ 然后新建一个CodeSnippets 文件夹3.将后缀为…...
去年做那些网站能致富/免费行情网站大全搜狐网
💥 项目专栏:【Pandas数据处理100例目录】Python数据分析玩转Excel表格数据 前言 大家好,我是阿光。 本专栏整理了《Pandas数据分析处理》,内包含了各种常见的数据处理,以及Pandas内置函数的使用方法,帮助我们快速便捷的处理表格数据。 正在更新中~ ✨ 🚨 我的项目…...
h5做网站教程/网络营销策划书格式
一部台湾黑道电影,非常不错 还以为跟台湾偶像剧一样俗套 低估了 转载于:https://www.cnblogs.com/cloud/archive/2010/02/25/1673458.html...
做菠菜网站代理犯法吗/网上打广告有哪些软件
防火墙(Firewalld)是一种隔离工具,防范与非授权的访问,使主机更安全。它主要工作与网络或主机的边缘,对于进出本网络或主机的通信报文根据事先定义好的规则进行匹配检测;对于能够被规则所匹配到的报文做出相…...
福建省人民政府关于加快推进科技创新发展的通知/上海网站seo排名优化
文章目录26.1 远程登录26.1.1 TELNET1. 分时环境2. 登录3. 网络虚拟终端4. 嵌入5. 选项6. 操作方式26.1.2 Rlogin和SSH26.2 电子邮件26.2.1 架构1. 同一系统的邮件交换2. 不同系统的邮件交换3. 发送方通过LAN/WAN连接邮件服务器4. 最常用的邮件交换26.2.2 用户代理1. 用户代理提…...