点云全景分割学习笔记

panoptic polarnet 

模型52.5M

GitHub - edwardzhou130/Panoptic-PolarNet: Implementation for Panoptic-PolarNet (CVPR 2021)

以下内容转自:

panoptic polarnet 笔记_AIchiNiurou的博客-CSDN博客

1 intro
三维扫描数据的处理与分析作为自动驾驶、机器人等应用的关键环节,近年来在计算机视觉和深度学习领域受到越来越多的关注。
摘要全景图像分割是近年来在图像领域[20]中提出的一个新问题,它在单一训练体系结构中对实例分割和语义分割提出了新的挑战。
随着最近新的LiDAR点云数据集[2,5,13]的引入,包括像素语义标签标注和对象标注,现在我们也可以在3D扫描数据中探索这个问题

根据定义,Panoptic分割要求我们识别事物类中的点的类标签和实例id,并且只识别事物类中的stuff前景类别,背景及其他things类别忽略。
为了解决这个问题,首先要回答的问题是:为了获得一个全视场分割的数据,需要哪些信息?
它可以是所有点的语义标记和事物类的实例聚类,也可以是事物类的实例分割和剩余事物类的类标记。
因此,这两种可选的设计将导致两种不同类别的全景分割,称为无建议和基于建议,前者改编自语义分割网络[28],后者改编自对象检测网络[16]。
【28】 Jonathan Long, Evan Shelhamer, and Trevor Darrell. Fully convolutional networks for semantic segmentation. In CVPR, 2015. 1
【16】Kaiming He, Georgia Gkioxari, Piotr Dollar, and Ross Gir- ´shick. Mask r-cnn. In ICCV, 2017.

二维图像全景分割面临两个主要问题。
首先,基于提议的片断实例独立在每个单独的对象提议。
这样的方法需要额外的架构修改[26,51]来补偿提案中重物碰撞的影响。
其次,语义分割和实例分割通常在两个独立的预测头中处理,以便为每个任务定制专用网络的设计。
然而,这可能不可避免地引入潜在的冲突或冗余信息,因为这两个任务显然具有共同的特征。
例如,在基于提议的方法中,语义头和实例头可以在相同像素处产生不同的标签预测。
在无roposal方法中,在实例头中学习到的特征与类标签有显著的相关性。
这两种情况最终都会导致推理效率低下

另一方面,3D全景分割基本上处于起步阶段,仍然是一个开放的研究问题。
它主要是由LiDAR点云处理驱动的,应用于自动驾驶汽车、自主机器人导航和环境地图,所有这些通常都需要实时处理。
另一方面,与传统的计算机视觉三维数据相比,激光雷达点云在三维空间中不规则采样。
3D数据的性质、对实时处理的需求以及安全保障(如自动驾驶汽车)所需的精度水平方面的这些差异,显然正在创造新的挑战,鼓励新的创新解决方案。
这些挑战促使我们寻找一个更合适的架构,考虑到激光雷达数据的独特特性,有效地解决了全光学分割的预测冲突(实例与类),并实现实时或接近实时的速度,而不影响精度

考虑到速度的限制,无提议方法自然似乎是一个更有利的选择,因为它们被证明在2D情况下的计算时间中执行得更好。
因此,从主干语义预测网络[56]开始,我们的第一个目标是将其与类不可知的实例聚类网络集成。
我们假设激光雷达点云中的大多数类对象在投影到xy平面时是可分离的。
实例可分性意味着,离散BEV表示[47]非常适合于激光雷达点云实例聚类。
因此,我们也可以使用PolarNet的相同网络来生成判别特征来分离BEV中的实例。
基于这些观察和假设,我们提出了一个在离散BEV地图上同时学习语义和实例特征的全景分割框架。
因此,我们遵循PolarNet[56]骨干网的设计来生成3D语义预测,并在其上使用一个受Panoptic-DeepLab[7]启发的轻量级2D实例头。
从语义头和实例头的预测,然后通过多数投票融合创建最终的全景分割。
这就产生了一种高效的无提议全景分割网络设计,我们称之为全景极谱网
【7】Bowen Cheng, Maxwell D Collins, Yukun Zhu, Ting Liu,Thomas S Huang, Hartwig Adam, and Liang-Chieh Chen.Panoptic-deeplab: A simple, strong, and fast baseline for bottom-up panoptic segmentation. In CVPR, 2020


与PolarNet相比,我们的实例分割头只引入了0.1M参数,推理时间只增加了0.027s。我们的贡献总结如下
1 我们提出了一个考虑到激光雷达数据和应用的特定性质的模型,以构建一个无提议的激光雷达全景分割网络,可以有效地聚类实例在语义分割之上。

2 现有的全貌分割网络通常使用两个完全独立的解码模块进行语义和实例分割,并依赖一个注意模块来连接学习到的信息,而我们的网络共享解码层,允许在特征提取级别进行早期融合。这种早期融合策略有两个重大影响:(1)减少了网络之间的冗余,提高了计算效率;

3 在计算负荷较小的情况下增加PQ测度。针对现有的基于proposal的全景分割方法存在类和实例预测重叠的问题,我们提出了一种不考虑proposal的设计方法,并对实例头进行了不带包围框标注的训练,避免了类预测的冲突。

4 我们介绍了两种新的点云数据增强方法,可以应用于任何其他的激光雷达分割网络。

5 实验表明,我们的方法在SemanticKITTI和nuScenes数据集上以更小和接近实时的延迟优于强基线,如图1所示。

2 related works
2.1 基于图像的全景分割
目前的二维全视域分割方法通常将全视域分割分为两个子问题:语义分割和实例分割。
它们在一个单一的网络中进行训练,该网络具有共享的特征编码层和分离的标题层。
根据它们如何准确地分离不同的实例,全景分割方法可以分为自顶向下/基于建议的方法和自底向上/无建议的方法。
自顶向下方法通常使用Mask R-CNN[16]先获取每个对象的实例掩码,然后用语义分割预测填充其余区域。
该设计虽然给出了可靠的实例分割结果,但需要额外的方法来解决实例重叠以及实例与语义预测之间的冲突。
刘等人提出了一个空间排序模块,对重叠的掩模进行排序。
UPSnet[51]引入了一个全景头,通过添加一个未知的类标签来解决实例和语义预测之间的冲突。
EfficientPS[31]提出了一个全景融合模块,该模块根据实例头和语义头的信心动态地适应融合。
最近的研究也关注于设计端到端训练[26,51]或连接语义学习和实例学习的注意模块[24,50,6]。
相反,自底向上方法通常先进行语义预测,然后将其与类不可知的实例分割相融合。
第一个自底向上的方法,DeeperLab[54],建议使用边界框角和中心分隔实例。
Panoptic-DeepLab[7]通过预测实例中心和偏移进一步简化了这种分组方法。
SSAP[10]使用级联图分区从像素对关联金字塔分割实例

2.2激光点云目标检测和语义分割
与传统的3D点云数据相比,LiDAR点云本质上是2.5D数据,因为它是对现实世界的透视投影。这导致三维几何空间中点的分布稀疏且不平衡。此外,大多数LiDAR点云任务针对的是自动驾驶场景,这为传统点云方法[37,38,35]的处理创造了更大的数据量。除了直接学习功能的级别(41、45、18)或voxelized空间[59岁,52],研究激光雷达点云也使用投影空间像BEV”(23,53,34)或球面投影/范围图像(36,48,49,30,8],有时多个上述观点的融合(58,43)。
与二维目标检测方法一样,激光雷达点云目标检测方法也分为基于提议和无提议两种。基于提议的方法[59,41,52]首先从编码的特征生成区域提议,然后使用另一个head来选择和细化对象包围框,而无提议的方法通过投票聚类[35]或关键点/中心估计[55]直接预测对象。
对于分割问题,研究人员更加注重局部和全局上下文的有效提取和恢复。KPConv[45]和RandLA[18]提出使用核点卷积和局部特征聚合模块代替编码器-解码器结构中的传统卷积层,直接对点云进行操作。然而,它需要一个耗时的预处理来构建图。
许多其他方法[48,8]选择使用二维卷积对二维点投影上的点云进行分割。Rangenet++[30]和KPRNet[21]引入了额外的KNN和对齐处理,以更好地从投影视图恢复标签到原始点云。

PolarNet[56]将点云编码为极性BEV,以补偿物理空间中点的不平衡分布
【35】Charles R Qi, Or Litany, Kaiming He, and Leonidas J Guibas. Deep hough voting for 3d object detection in point clouds. In ICCV, 2019
【55】Tianwei Yin, Xingyi Zhou, and Philipp Krahenb ¨ uhl. Center-based 3d object detection and tracking. In arXiv, 2020
【30】Andres Milioto and C Stachniss. RangeNet++: Fast and accurate LiDAR semantic segmentation. In IROS, 2019

2.3 点云全景分割
作为一项新兴的任务,激光雷达全貌分割还没有得到很好的研究。然而,许多研究者已经将实例分割和语义分割相结合,探索了室内点云全景分割。它们中的大多数[46,22,33,27]使用discriminative loss 鉴别损失[9]来学习集群实例的嵌入特征空间。

Zhou等人的[57]从从语义分割中聚类的区域建议中提取实例分割。SemanticKITTI[2]通过结合现有的最先进的目标检测和语义分割网络,实现了第一个全光分割LiDAR数据集的基准测试。MOPT[19]附加一个语义头到Mask R-CNN生成范围图像的全景分割。Milioto等人[29]提出首先解决激光雷达点云全景分割对距离图像,然后通过三线性上采样将其恢复到点云水平

3 全景极坐标鸟瞰图分割网路
如图2所示,我们的Panoptic-PolarNet由以下四个部分组成:
(1)一个网络Polar BEV encode 将原始点云数据编码为一个固定大小的二维polar BEV表示,
(2)共享encoder-decoder骨干网络,
(3)两个独立的语义分割和实例分割,(语义分割可以给出前景mask,再和instance feat融合成为全景分割图)
(4)融合步骤合并上述预测到最后一个展示全景的分割结果。

3.1 任务定义
给定一组点P = {(x, y, z, r)n|n{1,…, N}},其中(x, y, z)是相对于LiDAR扫描仪的参考坐标系的三维坐标,r是反射强度,一组ground truth类标签CGT = {ln| N{1,…, N}}, LiDAR点云语义分割任务的目标是为点P预测一组独特的类标签Cp(可以是多个实例),使其与CGT的差异最小化。全景分割任务扩展了这个问题,要求属于不同实例的点在某些类中有不同的ID实例标签,例如汽车、自行车和人。其余的类是stuff类,它们不需要详细的分离,并且在所有点之间共享相同的标签。

self.sem_label = label & 0xFFFF # semantic label in lower half,与运算保留低16位,语义标签类别34
self.inst_label = label >> 16 # instance id in upper half,向右移位16,实例标签,在本章图中的实例ID类别

3.2 Polar BEV 编码
要处理包含随机大小点的点云,我们需要通过投影和量化创建固定大小的表示。
我们使用BEV有两个主要原因。
首先,BEV在计算成本和准确性之间进行了权衡,使我们能够使用更高效的2D卷积网络来处理数据。
其次,由于在城市场景中物体很少沿着z轴重叠,BEV是经验上最适合物体检测的投影[47]。
我们也用极坐标而不是传统的笛卡尔坐标来表示这些点,以平衡点在不同范围中的分布[56]。
极坐标使神经网络有更好的潜力去学习靠近传感器位置的鉴别特征,并将量化造成的信息损失最小化

我们采用Polarnet BEV编码器设计,更具体地说,我们首先将点云数据根据polar BEV map中的位置转换

其中K为输入特征维数,H和W为BEV map的网格大小,N为每个BEV网格中的点数。
接下来,我们通过一个简化的PointNet[37]编码这个点云,它只包含MLP。然后,在每个BEV网格上应用一个最大池化层,创建一个固定大小的表示M R H W C,其中C是特征通道。我们在实验中使用C = 512

3.3 语义分割
将LiDAR点云数据编码成特征矩阵M后,大多数二维语义分割骨干网络都能够对其进行处理。
我们跟随PolarNet使用带有4个编码层和4个解码层的Unet[39]作为骨干网。
不同于一般使用两个完全独立的解码模块进行语义和实例分割的全视域分割网络,我们的网络共享其中的前三个解码层。
我们的语义头在每个像素Cp 属于Z( Z H W)上生成多个预测,这些预测后来被重塑为3D体素,沿着Z轴在不同高度上分开标签。我们在训练过程中计算体素水平的损失,每个体素的基础真相标签是由同一体素内的点数的多数投票决定的

3.4 全景分割
根据[20],在二维图像全景分割的一个大问题是,当碰撞发生时,例如两个人相邻站立时,很难有效地分离实例。
基于两个假设,我们假设我们可以绕过激光雷达数据的这一挑战。
首先,物体很少在3D空间中碰撞,即使它们的蒙版在2D投影中重叠。
其次,城市场景激光雷达点云中的物类物体在从三维空间投射到xy平面上时仍然是可分离的。
这样的主张也得到了[47]的支持,他们发现相同的目标检测网络在BEV中比2D投影有更好的性能。
这表明,BEV表示不仅具有提高性能的潜力,而且可以将激光雷达点云全景分割中的实例聚类问题简化为二维问题。
因此,我们可以使用PolarNet的相同网络来生成判别特征来分离BEV中的实例

我们遵循PanopticDeepLab[7]中的实例头部设计来预测每个BEV像素的中心热图和到对象中心的偏移量。
中心点最近的像素被组合在一起。
与其他自顶向下的方法相比,这种自底向上的设计只提供类不可知的实例分组。
这允许我们避免类预测和训练实例头的冲突,而不使用包围框注释。
在训练阶段,我们通过围绕每个实例的质心的二维高斯分布来编码地面真中心图。
对于BEV地图中的每个像素p,热图是Hp = maxexp ((p ci) 2 2σ2),其中ci是极BEV坐标中一个实例的质心

融合
为了合并3D语义分割和2D实例分组预测,我们提出了如图2所示的融合步骤。
首先,从非最大抑制后的热图预测中选择前k个中心。
接下来,我们使用语义分割预测来创建一个前景蒙板,其中在一个BEV像素上至少检测到一个事物类。
然后,前景中的像素根据最小距离d(p, ci) =k p +偏移§ ci k2到k个中心之一的距离组合在一起。
最后,根据语义分割概率P(v): Li = argmaxP v Gi P(v),使用多数投票方式为BEV中的每个组Gi分配一个唯一的实例标签L,在语义分割头中的事物类预测。

所有这些操作都是在GPU中实现的,占用的计算时间很少

3.5 数据增强
实例增强
实例增强:实例级的训练数据增强已被证明是LiDAR目标检测的一项重要技术[23,15],而不会增加推理计算成本。
传感器如何采样实例的点是由传感器的角度间隔,相对姿态,以及实例到传感器的距离决定的。
我们的实例增强的目的是在不改变实例点的投影属性的情况下增加数据的方差。
我们将其归纳为以下三个步骤:(1)实例过采样:从整个训练集中随机选取5个实例,粘贴到当前的训练扫描中。
每个类别被选中的概率与它的点分布比的倒数成比例。
导入的点与它们的源保持相同的相对坐标和反射值。
(2)实例全局增广:这里的目标是找到一个变换来改变实例在xy平面上的位置,而不改变它在传感器上的投影。
保留投影的需要将转换缩小为在中心上旋转或在通过中心的某个视图平面上反射。
我们将这两个转换应用到每个实例,每个转换有20%的可能性。
(3)实例局部增强:我们还对每个实例进行小的独立平移和旋转,作为测量噪声。
我们从正态分布N(0,0.25)采样平移[x, y, z],从均匀分布U(20/π, +20/π)采样旋转角度θ。

点云自对抗剪枝:
受YOLO-v4[4]的启发,我们也在训练几乎融合后的点云上使用了自对抗剪枝。
自我对抗剪枝的思想是通过网络本身找到最有影响力的点。
这些点可能是噪声点或关键特征点。
通过在训练过程中忽略这些点,我们强制网络从整体点云中学习更多的一般特征,而不是过度拟合到一些特定的几何模式。
更具体地说,我们对每批输入数据使用两个向前向后循环。
我们使用梯度在第一个前向后循环中选择那些影响很大的点,并将改变的数据提供给第二个前向后循环,在忽略这些点后更新网络权值。
与[32]相似,我们考虑梯度方差作为Fisher信息矩阵的对角线,它表示输入对全视损失的重要性。
在实验中,根据验证结果,我们只删除了前1%的分数。

可见性特征:
可见性是绘图问题中常用的概念,通过光线投射来创建环境的占用地图。
最近,Hu等人在检测问题中加入了可见性,以丰富点云的体素表示。
给定激光雷达点云中的一点(x, y, z),沿同一方向α(x, y, z)的空间可分为可见光0 < α < 1和闭塞α > 1。
然而,计算整个3D空间的可见性需要遍历所有点,这通常在训练前进行离线预处理。
由于z轴的范围小得多比另两个轴激光雷达点云,我们近似这遍历每个点(dθ,z), d和θ的距离和角度在极坐标,的空间(αdθ,z)可见如果0 <α< 1和阻挡如果α> 1。
因此,我们可以有效地计算每个体素在极坐标下的可见性,同时在训练过程中对实例数据进行增强。
我们将可见性特性与极性BEV编码器生成的特性表示连接起来,然后在我们的实现中将其馈送到主干网络中

4实验
评价指标
PQ = SQ * RQ
全景分割质量 = 语义分割质量(所有TP的平均Iou) + 识别质量(TP/(TP+0.5TN+0.5FP))召回率
TP认定:overlap GT > 0.5

一个点云的推理时间

PQ⭐是只包含stuff的全景分割标准

实施细节
following Polarnet 离散3D空间到圆柱空间 grid

实现细节:遵循PolarNet[56]的相同配置,我们将[distance: 3 50m, z: 3 1.5m]内的3D空间离散到SemanticKITTI中的[480,360,32]体素。
我们在点质心周围的±3* 5窗口中生成了中心预测的地真热图,并在全光融合过程中相应使用核尺寸σ = 5,阈值0.1,k = 100的NMS。
与SemanticKITTI相比,nuScenes使用的激光雷达传感器包含32束而不是64束。
此外,nuScenes的每次扫描平均有34720点和34个实例,而SemanticKITTI的每次扫描平均有104452点和5.3个实例。
因此,对象点在nuScenes数据集中更加稀疏。
因此,我们将最小值为20点而不是50点的实例作为全视分割评估的有效实例。
我们使用与SemanticKITTI中相同的实现设置来训练Panoptic-PolarNet在nuScenes中,除了我们将3D空间范围更改为[distance: 0 ~ 50m, z:-5 ~ 3m]。

设λhm = 100, λos = 10。
除了实例增强,在训练过程中,我们还使用了数据增强,它沿着x、y和x + y轴随机反映一个点云,并围绕Z轴随机旋转点云。
我们在每个上一层的末尾应用dropblock[14]来进一步规范所提议的全景北极网的训练。
除非特别提到,所有超参数(每帧裁剪的点的百分比等)都在验证数据集中进行调整

4.4 结果


表1显示了PanopticPolarNet和SemanticKITTI测试拆分基线之间的比较。
我们的方法在PQ方面比最佳基准高出1.4%,同时具有接近实时的推理速度,为LiDAR全光分割设置了新的最先进的性能。
值得注意的是,与其他先进的激光雷达目标检测器相比,我们的方法对物体类有了显著的改进。
我们将我们卓越的实例预测归功于架构设计和扩展方法。
另一方面,stuff类的结果与语义分割有非常密切的关系。
尽管如此,我们仍然能够取得比最佳的基线组合方法更好的性能,因为在所有类之间的分割结果更加均衡。
我们的迷你版Panoptic-PolarNet[320, 240, 32]网格尺寸达到了类似的结果,只需要2/3的推理时间。
关于每门课的更详细的结果将在补充材料中呈现。
我们在表2中展示了SemanticKITTI验证结果。
此外,我们还对Panoptic-PolarNet的不同设置进行了试验,使用了更多的组合基线的变体。
与[56]类似,我们发现极坐标在每个度规上都优于笛卡尔坐标,同时具有较慢的推理时间。
Panoptic-PolarNet的所有三种设置都大大优于最佳基线方法。
我们在表3中报告了对nuScenes的验证集的结果。
在PQ中,我们的方法比联合基线方法的效果好1.1%,但只有一半的时间。
然而,由于实例数量的增加,nuScenes的推理时间略高于SemanticKITTI

4.5消融实验
为了进一步分析每个分量的影响,我们对SemanticKITTI的验证拆分进行了消融研究,如表4所示。
我们开始训练Panoptic-PolarNet,没有任何增强,并使用两个独立的解码网络的语义和实例头。
我们发现,直接共享前三个解码层可以在更小的计算量下将PQ从51.6%提高到52.3%,而不是使用注意模块将学到的信息连接到语义头和实例头之间。
这表明语义头和实例头学习的特征在我们的设置中有很多相似之处。
接下来,我们测试了不同实例增强组件对分割结果的影响。
实例过采样使PQ提高了2.8%,mIoU提高了2.1%,这对扫描中很少出现的类最有利。
另一方面,实例全局增强和局部增强都有改进,并且使用了所有三个实例增强方法给出了最佳的PQ结果。
就PQ而言,自对抗剪枝稍微改进了结果,但有助于稳定语义结果,尤其是对于stuff类。
最后,可见性特性使PQ提高了1.6%。
那些大部分被可见空间包围的类,比如自行车手和摩托车手,从可见性特征中获益最大

表4:Panoptic PolarNet对SemanticKITTI验证分裂的消融研究。
SU, IO, IGA, ILA, SAP, Vis
训练前三层语义头和实例头共享(SU)、实例过采样(IO)、实例全局增强(IGA)、实例局部增强(ILA)、自对抗剪枝(SAP)和可见特征(Vis)共享。


我们还进行了oracle测试,如表5所示,以调查Panoptic-PolarNet的改进空间。
我们在每个实验中替换了语义和实例中的一些预测,并使用相同的融合步骤生成全景预测。
可以看到,我们的heatmap和offset prediction在我们的测试设置中都非常接近ground truth,当两者结合时,与ground truth实例聚类相比,PQ只有1.0%的差异。
相反,ground truth语义预测对结果的影响较大,PQ和mIoU均提高到90%以上。
这与在[7]中发现的提案中最大的瓶颈相匹配,自由全景切分是语义切分。
最后,表5显示,当我们同时使用三个ground truth时,PQ和mIoU分别为96.8%和96.4%。
这表明离散化和投影误差在我们的设置中是相对较小的,也验证了我们的假设,即直接在BEV上分离实例是足够的

速度
我们在表6中报告了Panoptic-PolarNet在不同设置下的详细运行时间和模型大小。
与只解决语义分割的PolarNet[56]相比,我们的方法仅仅增加了参数大小0.1M,预测时间0.02s。
这种不显著的增长反映了我们的方法在一个完善的语义分割网络上生成实例预测的高效率。
推理时差主要来自于融合步长,值得注意的是,如果优化得更好,这部分还有很大的改进空间。
Panoptic-PolarNet和它的迷你版本都可以实时处理激光雷达数据,因为典型的激光雷达传感器的工作速度为10 FPS [12,42]


结论
在本文中,我们提出了一个实时无提议的激光雷达点云全光分割框架panoptic - polarnet。
该方法建立在已建立的语义分割网络的基础上,通过极坐标BEV图上的中心回归来解决实例分割问题。
这种设计高度简化了全光分割的复杂性,在语义分割的基础上只需要微不足道的计算开销,并在semantic kitti和nuScenes数据集上实现了最先进的结果。
我们还提出了一些新的增强方法,可以推广到任何其他激光雷达点云分割方法。
我们希望panoptic - polarnet可以为未来的研究提供一个强有力的基础,并为当前的语义分割方法迁移到全景分割提供一个有用的框架。

Spherical sequeezeSeg net,θ:方位角z上,Φ:水平极角

摘要
全景分割是一种新的挑战,其目的是将实例分割和语义分割统一在一个框架内,同时发挥检测和分割的优点。
然而,在激光雷达点云这一新兴领域中,如何有效地解决全光分割问题仍然是一个有待研究的问题。
本文提出了一种快速、鲁棒的激光雷达点云全光学分割框架,称为panoptical - polarnet。
我们在一个单一的推理网络中使用极鸟瞰视图(BEV)表示学习了语义分割和类别不可知的实例聚类,使我们能够规避城市街道场景中实例之间的遮挡问题。
为了提高网络的可学习性,我们还提出了一种改进的实例增强技术和一种新的对抗性点云剪枝方法。
实验表明,Panoptic-PolarNet在SemanticKITTI和nuScenes数据集上具有几乎实时的推理速度,优于基线方法。
panoptic - polarnet在公共SemanticKITTI全景分割排行榜中取得了54.1%的PQ,在nuScenes验证集的性能领先。
 

猜你喜欢

转载自blog.csdn.net/jacke121/article/details/125214646