3D-MiniNet实时LIDAR点云语义分割的深度学习方法整理

3D-MiniNet: 从点云中学习2D表示以实现快速有效的3D LIDAR语义分割(2020)

西班牙Zaragoza大学的研究人员提出的最新3D点云语义分割的深度学习方法,网络分为两大部分,提出新的滑动框搜索球形投影后的“像素点”,接着使用改进的MiniNetV2网络进行分割,然后将带着标签数据的点反投影回3D点云,最后加入后处理过程,网络结构比较清晰。发布的两个不同参数大小的网络在emanticKITTI和KITTI数据集上都刷新了成绩,成为新的SoTA。源码可能会在四月份开源,作者提到实现部分会参照RangeNet++和LuNet的网络。

摘要

LIDAR语义分割为每个由LIDAR测量的3D点分配一个语义标签,这已成为许多机器人应用(例如自动驾驶)的一项重要任务。快速高效的语义分割方法来满足实际应用中的时间和算力的要求。这项工作介绍了3D-MiniNet,这是一种结合3D和2D学习层的LIDAR语义分割新方法。它首先通过新颖的投影从原始点学习2D表示,从3D数据中抽取局部和全局信息。该表示被输入到一个2D全卷积神经网络(FCNN),可产生2D语义分割。然后获得的2D语义标签被重新投影回3D空间,并通过后处理模块进行了增强。模型的新颖之处在于投影学习模块。作者进行了详细的消融研究,显示出模块所设计的每个组件如何对3D-MiniNet的最终性能做出贡献。在SemanticKITTI和KITTI数据集上进行了验证,使用3D-MiniNet-tiny和3D-MiniNet分别刷新3D实时(real-time)分割与点云分割的记录(当前的SOTA),比以前的方法更快,参数效率更高。

I. 前言

机器人自主导航系统使用传感器感知周围的世界,RGB摄像机和LIDAR是常见的必不可少的部件。自主机器人系统的关键组成部分之一是语义分割。语义分割为每个LIDAR点或相机像素分配一个类别标签。这种详细的语义信息对于现实世界中动态场景中的决策至关重要。在自主机器人系统中,LIDAR语义分割为自动机器人提供了非常有用的信息,如SLAM,自动驾驶等任务,尤其是用于识别动态的对象。

因此,这项任务非常需要能够快速有效地提供准确语义信息的点云分割模型,这对于处理3D LIDAR数据尤其具有挑战性。目前存在两类分割方法:

  • Point-based:直接对点云数据进行处理,对于实时系统而言,在高帧数下计算量太大。
  • Projection-based :先将3D信息投影到2D图像中的方法。效率更高,但通常精度较低,因为没有利用原始3D信息。获得计算速度快速,参数量小的语义分割模型是当前的需求也是研究的重点。

受到Point-based和Projection-based方法的启发,本文提出了3D-MiniNet,这是一种新颖的高效的3D LIDAR语义分割方法。 3D-MiniNet首先直接在3D点上执行基于点的操作以学习丰富的2D表示,然后通过快速2D全卷积神经网络计算进行分割。最后,将语义标签重新投影回3D点,并通过一种快速的后处理方法。

该网络的主要贡献是投影学习模块,该模块首先学习对点云进行成组,提取局部和全局特征,并生成学习点云的2D表示。利用在该模块上进行的消融研究,可以显示每个部分如何提高3D-MiniNet的性能。

为了向这个新颖的模块提供3D点的相邻组,作者实现了快速点云近邻搜索,该搜索会生成3D点的结构化组。这些组中的每一个对应于2D表示中的单个像素。为了从这种表示中学习分割,作者使用MiniNetV2(2D分割网络模型)的修改版本。最终在SemanticKITTI基准和KITTI数据集上进行验证。网络的最佳配置在两个基准测试中均获得了比以前的最新技术更高的mIoU,计算速度提升了2倍,参数减少为之前模型的1/12。

在这里插入图片描述

II.相关工作

A.2D语义分割

当前的2D语义分割的state-of-the-art基本全是深度学习方法。2D语义分割架构是从原本用于分类任务的卷积神经网络(CNN)演变而来,只需要在CNN最后添加一个解码器。FCNN为现代语义分割架构开辟了道路。这项工作的作者率先提出对CNN学习到的图片特征进行双线性内插upsample,直到取得输入时的分辨率大小,并计算每个像素的交叉熵损失。另一个早期的方法是SegNet,提出了一种使用unpooling操作作为上采样层的对称编码器-解码器结构。最近的工作通过添加最初在CNN体系结构中提出的用于分类任务的新颖操作或模块,改进了这些早期的分段体系结构。

FC-DenseNet 学习DenseNet使用密集模块。 PSPNet使用ResNet作为其编码器,将金字塔池化模块引入到CNN末尾层中,以学习有效的全局上下文先验。

Deeplab-v3 +是分割效果最好的架构之一,其编码器基于Xception,它利用了深度可分离卷积和空洞卷积,降低了模型参数和计算消耗。

就网络的效率而言,ENet建立了诸如ERFNet,ICNet等后续工作的基础。主要思想是在低分辨率下工作,即快速下采样。 MiniNetV2使用了多次扩展的深度可分离卷积,可以有效地学习局部和全局空间关系。 在这项工作中,我们以MiniNetV2为网络骨干(backbone),并对其进行调整以捕获原始LIDAR点云的信息。

B. 3D语义分割

有两类主要的点云深度学习方法:

1)基于点云的方法

点云的无序性限制了通用的卷积神经网络CNN对点云数据进行处理。 基于点云进行处理的先驱方法和基础是PointNet网络。 PointNet建议通过共享的MLP(多层感知器)来学习到每个点的特征,然后再使用对称函数maxpooling来处理点云的无序性。 后来基于PointNet又提出了许多新的网络结构。 遵循逐点MLP思想,PoinNet ++以分层的方式对点进行分组,并从较大的局部区域中学习。同时作者还提出了一种多尺度分组方法,以应对数据的非均匀性。 相反,还有一些方法遵循卷积思想提出了不同类型的操作,比如将相邻点合并到内核单元中,以便能够执行逐点卷积。还有一些工作采用图网络来捕获点云的基本几何结构,使用有向图来捕获结构和上下文信息。 为此,作者将点云表示为一组互连的超点。

2)基于投影的方法

原始点云数据的不同中间表示形式已用于3D语义分割。 Felix等人证明多视图表示非常有效,作者建议将3D点投影到来自不同捕获视图的几个2D图像中,然后对每个图像独立执行2D语义分割,每个点通过融合来自不同视图的不同重投影得分来计算其标签。这种方法的缺点是需要多次运行神经网络运算,每个视图都要一次。 SegCloud利用体素表示,这是对3D空间进行编码和离散化的一种非常常用的方法。这种方法将3D体素输入3D-FCNN。然后,作者介绍了确定性的三线性插值,将粗体素预测映射回原始点云,并在最后一步中加入应用CRF优化输出。这种体素表示的主要缺点是3D-FCNN对于实时应用程序的执行时间非常慢。 Su等人提出了SPLATNet,它使用了另一种表示形式:四面体晶格表示。这个该方法将3D点云插值到一个四面体的稀疏晶格,然后应用双边卷积层对所表示的占用部分进行卷积。后来提出了LatticeNet 来改进SPLATNet,并提出了其DeformsSlice模块,用于将晶格特征重新投影回点云。到目前为止,允许更有效处理的表示形式是球形表示形式,它是LIDAR语义分段的最常见投影。它是一种2D投影,允许应用2D图像操作,该操作非常快速并且在识别任务上效果很好。 基于SqueezeNet体系结构的SqueezeSeg及其后继改进SqueezeSegV2,都表明通过球面投影,可以完成非常有效的语义分割任务。 Milioto等人的最新工作,将DarkNet架构与基于GPU的后处理方法相结合,与之相比,对于实时语义分割而言,该方法比CRF可获得更好的结果。

与基于投影的方法相反,基于点的方法是直接对原始数据进行操作而不会丢失任何信息。 但基于投影的方法往往更快,更适合于数据的非结构化性质,尤其是对于像LIDAR扫描这样的大型输入,会生成数十万个点。LuNet是结合基于投影的方法和基于点的方法的第一篇著作。 它依赖于离线的点近邻搜索,这使方法对实时应用程序不可行。 此外,它只有一个MLP池操作,只能从原始点学习局部信息。在3D-miniNet中,通过实现基于GPU的快速近邻搜索并集成了一个从原始3D点中学习上下文信息的新颖投影模块,解决了LuNet的缺点。
在这里插入图片描述
通过快速3D近邻搜索算法,输入的M个点(具有 C 1 C_1 个特征)被分为N个点的P组。 每个点都有一个 C 1 C_1 特征向量,该向量在此过程中使用相对于每个组的数据扩展到 C 2 C_2 。 3DMiniNet将对点云组进行处理并预测每个点一个语义标签。 最后加入后处理方法用于完善最终结果。

III. 3D-minNet: LIDAR 点云分割

上图总结了我们新颖,有效的LIDAR语义分割方法。它由三个模块组成:

  • (A)快速近邻搜索;
  • (B)3D-MiniNet,共输入P组,每组N个点,并输出分割后的点云
  • (C)基于KNN的后处理,可优化最终细分。

与基于投影的方法相比,有两个主要问题限制了基于点的模型以实时性任务上的使用:

  • 3D点近邻搜索是必需的,但是使用3D点进行近邻搜索十分缓慢
  • 同样的,在3D点云上进行MLP操作也较慢(如PointNet),特别是与2D卷积方法相比。

这是点云的特性决定的,为了缓解这两个问题,本文的方法包括使用一个快速点近邻搜索代理(见第 I I I . A III.A 介绍)和一个用于最小化基于点操作的计算模块,该模块使用原始3D点作为输入并输出可使用 2D CNN进行处理的2D表示(第 I I I . B . 1 III.B.1 中介绍)。

A. Fast 3D Point Neighbor Search

该方法的第一步是将输入的原始点云投影到 W × H W\times H 的球面投影,将3D点( x , y , z x,y,z )映射到2D坐标( u , v u,v )中,这部分是点云球面投影的通用操作,

( u v ) = ( 1 2 [ 1 arctan ( y , x ) π 1 ] W [ 1 ( arcsin ( z r 1 ) + f u p ) f 1 ] H ) \left(\begin{array}{c} u \\v \end{array}\right)=\left(\begin{array}{c} \frac{1}{2}\left[1-\arctan (y, x) \pi^{-1}\right] W \\ {\left[1-\left(\arcsin \left(z r^{-1}\right)+\mathrm{f}_{\mathrm{up}}\right) \mathrm{f}^{-1}\right] H} \end{array}\right)
对于以上球面投影的的公式是经过标准化后的形式,还有很多其他的变形,其中 f f 是传感器的垂直视场,初始特征数 C 1 = ( x , y , z , d e p t h , r e m i s s i o n ) C_1=(x,y,z,depth,remission)

使用滑动窗口方法在球面投影空间中执行点近邻搜索。 与卷积层类似,通过滑动 k × k k×k 窗口来获得像素组,即投影点。生成的点组没有交集,即每个点仅属于一个组。 此步骤生成 P P 个点组,每个点组 N N 个点( N = k 2 N = k^2 ),其中使用了来自球面投影的所有点( P × N = W × H P×N = W×H )。 在为这些点组提供实际的分割模块3D-MiniNet之前,必须增强每个点的特征。 对于得到的每个点组,我们计算 C 1 C_1 中五个特征的平均值以及每个点相所在组的各个特征平均值,得到相对应的 r r (relative)值。 此外,我们计算每个点与所在点组的坐标均值3D欧式距离。 因此,每个点现在有11个特征:
C 2 = { x , x r , y , y r , z , z r ,  depth, depth r ,  remission, remission r , d E u c } C_2=\begin{aligned} &\left\{x, x_{\mathrm{r}}, y, y_{\mathrm{r}}, z, z_{\mathrm{r}}, \text { depth, depth}_{\mathrm{r}}, \text { remission, remission}_{\mathrm{r}},d_{E u c}\right\} \end{aligned}

B. 3D-MiniNet

3D-MiniNet由两个模块组成,如图3所示。对于论文所提出的投影模块,它利用原始点云并计算2D表示,接着作者使用基于MiniNetV2的高效骨干网络来计算语义分割。
在这里插入图片描述
1)投影学习模块:

此模块的目标是将原始3D点转换为可用于有效分割的2D表示。 该模块的输入是一组3D点组( P × N × C 2 P×N×C_2 ),这些点组是通过在球形投影上进行滑动窗口搜索而收集的,如前面小节所述。
从输入数据中提取以下三种类型的特征(参见图3的左部分),并在最后的模块步骤中将其融合:

  • 局部特征提取器:

    第一个特征是类似PointNet的局部特征提取(图3的投影学习模块的顶部)。 它运行在组之间共享的四个线性层,然后是BatchNorm和LeakyRelu。文中将线性层实现为跨张量的1x1卷积,从而实现了非常高效的计算。

  • 上下文特征提取器:

    第二个特征提取(图3的投影学习模块的中间部分)从这些点中学习上下文信息。该上下文特征提取器的输入是局部特征提取器的第二线性层的输出。将该张量最大化,然后运行快速近邻搜索以获取点组。在这种情况下,使用3×3的滑动窗口分别以1,2,3的不同膨胀率执行三个不同的分组。膨胀率与卷积核具有相同的含义。文中使用零填充和跨度为1来保持相同的大小。每次分组后,执行一次线性化+BatchNorm+LeakyRelu。将这两个特征提取器模块的输出连接起来,并在N维上应用maxpool操作。此maxpool操作使特征沿近邻维度具有更高的响应,相对于近邻维度是阶数不变的。 maxpool操作还使学习对于无点云信息(无点云投影的球面投影坐标)的像素更健壮。

  • 空间特征提取器:

    最后的特征提取操作是内核1×N的卷积层(图3的投影学习模块的底部)。 当存在底层空间结构时,卷积可以提取相对于相邻点的每个点的特征,因为上一步的点组是从2D球形投影中提取的。

  • 特征融合:

    最后,应用了具有自注意模块的特征融合。 它学习将特征空间缩小为指定数量的特征,从而了解哪些特征更为重要。 包括三个阶段:特征提取输出的级联将生成的张量reshape为( W / 4 × H / 4 × C 7 W / 4×H / 4×C_7 ),这是一种自注意操作,再乘以(均值池化+1×1卷积+Sigmid激活函数),具有与输入相同的串联张量,再经过一个1×1卷积层+BatchNorm+LeakyRelu,这是将输出限制为 C 6 C_6 个特征数。 所有实现细节,例如每层的特征数量,均会在后文实验部分说明,并展示了该学习模块的每个部分如何有助于提高3D-MiniNet的性能。

2). 2D分割模块(MiniNet作为Backbone):

一旦前一个模块已计算出 W / 4 × H / 4 × C 6 W / 4×H / 4×C_6 张量,便使用有效的CNN计算2D语义分割(有关详细的视觉描述,参见图3的MiniNet主干)。 作者主要使用FCNN而不是多个MLP层的操作,原因是考虑相比较而言多层MLPs,使用卷积操作的计算更快。

基于MiniNetV2架构建立FCNN。 此处编码器使用 L 1 L_1 层深度可分离卷积和 L 2 L_2 层多重扩张(multi-dilation)深度可分离卷积。 对于解码器,使用双线性插值作为上采样层方式。 它以 W / 4 × H / 4 W / 4×H / 4 分辨率执行 L 3 L_3 深度可分离卷积,并以 W / 2 × H / 2 W / 2×H / 2 分辨率执行 L 4 L_4 。 最后,以 W × H W×H 分辨率进行卷积以获得2D语义分割预测结果。

本文参照MiniNetV2方法,在第二个卷积分支中提取细粒度信息,即高分辨率的底层特征。 第二个分支的输入是球面投影,具体细节在后文的Sect. IV-B部分指定。 作为最后一步,必须将预测的2D语义分割再次重新投影回3D空间。 对于已经投影到球面表示中的点,这是一个简单的步骤,因为只需要分配在球面投影中预测的语义标签即可。 但是,尚未投影到球面中的点(得到的2D坐标可能对应不止一个3D点),他们没有语义标签。 对于这些点,分配了其相应2D坐标的语义标签。 此问题可能导致错误预测,因此需要执行后处理方法以完善结果。

C.后处理过程

为应对非投影3D点的错误预测,本文遵循Milioto等人的后处理方法。 所有3D点都将基于 K K 近邻(KNN)获得新的语义标签。 选择K个最近点的标准不是基于相对的欧氏距离距离,而是基于相对深度值。 此外,基于点的二维球坐标距离缩小搜索范围。 Milioto等人方法的实现是基于GPU的,能够在7ms内运行,从而保持较低的帧速率。

IV. 实验部分

A.数据集

SemanticKITTI基准测试:

SemanticKITTI数据集是一个大规模数据集,为整个KITTI里程表基准测试提供了密集的逐点注释。 数据集包含43000多次扫描,从中可使用21000多个扫描数据(序列00到10)进行训练,其余的(序列11到21)用作测试集。 数据集区分22种不同的语义类别,通过基准的官方在线平台在测试集上评估了19种类别。 由于这是当前最相关,最大的单扫描3D LIDAR语义分割数据集,因此作者对该数据集进行了消融研究和更全面的评估。

KITTI基准:

SqueezeSeg的工作提供了从KITTI数据集的3D对象检测挑战中导出的语义分割标签。 它是一个中等大小的数据集,分为8057个训练数据和2791个验证扫描。

B.设定

a)3D点近邻搜索参数:

对于SemanticKITTI数据集,作者将球面投影的分辨率设置为2048×64(注:2048是(360/水平分辨率),卷积网络中图像大小是2的次数,故设置为2048,64为激光器的数量,这里是64路激光器,故图像宽度为64),同样的对于KITTI,则将分辨率设置为512×64(与以前的网络相同,以便能够进行合理的比较)。然后将4 x 4的窗口大小步幅设置为4,这是保证分组之间恰好没有交集。进行快速点近邻搜索时不设置零填充导致,这样对于SemanticKITTI数据的产生8192组3D点和KITTI数据上产生的2048组。我们的投影模块将接收这些组作为输入,并为SemanticKITTI配置生成学习的表示,分辨率为512×16,对于KITTI生成分辨率为128×16。

b)网络参数:

完整的架构及其所有参数在图3中进行了描述。这里注意一下,作者实际提出了三种不同的配置来评估所提出的方法:3D-MiniNet,3D-MiniNet-small,3D-MiniNet-tiny。每种方法在( C 3 C 4 C 5 C 6 C3,C4,C5,C6 )特征层上对应不同的特征数,分别为:

  • (24、48、96、192)
  • (16、32、64、128)
  • (12、24、48、96)

三个配置在FCNN骨干网络的层( L 1 L 2 L 3 L 4 L1,L2,L3,L4 )的设计分别对应:

  • (50、30、4、2)

  • (24、20、2、1)

  • (14 ,10、2、1)
    N c N_c 是数据集的语义类别数。

c)后处理参数:

对于使用K近邻方法的后处理方法,我们将2D分割时近邻搜索的窗口大小设置为7×7,并将 K K 值设为7。

d)训练过程:

epochs = 500, 针对3D-MiniNet, 3D-MiniNet-small, 3D-MiniNettiny ,batch_size分别设置为 = 3, 6, 8

(由于内存限制而有所不同)。优化器使用随机梯度下降(SGD),其初始学习率为 4 1 0 3 4·10^{-3} ,每个epoch的衰减率为0.99。使用交叉熵损失函数作为模型损失的优化。

L = 1 M m = 1 M c = 1 C ( f t f c ) i y c , m ln ( y ^ c , m ) \mathcal{L}=-\frac{1}{M} \sum_{m=1}^{M} \sum_{c=1}^{C}\left(\frac{f_{t}}{f_{c}}\right)^{i} y_{c, m} \ln \left(\hat{y}_{c, m}\right)

其中,M是点的标签数量,C是类别数。 y c , m y_{c, m} 是点m属于某类c的二进制指示符(取值0或1), y ^ c , m \hat{y}_{c, m} 是CNN预测的点m属于某个类别c的概率。 该概率是通过将soft-max函数应用于网络的输出来计算得到的。 为了解决类不平衡问题,作者使用了SegNet 中所用的中值频率类平衡。 为了平滑最终的类别权重,作者提出应用幂运算 w c = ( f t f c ) i w_{c}=\left(\frac{f_{t}}{f_{c}}\right)^{i} ,其中 f c f_{c} 是类别c的频率,而 f t f_{t} 是所有频率的中值,作者将i设置为0.25。

e)数据增强:

在训练过程中,随机旋转和移动整个3D点云。 作者将所有点云的X和Z值的符号随机反转,并且还删除了一些点。

V. 结果

A.投影模块的消融研究

在这里插入图片描述
投影模块是该论文的新颖之处。本节展示其中的每个部分如何帮助改善学习的表示形式。对于本实验,作者只使用3D-MiniNet-small配置进行。消融研究的结果在表1中记录,测量了每种设置所对应的的mIoU,速度和学习参数。第一行显示了在学习层中仅使用1×N卷积以及在RangeNet中使用的5通道输入( C 1 C_1 )的性能,将其建立为基线(即空间特征提取器)。第二行显示了如果将1×N卷积替换为基于点的操作(即局部特征提取器)的性能。结果表明,MLP操作对于3D点效果更好,但是需要更多的执行时间。第三行结合了卷积和本地MLP操作,结果表明卷积和MLP运算的结合可提高性能,作者认为这是由于每种运算类型学习到的特征类型不同。

注意力模块几乎无需额外的计算工作即可提高性能。它将特征空间缩小为指定数量的特征,从而了解哪些特征更为重要。第五行显示添加上下文特征提取器的结果。稍后也通过卷积通过FCNN学习上下文,但是这里,上下文特征提取器通过MLP操作学习不同的上下文。背景信息通常在语义任务中非常有用,例如,用于区分骑自行车的人,骑自行车的人和摩托车的人。与显示其相关性的其他特征提取器相比,此上下文信息的提升更高。最后,使用相对于点组( C 2 C_2 )的特征来增加每个点的特征数量,也将获得更好的性能,且没有计算时间和参数成本的增加。

B.基准结果

本节介绍了3D-MiniNet的定量和定性结果,并与其他相关工作进行了比较。
在这里插入图片描述
a)定量分析:

表II将本文的方法与几种基于点的方法(第1-6行)和基于投影的方法(第7-12行)进行了比较。 测量每种方法的mIoU,处理速度(FPS)和所需参数的数量。 可以看到,基于点的LIDAR扫描语义分割方法比投影方法慢,很难继续提升性能。 目前诸如Velodyne之类的LIDAR传感器通常以5-20 FPS的速度工作。 因此,当前仅基于投影的方法能够实时处理传感器提供的全部数据量。

从3D-MiniNet的性能来看,它使用的参数减少了12倍,而速度提高了2倍,因此比以前的最新技术提高了近3%。 有趣的是,3DMiniNet-small可以更高效,更快地提供最新性能。 如果可以在效率与性能之间进行权衡,则较小版本的Mininet还将以较高的帧速率获得更好的性能指标。 3D-MiniNet-tiny能够以98 fps的速度运行,并且mIoU仅下降9%(与以90 fps的SqueezeSeg版本的29%相比,下降了46.9%),并且使用的参数更少(参阅3D-MiniNettiny与TangentConv )。
在这里插入图片描述
本文中应用的后处理方法显示出其有效地改善分割结果。这一步对于正确处理球形投影中未包含的点至关重要。如表III所示,对KITTI数据集的扫描具有较低的分辨率(64x512)。 3D-MiniNet还在此数据集上获得了LIDAR语义分割方面的最新技术。与SqueezeSeg版本(+ 10-20 mIoU)相比,我们的方法可获得更好的性能。 3D-MiniNet也比LuNet具有更好的性能。请注意,在这种情况下,我们没有评估KNN后处理,因为KITTI数据集上仅提供2D标签。

b)定性分析:

图4显示了对测试数据进行3D-MiniNet推断的一些示例。由于没有为测试集提供测试依据(评估是在在线平台上外部进行的),因此我们只能显示视觉结果,而无需进行标签比较。请注意,在汽车等相关类别中以及在交通标志等具有挑战性的类别中,我们的方法均获得了高质量的结果。可以预见,最大的困难是区分在具有相似几何形状和结构(例如建筑物和围墙)的类之间进行切换。
在这里插入图片描述

VI. 结论

本文所提出的3D-MiniNet,是一种快速高效的3D LIDAR语义分割的方法。3D-MiniNet先将3D点云投影到二维空间中,然后使用全卷积神经网络学习语义分割。 与常规基于预定义的投影方法不同,3DMiniNet从原始3D点学习此投影,取得出非常出色结果。 消融研究部分也说明该方法的每个部分如何有助于表征的学习。 3D-MiniNet也在SemanticKITTI和KITTI数据集上成为新的SoTA,在实时性和准确性的要求上,都比以往的方法更有效。
1.3D-MiniNet 原文地址
2.3D-MiniNet Github地址

发布了36 篇原创文章 · 获赞 53 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_43199584/article/details/105256192
今日推荐