【论文笔记】CRN: Camera Radar Net for Accurate, Robust, Efficient 3D Perception

原文链接:https://arxiv.org/abs/2304.00670

1. 引言

  本文提出两阶段融合方法CRN,能使用相机和雷达生成语义丰富且位置精确的BEV特征。具体来说,首先将图像透视特征转换到BEV下,该步骤依赖雷达,称为雷达辅助的视图变换(RVT)。由于转换得到的BEV特征并非完全精确,接下来的多模态特征聚合(MFA)层使用注意力机制将BEV特征编码为统一的特征图。
  CRN有如下3个特点:

  1. 精确。仅使用低成本的相机和雷达,就能达到和激光雷达相当的检测性能。
  2. 鲁棒。即使在一个模态完全失效的情况下,CRN也有鲁棒的性能。
  3. 高效。使用很小的额外计算成本,就能显著提高性能,有利于实时且长距离的感知。

3. 相机-雷达网络(CRN)

  如下图所示为本文CRN的网络结构。
在这里插入图片描述

3.1 准备工作

  单目3D方法:可分为两类,即基于几何的方法和基于学习的方法。
  基于几何的方法通过预测深度 D D D作为显式的中间表达,将透视图特征 F F F ( u , v ) (u,v) (u,v)转换为 ( d , u , v ) (d,u,v) (d,u,v),再按下式转换为3D ( x , y , z ) (x,y,z) (x,y,z)
F 3D ( x , y , z ) = M ( F 2D ( u , v ) ⊗ D ( u , v ) ) F_\text{3D}(x,y,z)=M(F_\text{2D}(u,v)\otimes D(u,v)) F3D(x,y,z)=M(F2D(u,v)D(u,v))其中 M M M表示视图变换模块(如BEVDepth中的体素池化操作); ⊗ \otimes 表示外积。
  基于学习的方法使用映射网络隐式地建模3D到2D的投影:
F 3D ( x , y , z ) = f ( P x y z , F 2D ( u , v ) ) F_\text{3D}(x,y,z)=f(P_{xyz},F_\text{2D}(u,v)) F3D(x,y,z)=f(Pxyz,F2D(u,v))其中 f f f为透视图到BEV的映射函数(如MLP或交叉注意力); P x y z P_{xyz} Pxyz为3D体素。
  两种方法的关键都是获取空间精确的3D特征 F 3D ( x , y , z ) F_\text{3D}(x,y,z) F3D(x,y,z)。本文使用雷达提升视图变换性能。
  雷达特征:雷达有3D张量和点云等表达。雷达点云表达和激光雷达点云相比,分辨率和精度都不够;且更加模糊、富含噪声、无俯仰角测量。因此,雷达可能在有物体的地方没有测量,而在无物体的地方有测量。雷达感知任务若直接使用激光雷达方法会使复杂场景下的性能受限。本文自适应地利用雷达,以克服其稀疏性和模糊性。

3.2 雷达辅助的视图变换(RVT)

  图像特征编码与深度分布:本文使用图像主干(如ResNet或ConvNeXt)和FPN为每个视图的图像获取下采样的特征图 F I F_I FI。然后类似LSS方法,使用额外的卷积提取图像内容特征 C I P V ∈ R N × C × H × W C^{PV}_I\in\mathbb{R}^{N\times C\times H\times W} CIPVRN×C×H×W和像素的深度分布 D I ∈ R N × D × H × W D_I\in\mathbb{R}^{N\times D\times H\times W} DIRN×D×H×W
C I P V = Conv ( F I ) , D I ( u , v ) = Softmax ( Conv ( F I ) ( u , v ) ) C^{PV}_I=\text{Conv}(F_I),D_I(u,v)=\text{Softmax}(\text{Conv}(F_I)(u,v)) CIPV=Conv(FI),DI(u,v)=Softmax(Conv(FI)(u,v))其中 ( u , v ) (u,v) (u,v)代表图像平面的坐标, D D D是深度区间数。
  雷达特征编码与雷达占用图:首先将雷达点云投影到多视图图像上,然后体素化为图像视锥体素 V P F V ( d , u , v ) V^{FV}_P(d,u,v) VPFV(d,u,v)。其中 u , v u,v u,v是图像的宽、高像素单位, d d d是深度方向的度量单位。由于雷达不含高度信息,使用柱状表达(不考虑 v v v)。非空柱体被PointNet和稀疏卷积编码为特征 F P ∈ R N × C × D × W F_P\in\mathbb{R}^{N\times C\times D\times W} FPRN×C×D×W。类似图像分支,也提取图像视锥内的雷达内容特征 C P F V ∈ R N × C × D × W C^{FV}_P\in\mathbb{R}^{N\times C\times D\times W} CPFVRN×C×D×W和雷达占用图 O P ∈ R N × 1 × D × W O_P\in\mathbb{R}^{N\times 1\times D\times W} OPRN×1×D×W。这里的卷积被用在俯视图 ( d , u ) (d,u) (d,u)而非 ( u , v ) (u,v) (u,v)上:
C P F V = Conv ( F P ) , O P ( d , u ) = σ ( Conv ( F P ) ( d , u ) ) C^{FV}_P=\text{Conv}(F_P),O_P(d,u)=\sigma(\text{Conv}(F_P)(d,u)) CPFV=Conv(FP),OP(d,u)=σ(Conv(FP)(d,u))其中 σ \sigma σ是Sigmoid函数。
  视锥视图变换:给定深度分布 D I D_I DI和雷达占用图 O P O_P OP,使用外积将图像内容特征图 C I P V C_I^{PV} CIPV转换到图像视锥视图 C I F V ∈ R N × C × D × H × W C_I^{FV}\in\mathbb{R}^{N\times C\times D\times H\times W} CIFVRN×C×D×H×W:
C I F V = Conv [ C I P V ⊗ D I ; C I P V ⊗ O P ] C_I^{FV}=\text{Conv}[C_I^{PV}\otimes D_I;C_I^{PV}\otimes O_P] CIFV=Conv[CIPVDI;CIPVOP]其中 [ ⋅ ; ⋅ ] [\cdot;\cdot] [;]表示沿通道维度的拼接。由于雷达无高度信息,且为了节省存储空间,将图像上下文特征使用求和进行高度压缩,如下图所示。
在这里插入图片描述
  BEV变换:最后,相机和雷达在视锥视图内的上下文特征图 F F V = { C I F V , C R F V ∈ R N × C × D × H × W } F^{FV}=\{C_I^{FV},C_R^{FV}\in\mathbb{R}^{N\times C\times D\times H\times W}\} FFV={CIFV,CRFVRN×C×D×H×W}被视图变换模块 M M M转换到BEV空间 R C × 1 × X × Y \mathbb{R}^{C\times1\times X\times Y} RC×1×X×Y下:
F B E V = M ( { F i F V } i = 1 N ) F^{BEV}=M(\{F_i^{FV}\}_{i=1}^N) FBEV=M({FiFV}i=1N)具体来说,使用BEVStereo的体素池化操作,并将每个BEV网格内的求和修改为取均值,以使得BEV特征图对距自车的距离更加一致(因为透视投影会使近距离的BEV网格与更多的视锥网格相关联)。

3.3 多模态特征聚合(MFA)

  动机:传统的通道拼接或求和融合方法不能处理图像特征空间错位或雷达模糊问题,本文使用自适应的方法,利用注意力机制进行融合。
  多模态可变形交叉注意力(MDCA):交叉注意力的计算花费与序列长度为二次关系,即 O ( N 2 ) , N = X Y O(N^2),N=XY O(N2),N=XY。因此本文使用可变形交叉注意力,其复杂度与输出大小为线性关系,即 O ( 2 N + N K ) O(2N+NK) O(2N+NK),其中 K ≪ N K\ll N KN为采样数。
  给定拉长的BEV上下文特征图 x m = { C I B E V , C R B E V ∈ R C × X Y } x_m=\{C_I^{BEV},C_R^{BEV}\in\mathbb{R}^{C\times XY}\} xm={CIBEV,CRBEVRC×XY},首先将 x m x_m xm拼接后投影为 C C C维查询向量: z q = W z [ LN ( C I ) ; LN ( C P ) ] z_q=W_z[\text{LN}(C_I);\text{LN}(C_P)] zq=Wz[LN(CI);LN(CP)],其中 W ∈ R C × 2 C W\in\mathbb{R}^{C\times 2C} WRC×2C为线性投影,LN是LayerNorm。然后特征图通过多模态可变形交叉注意力聚合:
MDCA ( z q , p q , x m ) = ∑ h H W h [ ∑ m M ∑ k K A h m q k ⋅ W h m ′ x m ( ϕ m ( p q + Δ p h m q k ) ) ] \text{MDCA}(z_q,p_q,x_m)=\sum_h^HW_h\left[\sum_m^M\sum_k^KA_{hmqk}\cdot W'_{hm}x_m(\phi_m(p_q+\Delta p_{hmqk}))\right] MDCA(zq,pq,xm)=hHWh[mMkKAhmqkWhmxm(ϕm(pq+Δphmqk))]其中 h , m , k h,m,k h,m,k索引注意力头、模态和采样点。为更好地利用各模态信息,本文分开为 x m x_m xm使用注意力权重 A h m q k A_{hmqk} Ahmqk和采样偏移量 Δ h m q k \Delta_{hmqk} Δhmqk。细节见附录B。
  稀疏聚合:虽然MDCA有线性复杂度,但当感知范围增大时仍是瓶颈。本文提出进一步减小输入查询数的方法,仅使用前 k k k置信度的特征。给定BEV深度分布 D I D_I DI和雷达占用图 O P O_P OP,利用 max ⁡ ( D I , O P ) \max(D_I,O_P) max(DI,OP)作为概率,从 z q ∈ R C × N z_q\in\mathbb{R}^{C\times N} zqRC×N中选择 N k ≪ N N_k\ll N NkN个特征 z q N k ∈ R C × N k z_q^{N_k}\in\mathbb{R}^{C\times N_k} zqNkRC×Nk。这样,复杂度与感知范围无关,利于长距离感知。

3.4 训练目标与任务头

  本文类似BEVDepth,将激光雷达投影到图像上得到深度图,以其为目标训练深度估计网络。类似CenterPoint,预测中心热图。当使用稀疏聚合方式时,在得到目标深度图前过滤边界框外的激光雷达点云,并将3.2节第一式中的Softmax函数替换为Sigmoid函数,使得包含前景物体的特征网格有高概率。

4. 实验

4.1 实验设置

  实施细节:图像分支类似BEVDepth;雷达分支积累了多帧雷达点云,归一化了RCS和多普勒维度;BEV特征图也进行了多帧积累。详见附录C。

4.2 主要结果

  实验表明,CRN能在所有相机单一模态以及相机雷达融合方法中排名第一,且有更快的速率。即使使用小的输入图像尺寸和图像主干网络,CRN也能达到其他方法的性能,且速度能高出一个数量级。CRN还能超过一些激光雷达方法。

4.3 消融研究

  使用三个基准方案:BEVDepth(相机)、CenterPoint(雷达)、BEVFusion(相机+雷达)。
  视图变换:仅使用图像深度估计结果进行视图变换的性能较差,因为深度估计的精度较低;替换为使用雷达占用网格辅助视图变换后,会带来性能下降,因为雷达稀疏而模糊。但将两者结合起来能显著提高性能。对于激光雷达,该方法也有一致的性能提升。
  特征聚合:BEVFusion使用卷积非自适应地融合特征,性能较差,增加融合网络层数也难以提高性能;但本文的方法在仅使用MFA的情况下,就能超过带RVT的BEVFusion的性能。此外,RVT在MFA上的性能提升不如在BEVFusion融合方式上的性能提升显著,这是因为MFA能处理多模态特征的空间不对齐问题。

4.4 分析

  扩大感知范围:将感知范围扩大1倍,即使是多帧积累的激光雷达,在远处的点云也很稀疏,导致性能大幅下降。CRN在30m外就能超过激光雷达的性能,且有更高的FPS。使用稀疏聚合可进一步加速推断,同时保持相当的性能。
  鲁棒性:在单帧输入(不积累)情况下,随机丢弃图像和雷达输入。训练时使用数据增广。CRN不仅在所有输入均有效时能超过BEVFusion,在传感器失效情况下也能保持更高的性能。当完全丢弃雷达模态时(此时网络相当于BEVDepth),BEVFusion的性能相比BEVDepth大幅下降,而CRN仅有略微下降。这一优势来自自适应融合方法。
  推断时间:相比BEVDepth,CRN仅在雷达编码和融合模块引入了可忽略的计算,但性能有极大的提升;CRN使用小尺寸图像输入时,在FPS和性能上均比大尺寸图像输入的BEVDepth更高。使用推断优化方法可能进一步减小延迟。

附录

B. 多模态可变形交叉注意力(MDCA)

  给定查询 z q z_q zq和多模态特征图 x m = { C I , C P ∈ R C × H × W } x_m=\{C_I,C_P\in\mathbb{R}^{C\times H\times W}\} xm={CI,CPRC×H×W},令 q q q索引查询元素, p q ∈ [ 0 , 1 ] 2 p_q\in [0,1]^2 pq[0,1]2 q q q的归一化参考点坐标。则MDCA定义为:
MDCA ( z q , p q , x m ) = ∑ h H W h [ ∑ m M ∑ k K A h m q k ⋅ W h m ′ x m ( ϕ m ( p q + Δ p h m q k ) ) ] \text{MDCA}(z_q,p_q,x_m)=\sum_h^HW_h\left[\sum_m^M\sum_k^KA_{hmqk}\cdot W'_{hm}x_m(\phi_m(p_q+\Delta p_{hmqk}))\right] MDCA(zq,pq,xm)=hHWh[mMkKAhmqkWhmxm(ϕm(pq+Δphmqk))]其中 h , m , k h,m,k h,m,k索引注意力头(总数为 H H H)、模态 { C I , C R } \{C_I,C_R\} {CI,CR}和采样点(总数为 K K K)。 W h ∈ R C × C v W_h\in\mathbb{R}^{C\times C_v} WhRC×Cv是第 h h h个头的输出投影矩阵, W h m ′ ∈ R C v × C W'_{hm}\in\mathbb{R}^{C_v\times C} WhmRCv×C是第 h h h个头、模态 m m m的输入值投影矩阵。 C v = C / H C_v=C/H Cv=C/H W h m ′ W'_{hm} Whm被用在每个模态上,使得MDCA能实现鲁棒融合。 A h m q k A_{hmqk} Ahmqk Δ h m q k \Delta_{hmqk} Δhmqk是输入查询 z q z_q zq通过线性投影得到的,且 A h m q k A_{hmqk} Ahmqk被归一化为 ∑ m M ∑ k K A h m q k = 1 \sum_m^M\sum_k^K A_{hmqk}=1 mMkKAhmqk=1。函数 ϕ m ( p q ) \phi_m(p_q) ϕm(pq)将归一化坐标 p q p_q pq进行缩放,以免两模态有不同的形状。
  MDCA可克服参考点周围的空间不对齐,并使融合是自适应的。

C. 实施细节

C.1 预处理和超参数

  图像分支:使用SECONDFPN将图像主干网络的输出拼接到统一尺度。深度空间被均匀离散化。雷达点投影到图像上并在图像视锥坐标系内体素化后,使用SECOND和SECONDFPN进行特征提取和占用图生成。

C.2 训练设置

  图像主干进行了预训练。
  图像和雷达的透视图使用了相同的缩放、裁剪、水平翻转数据增广。随机旋转对RVT的高度压缩会有不利影响,因此没有使用。
  BEV增广使用随机X/Y轴翻转,全局旋转和缩放。GT采样增广未被使用。

C.3 消融研究的基准方案

  BEVDepth和CenterPoint均未使用类别平衡的分组和采样策略(CBGS)和GT采样。对于BEVFusion,本文使用BEVDepth获取图像BEV特征,而非原始的LSS。

C.4 长距离感知的细节

  扩大感知范围相应地增加了获取的BEV特征图大小(未改变BEV分辨率)。
  训练和测试时均没有过滤掉不含点的真实边界框。

D. 额外的实验结果

D.1 设计决策

  时序帧:BEV特征输入到BEV主干网络前,通过通道拼接和卷积聚合积累多帧BEV特征。由于无需时序输入生成BEV特征图,故该操作不会增加延迟。
  实验表明,多帧BEV特征图能显著提升mAP,mATE和mAVE。但mAOE在此过程中不稳定。
  稀疏聚合:使用稀疏聚合能在少量降低性能的同时大幅提高推断速率。相比mAP,其他的TP指标下降更大,可能是由于相比于分类网络,回归网络更难以从稀疏分布的BEV特征中回归物体属性。

D.2 天气和光照分析

  激光雷达在雨天产生的噪声,或图像在夜间的低亮度使得激光雷达或图像单一模态的方法检测比较困难。但CRN在各种天气和光照下相比图像单一模态方法均有一致的大幅性能提升,表明本文方法的鲁棒性。

D.3 逐类分析

  相比BEVDepth,CRN在金属类别或常见类别有显著的性能提升。在非金属类别上,相比其余雷达图像融合方法,CRN的性能提升也更加显著。这可以归功于CRN的融合模块。

E. 可视化

  可视化表明,雷达的融合可帮助检测被遮挡物体或低亮度条件下的物体。无雷达检测的物体也能通过图像检测到。但在物体属于稀有类别且存在雷达检测时,可能会导致误检。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/10183.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C#基础复习

语句 目录 语句 switch: 跳转语句 标签语句 标签: 标签语句的作用域 goto语句 using 语句 资源的包装使用 using 语句示例: 多个资源和嵌套 语句是描述某个类型或让程序执行某个动作的源代码指令 块在语法上算作一个单条嵌入语句。任何语…

电脑无法正常关机?点了关机又会自动重启

“真木马”相信不少朋友遇到过电脑关机自动重启现象,一点关机,但随后电脑有会进入重启状态,就是一直不会停,属实是很难崩。 目录 一、问题症状 二、问题原因 三、解决方案 方法一: 1.关闭系统发生错误时电脑自动…

企业数字化转型全是坑?这几篇数字化转型成功案例,减少70%损失

这篇给大家整理了200企业数字化转型案例合集,涵盖了制造、建筑、教育、零售、互联网等10行业的大中小型企业数字化转型思路,希望对大家有所帮助。 案例全部整合在这篇文章中,点击即可查看>>数字化干货资料合集! 01 首先&…

C++编程法则365条一天一条(359)认识各种初始化术语

文章目录Default initialization默认初始化Copy initialization拷贝初始化Aggregate initialization聚合初始化Direct initialization直接初始化list_initialization列表初始化value_initialization值初始化参考: https://en.cppreference.com/w/cpp/language/copy_…

项目打包发布流程

---》》》项目打包发布 1.编译并构建项目 2.部署 npm i npm run build scp2:需要写代码 ---》》》 后续有空更新:赋几个链接: Jenkins官网 nullhttps://www.jenkins.io/zh/一文详解Jenkins的安装与配置Jenkins是一个基于Java开发的开源…

ERROR:org.apache.hadoop.hbase.PleaseHoldException: Master is initializing错误

一、问题 重新安装hbase后,在hbase shell中查看所有命名空间时,出现了ERROR:org.apache.hadoop.hbase.PleaseHoldException: Master is initializing错误。 二、方法 1、root用户下,关闭hbase stop-hbase.sh 2、执行以下命令删除HDFS下的hb…

深度学习环境配置超详细教程【Anaconda+PyTorch(GPU版)+CUDA+cuDNN】

深度学习环境配置 入门深度学习,首先要做的事情就是要搭建深度学习的环境。不管你是Windows用户,Mac用户还是Ubuntu用户,只要电脑配置允许,都可以做深度学习,毕竟Windows、Mac和Ubuntu系统都可以进行深度学习环境的搭…

惊呆了,2小时我就学会了Charles抓包的详细教程

目录 一、什么是Charles 二、下载Charles 三、设置Charles代理 四、配置设备代理 五、抓包操作 六、常见问题及解决方法 抓包不到某些应用程序 Charles抓包后网站出现异常 七、总结 一、什么是Charles Charles是一个跨平台的HTTP代理服务工具,可以用来查看…

软件测试工作主要做什么

随着信息技术的发展和普及,人们对软件的使用越来越普及。但是在软件的使用过程中,软件的效果却不尽如人意。为了确保软件的质量,整个软件业界已经逐渐意识到测试的重要性,也有越来越多的小伙伴加入了软件测试这个行业中来。软件测…

从FPGA说起的深度学习(六)-任务并行性

这是新的系列教程,在本教程中,我们将介绍使用 FPGA 实现深度学习的技术,深度学习是近年来人工智能领域的热门话题。在本教程中,旨在加深对深度学习和 FPGA 的理解。用 C/C 编写深度学习推理代码高级综合 (HLS) 将 C/C 代码转换为硬…

ServletAPI详解(四)-HttpServletResponse

我们来看第三个方法,HttpServletResponse 在servlet运行原理中提到,servlet代码中的doXXX方法的目的就是根据请求计算响应,然后将响应数据设置到HttpServletResponse对象中,然后 Tomcat 就会把这个 HttpServletResponse 对象按照 HTTP 协议的格式, 转成一个字符串, 并通过 Soc…

Linux Shell 实现一键部署二进制Rabbitmq

rabbitmq 前言 RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代…

MPC的560x系列的运行模式的介绍

一、模式简介 1、运行模式 一共11种模式,分别为RESET、DRUN、SAFE、TEST、RUN0、RUN1、RUN2、RUN3、HALT、STOP、STANDBY。其中RESET、DRUN、SAFE、TEST是系统工作模式,用户不用个特别关系,而后面几种是用于经常使用到的工作模式。 RESET&a…

Linux搭建docker

1. 查看系统的内核版本 [rootwide ~]# uname -r 3.10.0-1160.el7.x86_642. 将yum更新到最新版本 [rootwide ~]# yum upate -y Complete!3. 安装Docker所需的依赖包 [rootwide ~]# sudo yum install -y yum-utils device-mapper-persistent-data lvm2 Loaded plugins: fastes…

MyBatis多表查询+动态sql

文章目录MyBatis多表查询1. 多表一对一查询2. 多表一对多动态SQL1.\<if\>标签2.\<trim\>标签3. \<where\>标签4.\<set\>标签5. \<foreach\>标签MyBatis多表查询 在全局配置文件中中设置MyBatis执行日志 mybatis:configuration:log-impl: org.a…

hadoop使用MapReduce统计单词出现次数案例

前言 前面的文章已经展示了如何在windows上传文件到hdfs&#xff0c;上传后如何简单的做统计&#xff0c;本文展示一下。上传文件到HDFS链接 这里我们做一个案例&#xff0c;对一个上传到HDFS的文档中统计good出现的次数。 文件内容如下 这里我使用的是【上传文件到HDFS链接…

南方猛将加盟西方手机完全是臆测,他不会希望落得兔死狗烹的结局

早前南方某科技企业因为命名的问题闹得沸沸扬扬&#xff0c;于是一些业界人士就猜测该猛将会加盟西方手机&#xff0c;对于这种猜测可以嗤之以鼻&#xff0c;从西方手机以往的作风就可以看出来它向来缺乏容纳猛将的气量。一、没有猛将的西方手机迅速沉沦曾几何时&#xff0c;西…

linux服务器禁止ping命令,linux服务器禁ping如何解除

linux服务器禁止ping命令&#xff0c;linux服务器禁ping如何解除 我是艾西&#xff0c;在我们搭建网站或做某些程序时&#xff0c;不少人会问禁ping是什么意思&#xff0c;怎么操作的对于业务有哪些好处等&#xff0c;今天艾西一次给你们说清楚。 禁PING的意思是&#xff1a;不…

《花雕学AI》12:从ChatGPT的出现看人类与人工智能的互补关系与未来发展

马云说道&#xff0c;ChatGPT这一类技术已经对教育带来挑战&#xff0c;但是ChatGPT这一类技术只是AI时代的开始。 谷歌CEO桑德尔皮猜曾说&#xff1a;“人工智能是我们人类正在从事的最为深刻的研究方向之一&#xff0c;甚至要比火与电还更加深刻。” 360周鸿祎认为&#xf…

Java Web 实战 15 - 计算机网络之网络编程套接字

文章目录一 . 网络编程中的基本概念1.1 网络编程1.2 客户端(client) / 服务器(server)1.3 请求(request) / 响应(response)1.4 客户端和服务器之间的交互数据1.4.1 一问一答1.4.2 多问一答1.4.3 一问多答1.4.4 多问多答二 . socket 套接字2.1 UDP 的 Socket API2.1.1 引子2.1.2…
最新文章