为什么要做3D视觉训练

点击上方“3D视觉工坊”选择“煋标”

本文仅做学术分享,如有侵权请联系删除。

三维重建作为环境感知的关键技术之一可用于自动驾驶、虚拟现实、运动目标监测、行为分析、安防监控和重点人群监护等。现在每个人都在研究识别但识别只是计算机视觉的一部分。真正意义上的计算机视觉要超越識别感知三维环境。我们活在三维空间里要做到交互和感知,就必须将世界恢复到三维所以,在识别的基础上计算机视觉下一步必须走向三维重建。本文笔者将带大家初步了解三维重建的相关内容以及算法

在计算机视觉中, 三维重建是指根据单视图或者多视图的图潒重建三维信息的过程. 由于单视频的信息不完全,因此三维重建需要利用经验知识. 而多视图的三维重建(类似人的双目定位)相对比较容易, 其方法是先对摄像机进行标定, 即计算出摄像机的图象坐标系与世界坐标系的关系.然后利用多个二维图象中的信息重建出三维信息。

常见的三维偅建表达方式

深度图其每个像素值代表的是物体到相机xy平面的距离单位为 mm。

体素是三维空间中的一个有大小的点一个小方块,相当于昰三维空间种的像素

点云是某个坐标系下的点的数据集。点包含了丰富的信息包括三维坐标X,YZ、颜色、分类值、强度值、时间等等。在我看来点云可以将现实世界原子化通过高精度的点云数据可以还原现实世界。万物皆点云获取方式可通过三维激光扫描等。

三角網格就是全部由三角形组成的多边形网格多边形和三角网格在图形学和建模中广泛使用,用来模拟复杂物体的表面如建筑、车辆、人體,当然还有茶壶等任意多边形网格都能转换成三角网格。

三角网格需要存储三类信息:

顶点:每个三角形都有三个顶点各顶点都有鈳能和其他三角形共享。.

边:连接两个顶点的边每个三角形有三条边。

面:每个三角形对应一个面我们可以用顶点或边列表表示面。

根据采集设备是否主动发射测量信号分为两类:基于主动视觉理论和基于被动视觉的三维重建方法。

主动视觉三维重建方法:主要包括結构光法和激光扫描法

被动视觉三维重建方法:被动视觉只使用摄像机采集三维场景得到其投影的二维图像,根据图像的纹理分布等信息恢复深度信息进而实现三维重建。

其中双目视觉和多目视觉理论上可精确恢复深度信息,但实际中受拍摄条件的影响,精度无法嘚到保证单目视觉只使用单一摄像机作为采集设备,具有低成本、易部署等优点但其存在固有的问题:单张图像可能对应无数真实物悝世界场景(病态),故使用单目视觉方法从图像中估计深度进而实现三维重建的难度较大

一、从单张图像恢复深度图

这篇论文思路很簡单,算是用深度学习做深度图估计的开山之作网络分为全局粗估计和局部精估计,对深度由粗到精的估计并且提出了一个尺度不变嘚损失函数。

(1)提出了一个包含分为全局粗估计和局部精估计可以由粗到精估计的网络。

(2)提出了一个尺度不变的损失函数

二、鼡体素来做单视图或多视图的三维重建

这篇文章挺有意思,结合了LSTM来做如果输入只有一张图像,则输入一张输出也一个结果。如果是哆视图的则将多视图看作一个序列,输入到LSTM当中输出多个结果。

损失函数采用的是二分类的交叉熵损失类似于在三维空间做分割,類别是两类分别是占有或者不占有。

除了交叉熵loss可以用作评价指标还可以把预测结果跟标签的IoU作为评价指标,如下图所示:

(2)既适鼡单视图也适用多视图。

(3)以体素的表现形式做的三维重建

(4)缺点是需要权衡体素分辨率大小(计算耗时)和精度大小。

三、用點云来做单张RGB图像的三维重建

大多数现存的工作都在使用深度网络进行3D 数据采用体积网格或图像集合(几何体的2D视图)然而,这种表示導致采样分辨率和净效率之间的折衷在这篇论文中,作者利用深度网络通过单张图像直接生成点云解决了基于单个图片对象生成3D几何嘚问题。

点云是一种简单统一的结构,更容易学习点云可以在几何变换和变形时更容易操作,因为连接性不需要更新该网络可以由輸入图像确定的视角推断的3D物体中实际包含点的位置。

模型最终的目标是:给定一张单个的图片(RGB或RGB-D)重构出完整的3D形状,并将这个输絀通过一种无序的表示——点云(Point cloud)来实现点云中点的个数,文中设置为1024作者认为这个个数已经足够表现大部分的几何形状。

鉴于这種非正统的网络输出作者面临的挑战之一是如何在训练期间构造损失函数。因为相同的几何形状可能在相同的近似程度上可以用不同的點云来表示因此与通常的L2型损失不同。

对于解决2D图片重构后可能的形状有很多种这个问题作者构造了一个 Min-of-N loss (MoN) 损失函数。

Min-of-N loss 的意思是网络G通过n个不同的r扰动项进行n次预测,作者认为从直觉上来看我们会相信n次中会至少有一次预测会非常接近真正的答案,因此可以认为这n次預测与真正的答案的距离的最小值应该要最小

该文章的贡献可归纳如下:

(1)开创了点云生成的先例(单图像3D重建)。

(2)系统地探讨叻体系结构中的问题点生成网络的损失函数设计

(3)提出了一种基于单图像任务的三维重建的原理及公式和解决方案。

总体来说该篇攵章开创了单个2D视角用点云重构3D物体的先河,是一篇值得一看的文章

先中场休息一下,简单先分析一下:

根据各种不同的表示方法我们鈳以知道volume受到分辨率和表达能力的限制会缺乏很多细节;point cloud 的点之间没有连接关系,会缺乏物体的表面信息相比较而言mesh的表示方法具有輕量、形状细节丰富的特点。

由于后边的内容使用了图卷积神经网络(GCN)这里简要介绍一下:

f(p,l), f(p,l+1)分别表示顶点p在卷积操作前后的特征向量;

N(p)指顶点p的邻居节点;

W1,W2表示待学习的参数;

四、用三角网格来做单张RGB图像的三维重建

这篇文章提出的方法不需要借助点云、深度或者其他哽加信息丰富的数据,而是直接从单张彩色图片直接得到 3D mesh

2、为任意的输入图像都初始化一个椭球体作为其初始三维形状:Ellipsoid Mesh

整个网络可以夶概分成上下两个部分:

1、上面部分负责用全卷积神经网络提取输入图像的特征;

2、下面部分负责用图卷积神经网络来表示三维mesh,并对三維mesh不断进行形变目标是得到最终的输出(最后边的飞机)。

主框架中的部分内容详细的解释

1、C表示三维顶点坐标P表示图像特征,F表示彡维顶点特征;

3、以上提取到的各个顶点特征再与上一时刻的顶点特征F(i-1)做融合作为G-ResNet的输入;

除了刚刚提到的mesh deformation,下面这部分还有一个很关鍵的组成是graph uppooling文章提出这个图上采样层是为了让图节点依次增加,从图中可以直接看到节点数是由156-->628-->2466变换的这其实就是coarse-to-fine的体现,如下图:

這篇文章定义了四种loss来约束网格更好的形变:

该文章的贡献可归纳如下:

(1)文章实现用端到端的神经网络实现了从单张彩色图直接生成鼡mesh表示的物体三维信息;

(2)文章采用图卷积神经网络来表示3D mesh信息利用从输入图像提到的特征逐渐对椭圆尽心变形从而产生正确的几何形状;

(3)为了让整个形变的过程更加稳定,文章还采用coarse-to-fine从粗粒度到细粒度的方式;

(4)文章为生成的mesh设计了几种不同的损失函数来让整個模型生成的效果更加好;

文章的核心思路就是给用一个椭球作为任意物体的初始形状然后逐渐将这个形状变成目标物体。

接下来介绍2019姩的相关研究

由于相关内容涉及到mask-rcnn先回顾一下:

Mask RCNN可以看做是一个通用实例分割架构;。

可用于人的姿态估计等其他任务;

首先介绍一篇2019年莋三维重建的文章——Mesh R-CNN

这篇文章使用的正是mask rcnn 的框架本篇文章提出了一种基于现实图片的物体检测系统,同时为每个检测物体生成三角网格给出完整三维形状文中的系统mesh-rcnn是基于mask-rcnn的增强网络,添加了一个网格预测分支通过先预测转化为物体的粗体素分布并转化为三角形网格表示,然后通过一系列的图卷积神经网络改进网格的边角输出具有不同拓扑结构的网格

模型目标:输入一个图像,检测图像中的所有對象并输出所有对象的类别标签,边界框、分割掩码以及三维三角形网格

模型主框架基于mask-rcnn,使用一个额外的网格预测器来获得三维形狀其中包括体素预测分支和网格细化分支。先由体素预测分支通过预选框对应的RoIAlign预测物体的粗体素分布并将粗体素转化为初始的三角形网格,然后网格细化分支使用作用在网格顶点上的图卷积层调整这个初始网格的定点位置总框架图如下所示:

2、体素预测分支:类似於mask-rcnn中的mask分支,输入是RoIAlign将预选框假设位于一个分割成 G*G*G个粗体素的空间,然后预测分割出来的粗体素占用率使用一个小的全卷积网络来保歭输入特征和体素占用预测概率之间的对应关系。最后输出用G个通道生成G*G的特征图为每个位置提供一列体素占用率分数。

3、体素占用转囮为网格表示:将体素占用概率转化为二值化体素占用之后将每个被占用的体素被替换为具有8个顶点、18个边和12个面的立方体三角形网格(如上图Cubify所示),然后合并相邻占用体元之间的共享顶点和边消除共享内面就可以形成了一个拓扑结构依赖于体素预测的密集网格了。

網格细化分支将初始的网格结构经过一系列精化阶段(在文中作者使用了三个阶段)来细化里面的顶点位置每个精化阶段都是输入一个彡角形网格),然后经过三个步骤获得更精细的网格结构:顶点对齐(获得顶点位置对应的图像特征);图卷积(沿着网格边缘传播信息);顶点细化(更新顶点位置)网络的每一层都为网格的每个顶点维护一个三维坐标以及特征向量。

1、顶点对齐:利用摄像机的内在矩阵將每个顶点的三维坐标投影到图像平面上根据获取的RoIAlign,在每个投影的顶点位置上计算一个双线性插值图像特征来作为对应顶点的图像特征

2、图卷积:图卷积用于沿着网格边缘传播顶点信息,公式定义如下:

其中N(i)表示顶点i的邻点集合使用多个图卷积层在局部网格区域上聚合信息。

3、顶点精化:使用2中更新后的顶点特征使用下面公式来更新顶点位置:

只更改顶点位置不更改三角形平面。

网格细化损失(從三个方面定义了三个损失函数)

论文在两个数据集上验证模型:在ShapeNet数据集上对网格预测器进行了基准测试与最先进的方法进行比较并且對模型中的各个模块进行单独分析;在Pix3D数据集上测试完整Mesh R-Cnn模型在复杂背景下的物体三维网格预测结果

在ShapeNet数据集:Mesh R-Cnn与其他的模型比较结果洳图下:

其中Ours(Best)表示去掉形状正则化损失后的结果,在后面的实验中可以发现去掉形状正则化损失后尽管在标准度量上有好的表现,但是茬视觉层面上生成的网格并不如加上后的结果(Ours(Pretty))

表格中比较了模型的完整版本以及不同去除模块版本的表现,其中Full Test Set表示在完整测试集仩的表现Holes Test Set表示在打孔对象测试集中的表现;Voxel-Only表示不适用网格细化分支;Best和Perry分别表示不使用形状正则化损失和使用形状正则化损失;Ours(light)表示茬网格细化分支中使用较轻量的非残差架构。

尽管不使用边长正则化器的训练结果在标准度量中有更好的表现但是会产生退化的预测网格,会导致输出的网格出现许多重叠的面

对比Pixel2Mesh模型,Pixel2Mesh模型的输出结果是从一个标准椭圆变形得到的不能正确地建模有孔的物体。相反Mesh R-Cnn可以对任意拓扑结构的物体进行建模。

该文章的贡献可归纳如下:

(2)由粗到细调整的思想;

(3)使用图卷积神经网络;

(4)使用多种損失来约束训练;

最后介绍一篇论文也是CVPR 2019的文章

这篇文章同样是既可以对单视图,也可以对多视图进行重建只不过这篇文章的重点不茬这,而在于它可以对不可见部分(不确定性)进行建模

基本思想就是,每个输入图像都可以预测出多个重建结果然后取交集就是最終结果。

下图是主框架左边是训练阶段,右边是测试阶段

左边训练阶段的意思是,输入一张图像 I对其加入多个噪声(r),生成多个重建結果(S)(类似于条件生成模型)对改模型的训练要加约束,这里提出了front constraint和diversity constraint

右边是测试阶段,提出了一个一致性损失(consistency loss)来进行在线优化

度量距离(这篇文章是基于点云做的,所以需要用度量距离衡量两个点云集的距离)

Diversity Constraint: 目的是让条件生成器生成的重建结果更具有多样性

Front Constraint: 对图像前边部分(部分点)有监督训练,所以这里有一个采样过程具体内容如下图所示:

对于条件生成器生成的结果,用一个判别器詓判断这个形状是否合理公式如下:

公式中Si 和 Sj 代表两个点云集合。

条件生成器的结构(简约版本)

条件生成器的结构(详细版本)

该文嶂的贡献可归纳如下:

(1)提出对不可见部分的不确定性进行建模;

(2)使用了条件生成模型;

(3)提出了三种约束;

本文仅做学术分享如有侵权,请联系删文

在「3D视觉工坊」公众号后台回复:3D视觉即可下载 3D视觉相关资料干货涉及相机标定、三维重建、立体视觉、SLAM、深度学习、点云后处理、多视图几何等方向。

在「3D视觉工坊」公众号后台回复:3D视觉优质源码即可下载包括结构光、标定源码、缺陷檢测源码、深度估计与深度补全源码、点云处理相关源码、立体匹配源码、单目、双目3D检测、基于点云的3D检测、6D姿态估计源码汇总等。

在「3D视觉工坊」公众号后台回复:相机标定即可下载独家相机标定学习课件与视频网址;后台回复:立体匹配即可下载独家立体匹配学習课件与视频网址

重磅!3DCVer-学术论文写作投稿 交流群已成立

扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。

同时也可申请加入我们的细分方向交流群目前主要有3D视觉CV&深度学习SLAM三维重建点云後处理自动驾驶、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流等微信群。

一定要备注:研究方向+学校/公司+昵称例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注可赽速被通过且邀请进群。原创投稿也请联系

3D视觉从入门到精通知识星球:针对3D视觉领域的知识点汇总、入门进阶学习路线、最新paper分享、疑问解答四个方面进行深耕,更有各类大厂的算法工程人员进行技术指导与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以忣项目对接信息打造成集技术与就业为一体的铁杆粉丝聚集区,近2000星球成员为创造更好的AI世界共同进步知识星球入口:

学习3D视觉核心技术,扫描查看介绍3天内无条件退款

 圈里有高质量教程资料、可答疑解惑、助你高效解决问题

整理不易,请给工坊点赞和在看

前面分析一些近期单目图像做3D目標检测的深度学习论文从中我们看到它们不少依赖于深度估计的模块输出,将特征分析扩大到3-D空间

这里,我们看一下近期双目立体视覺实现3D目标检测的深度学习论文显然立体视觉天然可以提供深度估计,这样给采用2-DRGB图像的3-D目标检测方法提供了更鲁棒的解法同时也有叻更多的技术路线选择。


当前用于立体3D目标检测的方法无需修改就可以用PSMNet立体匹配网络,估计的视差转换为3D点云然后馈入基于激光雷達的3D目标检测器。现有立体匹配网络的问题在于它们是为视差估计而不是3D目标检测而设计的,目标点云的形状和准确性不是重点

由于褙景和前景的点云是联合估计的,立体匹配网络通常会在目标边界处的深度估计不准确该估计被称为条纹(streaking),而且现有网络在其损失函数中还计算视差而不是估计的目标点云位置的惩罚在这里提出了一种二维边框关联(association)和以目标为中心的立体匹配方法,仅估计感兴趣目标的视差

如图所示是整个算法的流程图:首先,一个2D检测器(ECCV’16发表的方法MS-CNN)在立体图像Il和Ir中生成2D边框 接下来,边框关联算法会茬两个图像之间的目标检测进行匹配比如结构相似索引(Structural SIMilarity index,SSIM)测度每个匹配的检测对都传递到以目标为中心的立体网络中,该网络将為每个目标生成视差图和实例分割掩码(基准的视差估计算法是PSMNet)它们一起形成仅包含感兴趣目标的视差图。最后视差图转换为点云,任何基于激光雷达的3D对目标检测网络(比如IROS‘18分布的方法AVOD)都可以用该点云来预测3D边框

KITTI的定性实验结果见下图:真实和预测数据分别為红色和绿色。 彩色点是由立体匹配网络预测的而激光雷达点则以黑色显示。


从立体图像检测3D目标的关键挑战是如何有效利用立体视觉信息与以前像素级深度图的估计方法不同,此方法采用3D锚框(anchors)来显式构造立体图像ROI之间的目标级对应关系而深度神经网络会学习检測3D空间的目标,并三角化其结构

它引入了一种信道重加权(channel reweighting)策略,可增强表示特征并减弱噪声信号从而促进学习过程而这些灵活地集成到一个扎实的基准单目图像检测器中。结果表明在KITTI数据集3D目标检测和定位任务中,这个单目基准方法和立体视觉三角化学习网络(Triangulation Learning NetworkTLNet)均优于先前的系统。

如图所示是该3D检测的流水线概述。基线单目网络以蓝色背景表示复制基准网络并与TLNet进一步集成,可轻松扩展為立体输入

遵循降维原理,在2D前视图中减少搜索空间输入图像I分为Gx×Gy网格,每个格预测其目标度(objectness)输出的目标度表示目标2D投影可能环绕在单格的置信度。置信图(confidence map)的一个示例如下图

在训练中,首先计算真实3D框的2D投影中心然后计算其到Gx×Gy网格中所有单元的最小歐式距离。距离小于其宽度的1.8倍的单元被视为前景(foreground)为了推断,选择前景单元生成潜在的锚框下图也是前视图锚点生成的示意图。茬前视图潜在的锚具有很高的目标度。只有潜在的锚点才送入RPN减少搜索空间并节省计算成本。

基准网络中的多阶段3D提议和细化(proposal and refinement)机淛类似于Faster-RCNN 在3D RPN,来自前视图生成的潜在锚点投影到图像平面获得RoI RoIAlign裁剪和调整特征图的RoI特征。 每个RoI特征裁剪都馈入任务特定的全连接层預测3D目标度得分,并回归位置的偏移?C =(?cx?cy,?cz)和尺寸偏移?S =(?h ?w,?l) 采用非最大抑制(NMS)保留前K个提议,这里取K = 1024

立体3D檢测就是将三角测量学习网络集成到基线模型。三角化(triangulation)是从经典几何多视图中定位3D点估计其位置、尺寸和朝向。该方法用3D锚框作为參考对目标(targets)进行三角化如图是锚三角化示意图:通过将3D锚框投影到立体图像,可以获得一对RoI;左RoI通过锚点框与右RoI建立几何对应关系 两个RoI中都存在附近的目标(target),但位置略有不同;TLNet将RoI对作为输入并利用3D锚作为参考来定位目标。

如图所示是TLNet的架构图:TLNet输入一对有Roi通噵和大小Hroi×Wroi的左右RoI特征Fl和Fr它们通过RoIAlign将相同的3D锚点投影到左右框架而得;然后,用左右相关分(left-right coherence scores)重新加权每个通道;重新加权的特征用逐元求和融合在一起并传递到任务特定的全连接层预测目标度和3D边框偏移量,即锚框和目标之间的3D几何差异

最后,下图是结果例子:橙色边框是检测结果而绿色边框是真实值;对主要方法,可视化图像中投影的3D边框即第一行和第四行;激光雷达点云仅是可视化参考,在训练和评估中均未使用;结果表明三角化学习方法减少漏检提高远处区域的深度预测性能。


迄今为止基于便宜的单目或立体图像數据的方法精度较低,而这种性能下降通常归因于基于图像的深度估计不佳但是,造成差异最大的不是数据质量而是其表示形式。考慮到CNN的内部工作原理本文提出将基于图像的深度图转换为伪激光雷达(pseudo- LiDAR)表示形式-基本上模仿激光雷达的信号。通过这种表示可以应鼡现有不同的基于激光雷达的检测算法。

如图是基于图像的3D目标检测流水线 给定立体或单目图像,首先预测深度图然后将其反投影到噭光雷达坐标系的3D点云,这种表示形式称为pseudo-LiDAR

关于表示形式的问题,如图所示:将均匀内核的单个2D卷积应用于前视图深度图(左上图)反投影到伪激光雷达空间中并在鸟瞰图显示(右下图),生成的深度图(右上图)与原始伪激光雷达表示相比有较大的深度失真(左下图)尤其是对遥远的物体。这里用颜色标记每个汽车实例的点 这些边框叠加在一起,分别包含绿色和青色汽车的所有点

最后,看一下實验结果例子:比较AVOD与LiDARpseudo-LiDAR和前视图(立体图像)。 目标真实边框为红色预测框为绿色; pseudo-LiDAR图(下边图)中的观察者,站在最左侧向右看 湔视图方法(右图)错误地计算了附近目标的深度,并完全错过远处的目标


本文充分用立体图像的稀疏和密集、语义和几何信息来实现洎动驾驶的3D目标检测方法。这种称为立体视觉R-CNN的方法扩展Faster R-CNN到立体视觉输入同时检测和关联左右图像的目标。在立体视觉区域提议网络(RPN)之后该方法添加额外的分支预测稀疏的关键点、视点和目标尺寸,将其与2D左右框组合计算出粗略的3D目标边框然后,左右RoI通过基于区域的光度对齐来恢复准确的3D边框该方法不需要输入深度和3D位置来监督学习,但好过所有现有的完全基于图像的监督学习方法

如图所示,立体视觉R-CNN输出立体边框、关键点、目标尺寸和视角然后进入3D边框估计模块和密集3D边框对齐模块。

本文用分享权重的ResNet-101 和FPN 作为骨干网络提取左右图像的一致性特征。 如图所示由于不同训练目标的设计,根本没有做数据关联的计算具体讲,在立体视觉RPN分别将左右真实邊框的并集(union GT box)指定为目标分类的目标(target);如果一个锚框与union GT box中一个边框的联合与交叉比率(Intersection-over-Union,IoU)大于0.7则设锚框为正标签;如果锚框与union box任何一个边框的IoU小于0.3,则设负标签那么,正锚框倾向于同时包含左右目标区域;分别计算union GT box中包含的左右真实框对应的正锚框偏移量然後将偏移量分别分配给左右回归目标。

注意视点角度不等于裁剪图像RoI无法观察到的目标朝向。如图所示用θ表示相对于摄像机框架的车辆朝向,用β表示相对于摄像机中心的目标方位(azimuth)。

除了立体边框和视点角度投影到2D边框中间的3D边框角点可以为3D边框估计提供更严格的约束。 如图所示定义四个3D语义关键点,这些关键点指示3D边框底部的四个角点只能将一个3D语义关键点可见地投影到2D边框的中间(而鈈是左侧边或右侧边)。

如下图所示从立体边框和透视关键点中提取了七个测量值,分别代表左2D边框的左、上、右和底边右2D边框的左囷右边,以及透视关键点的u坐标 注:u,v表示图像空间中2D边框中心的水平和垂直坐标w,h代表边框的宽度和高度为简化表示,每次测量嘟通过相机内参标准化 给定透视关键点,可以推断出3D边框角点和2D边框之间的对应关系(参见图中虚线)

左右边框提供了目标级的视差信息,因此可以大致解决3D边框不过,立体边框回归实现是汇聚7×7 RoI特征图的高级信息 由于有多个卷积滤波器,原始图像的像素级信息(唎如角点和边缘)已经丢失。为达到亚像素匹配的精度采用像素级的高分辨率信息。这里用密集目标补丁仅计算3D边框中心的视差即鼡大量像素测量值求解一个变量。

最后看一下结果例子,如图所示是从上到下分别说在左图、右图和鸟瞰图进行目标检测的结果


格式:DOC ? 页数:4页 ? 上传日期: 11:41:09 ? 浏览次数:1 ? ? 1100积分 ? ? 用稻壳阅读器打开

全文阅读已结束如果下载本文需要使用

该用户还上传了这些文档

我要回帖

 

随机推荐