当前位置: 首页 > 编程日记 > 正文

值得收藏!基于激光雷达数据的深度学习目标检测方法大合集(下)

640?wx_fmt=jpeg


作者 | 黄浴
来源 | 转载自知乎专栏自动驾驶的挑战和发展

【导读】在近日发布的《值得收藏!基于激光雷达数据的深度学习目标检测方法大合集(上)》一文中,作者介绍了一部分各大公司和机构基于激光雷达的目标检测所做的工作,本文是补充的第二部分。

继续介绍一些工作。没想到,这个研究方向很热。


“FVNet: 3D Front-View Proposal Generation for Real-Time Object Detection from Point Cloud”

这是一个称为FVNet的框架,从点云生成3D前视图提议和目标检测。它包括两步:生成前视图提议和估计3D边框参数。

首先将点云投影到圆柱面上以生成保留丰富信息的前视特征图,而不是从摄像机图像或鸟瞰图中生成提议。然后,引入提议生成网络(proposal generation network),从生成的图中预测3D区域提议,并进一步从整个点云中提取出感兴趣的目标。最后提出了另一个网络,用于从提取出的目标点中提取点特征,并在规范坐标中回归最终的3D边框参数。该框架实现了每点云样本处理时间12ms的实时性能。

如图(a)FVNet的概述。由两个子网组成:(b)用于生成3D区域提议的提议生成网络(PG-Net)和用于估计3D边框参数的参数估计网络(PE-Net)。

640?wx_fmt=jpeg

如图是PG-Net架构。顶部是主干网,底部分别显示残余块、卷积块和上采样块的细节。

640?wx_fmt=jpeg

如图显示一个3D边框及其相应的圆柱片段。左:具有维度先验(Pw,Ph)、位置预测(bx,by)和截断距离预测(r1,r2)的3D边框。右:3D空间中的相应圆柱片段,它通过截取具有两个径向距离r1和r2的平截头( frustum)生成。


640?wx_fmt=jpeg

形成圆柱投影的公式是:

640?wx_fmt=jpeg

“Part-A^2 Net: 3D Part-Aware and Aggregation Neural Network for Object Detection from Point Cloud”

本文提出从点云中进行三维物体检测的部件-觉察(part-aware)和聚合神经网络(Part-A^2 Net)。整个框架由部件-觉察阶段和部件聚合阶段两个组成。

首先,部件觉察阶段学习用3D真实(GT)框导出的免费监督同时预测粗略3D提议和准确目标内(intra-object)部件位置。通过设计的RoI-觉察(-aware)点云池化模块对相同提议中预测的目标内(intra-object)部件位置进行分组,从而实现3D提议特征编码的有效表示。

然后,部件聚合阶段学习重新对边框进行评分并基于池化部件位置来细化边框位置。

下图所示,即使当目标被部分遮挡时,所提出的部件-觉察和聚合网络也可以鲁棒地预测目标内部件位置和分割掩码。这样的部件位置可以辅助更准确的3D目标检测。

640?wx_fmt=jpeg

下图是用于3D目标检测的部件-觉察(part-aware)和聚合神经网络(Part-A^2 Net)总体框架。它包括两个阶段:(a)第一个部分,部件-觉察阶段准确地估计目标内部件位置,并通过将原始点云馈送到设计的骨干网络来生成3D提议。(b)第二部分,聚合阶段进行提议的RoI-觉察点云池化操作对每个3D提议的部件信息进行分组,然后利用部件聚合网络根据部件特征和信息对边框进行评分和细化位置。

640?wx_fmt=jpeg

下面介绍稀疏上采样和特征细化块。该模块在基于稀疏卷积的UNet骨干解码器中采用。横向特征和底部特征首先通过稀疏卷积融合和变换。然后通过稀疏逆卷积对融合特征进行上采样。

640?wx_fmt=jpeg

再说RoI-觉察点云特征池化图。由于上述BEV图中显示的模糊性,无法使用先前的点云池化方法恢复原始边框形状。提出的RoI-觉察点云池化方法可以通过保持空体素来编码边框形状,这个只需要跟着稀疏卷积即可。

640?wx_fmt=jpeg

如下图是一些结果展示:

640?wx_fmt=jpeg


“Voxel-FPN: multi-scale voxel feature aggregation in 3D object detection from point clouds”

点云数据中的目标检测是计算机视觉系统中的关键组件之一,尤其是自动驾驶场景。Voxel-FPN,是一种单步3D目标探测器,仅利用LIDAR传感器的原始数据。

核心框架包括编码器网络和相应的解码器,后跟区域提议网络。编码器以自下而上的方式提取多尺度体素信息,而解码器以自上而下的方式融合来自不同尺度的多个特征图,如下所示。

640?wx_fmt=jpeg

下图是VFE框架:体素特征提取。

640?wx_fmt=jpeg

这是RPN-FPN框架图:

640?wx_fmt=jpeg

如图是可视化汽车检测结果:绿色立方体表示真实3D框,红色表示检测结果。

640?wx_fmt=jpeg


“STD: Sparse-to-Dense 3D Object Detector for Point Cloud ”

本文提出了一种两步3D目标检测框架,称为从稀疏到密集的3D目标探测器(STD)。第一步是自下而上的提议生成网络,使用原始点云作为输入,通过使用球形锚点(spherical anchor)为每个点撒种来生成准确的提议。实现了高召回率,计算量更少。

然后,应用PointsPool将其内部点特征从稀疏表达转换为紧凑表示,生成提议特征,从而节省更多的计算时间。

在第二步的边框预测中,实现了并行的交叉联合(IoU)分支,提高对定位精度的觉察,从而进一步提高性能。

下面是包括三个不同部分的框架示意图。第一部分是提议生成模块(proposal generation module,PGM),用于从人工基于点的球形锚点生成准确的提议。第二部分是PointsPool层,用于将提议特征从稀疏表达转换为紧凑表示。最后一个是边框预测网络,对提案进行分类和回归,并选择高质量的预测。

640?wx_fmt=jpeg

接着说提议生成模块的网络。(a)3D分割网络(基于PointNet ++),将原始点云(x,y,z,r)作为输入,并通过堆叠集合抽象(set abstraction,SA)层和特征传播(feature propagation,FP)模块为每个点生成语义分割分以及全局上下文特征。(b)提议生成网络(基于PointNet)。它将锚点内点的归一化坐标和语义特征作为输入,产生分类和回归预测。

640?wx_fmt=jpeg

下图是可视化的KITTI测试结果。汽车、行人和骑自行车者分别以黄色、红色和绿色突出显示。每个图像的上行是投影到RGB图像上的3D对象检测结果。另一个是LiDAR阶段的结果。

640?wx_fmt=jpeg

“Fast Point RCNN”

这个腾讯的工作是为基于点云的三维目标检测提供统一、高效和有效的框架。这种两步法同时利用体素表示和原始点云数据来利用各自的优势。

第一步中以体素表示为输入的网络仅由轻卷积运算组成,产生少量高质量的初始预测。初始预测中每个点的坐标和索引卷积特征(indexed convolutional feature)与注意机制有效融合,保留了准确的定位和上下文信息。

第二步利用其融合特征在内部点上工作,以进一步细化预测。

如图给出两步法框架概述。在第一步,将点云体素化并将它们馈送到VoxelRPN产生少量初始预测。然后通过融合VoxelRPN的内部点坐标和上下文特征为每个预测生成框特征。边框特征被送到RefinerNet进行进一步改进。

640?wx_fmt=jpeg

假设点云的感兴趣区域是大小为(L,W,H)的长方体,并且每个体素大小(vl,vw,vh),3D空间被划分为大小(L/ vl,W/ vw,V/ vh)的3D体素网格。

下图是VoxelRPN的网络结构。图中使用的层格式如下(内核大小)(通道)/(步幅),即(kx,ky,kz)(chn)/(sx,sy,sz)。除非另有说明,否则默认步幅为1。

640?wx_fmt=jpeg

下图是RefinerNet架构:

640?wx_fmt=jpeg

而这个是边框的经典化,其中数字表示RefinerNet中角点预测的顺序。

640?wx_fmt=jpeg

给个结果:

640?wx_fmt=jpeg


“StarNet: Targeted Computation for Object Detection in Point Clouds”

这是谷歌的工作。提出一个专门为单步和两步法的点云数据混合(blending)的目标检测系统。观察到点云的目标与传统的相机图像截然不同:目标稀疏且位置变化很大,但没有展示出在单个相机视角中观察到的尺度失真。这两个观察现象表明,简单且廉价的数据驱动目标提议可以使空间覆盖最大化,或与观察到的点云数据密度相匹配。这种识别与局部非卷积的基于点网络相结合,允许为点云建立目标探测器,该检测器可以仅训练一次,但适应不同的计算设置 - 针对不同的预测优先级或空间区域。在KITTI检测数据集以及大规模Waymo Open Dataset上,他们展示了这种灵活性和有针对性的检测策略。StarNet如图结构:

640?wx_fmt=jpeg

如图是StarNet点特征器(point featurizer)。(a)StarNet块将一组点作为输入,其中每个点都有一个相关的特征向量。每个块首先计算点云的聚合统计数据(最大值)。接下来,将全局统计数据连接回每个点特征。最后,应用两个全连接层,每个层由BN、线性投影和ReLU激活组成。(b)StarNet点特征器(point featurizer)堆叠多个StarNet块,并使用平均聚合(mean aggregation)读出每个块输出。读数连接在一起形成点云特征(featurization)。

640?wx_fmt=jpeg


注意看算法伪代码:

640?wx_fmt=jpeg

“Class-balanced Grouping and Sampling for Point Cloud 3D Object Detection”

本文介绍了一个赢得自动驾驶研讨会(WAD,CVPR 2019)中nuScenes 3D检测挑战赛的冠军方法。通常,利用稀疏3D卷积来提取丰富的语义特征,然后将其馈送到类平衡(class-balanced)的多头网络执行3D目标检测。为了处理自动驾驶场景中固有的严重类别不平衡问题,设计了一种类平衡的采样和增强策略,以生成更平衡的数据分布。

此外,提出了一个平衡的分组头,以提高具有相似形状的类别性能。如图是其网络架构。3D特征提取器由子流形(submanifold)和常规3D稀疏卷积组成。3D特征提取器的输出具有16×缩减比,其沿着输出轴扁平化并且馈送到随后的区域提议网络(RPN)生成8×特征图,随后是多组头部网络以生成最终预测。注:头部的组数是根据分组规范来设置的。

640?wx_fmt=jpeg

如下是验证分开的检测结果示例。GT注释为绿色,检测结果为蓝色。每个点云鸟视图图像顶部的标记是其对应的样本数据标记。

640?wx_fmt=jpeg


“Deep Hough Voting for 3D Object Detection in Point Clouds”

当前的3D目标检测方法受2D检测器的严重影响。为了利用2D检测器的架构,经常将3D点云转换为常规网格(即,到体素网格或鸟瞰图像),或者依赖于2D

图像的检测来提出3D框。很少有人尝试直接检测点云中的目标。

这项工作回到第一个原则来构建点云数据的3D检测流程图,并尽可能通用化。然而,由于数据的稀疏性 - 来自3D空间中的2D流形的样本 - 当从场景点直接预测边框参数时,面临一个主要挑战:3D目标质心可能远离任何表面点,因此难以准确地回归一步到位。

为了应对这一挑战,提出了VoteNet,一种基于深度点集网络和Hough投票(voting)协同工作的端到端3D目标检测网络。VoteNet使用纯粹的几何信息而不依赖于彩色图像。

注意该方法提供了开源代码:github.com/ facebookresearch/votenet。

如下图所示即具有深度Hough投票模型的点云三维目标检测。给定3D场景的点云,VoteNet投票到目标中心,然后分组并聚合投票以预测3D边框和目标的语义类。

640?wx_fmt=jpeg

下图是VoteNet架构在点云3D对象检测示意图。给定具有XYZ坐标的N个点的输入点云,一个骨干网络(PointNet++层实现)亚采样并且学习点深度特征并输出M个点子集,但被C维度特征扩展。

该点子集被视为种子点。每个种子通过投票模块独立地产生投票。然后,将投票分组为集群(clusters )并由提议模块处理以生成最终提议。分类和非最大抑制(NMS)处理的提议成为最终的3D 边框输出。

640?wx_fmt=jpeg

下图解释投票如何有助于增加检测上下文信息。生成好的边框(BoxNet)或好的投票(VoteNet)的种子点反过来生成好边框,就叠加在代表性的ScanNet数据场景上(蓝色)。由于投票步骤有效地增加了上下文,VoteNet展示了更密集的场景覆盖面,因此增加了准确检测的可能性。

640?wx_fmt=jpeg

大家可以看出来,一些激光雷达点云的3D目标检测器和2-D目标检测器有相似之处,也分单步法和两步法,也有区域提议网络(RPN),特征提取的设计上自由度更大,可以在投影(多是鸟瞰视图)图像,也可以在3-D体素空间,甚至直接点云空间,并可能设计2-D投影和3-D之间的转换通道提供某种特征聚合机制。

(*本文为AI科技大本营转载文章,转载联系作者)


精彩推荐



【结果提交倒计时】PV,UV流量预测算法大赛,结果提交截止时间为9月20日,还没有提交的小伙伴抓紧时间了~~9月25日公布初赛成绩。最新排行榜请扫码查看。


推荐阅读

  • 我所理解的零次学习

  • 华为全球最快AI训练集群Atlas 900诞生

  • 还怕电脑被偷吗?我用Python偷偷写一个自动木马程序

  • 用Python进行金融市场文本数据的情感计算

  • 前端也能玩转机器学习?Google Brain 工程师来支招!

  • 华为 | 泰山之巅 鲲鹏展翅 扶摇直上九万里

  • 6大思维模型, 揭秘硅谷高管如何做区块链应用决策

  • 走出腾讯和阿里,大厂员工转型记

640?wx_fmt=png

你点的每个“在看”,我都认真当成了喜欢“

相关文章:

java B2B2C源码电子商务平台 -commonservice-config配置服务搭建

2019独角兽企业重金招聘Python工程师标准>>> Spring Cloud Config为分布式系统中的外部配置提供服务器和客户端支持。使用Config Server,您可以在所有环境中管理应用程序的外部属性。客户端和服务器上的概念映射与Spring Environment和PropertySource抽象…

Topshelf:一款非常好用的 Windows 服务开发框架

背景 多数系统都会涉及到“后台服务”的开发,一般是为了调度一些自动执行的任务或从队列中消费一些消息,开发 windows service 有一点不爽的是:调试麻烦,当然你还需要知道 windows service 相关的一些开发知识(也不难&…

C++中nothrow的介绍及使用

在C中,使用malloc等分配内存的函数时,一定要检查其返回值是否为”空指针”,并以此作为检查内存操作是否成功的依据,这种Test-for-NULL代码形式是一种良好的编程习惯,也是编写可靠程序所必需的。在C中new在申请内存失败…

你猜猜typeof (typeof 1) 会返回什么值(类型)?!

typeof typeof操作符返回一个字符串,表示未经计算的操作数的类型。 语法: var num a; console.log(typeof (num)); 或console.log(typeof num) 复制代码typeof 可以返回的类型为:number、string、boolean、undefined、null、object、functi…

阿里云智能运维的自动化三剑客

整理 | 王银出品 | AI科技大本营(ID:rgznai100)近日,2019 AI开发者大会在北京举行。会上,近百位中美顶尖AI专家、知名企业代表以及千余名AI开发者进行技术解读和产业论证。而在AIDevOps论坛上,阿里巴巴高级技术专家滕圣…

Sublime Text2.0.2注册码

直接输入注册码就可以了 ----- BEGIN LICENSE ----- Andrew Weber Single User License EA7E-855605 813A03DD 5E4AD9E6 6C0EEB94 BC99798F 942194A6 02396E98 E62C9979 4BB979FE 91424C9D A45400BF F6747D88 2FB88078 90F5CC94 1CDC92DC 8457107A F151657B 1D22E383 A997F016 …

Caffe源码中Solver文件分析

Caffe源码(caffe version commit: 09868ac , date: 2015.08.15)中有一些重要的头文件&#xff0c;这里介绍下include/caffe/solver.hpp文件的内容&#xff1a;1. include文件&#xff1a; <caffe/solver.hpp>&#xff1a;此文件的介绍可以参考&#xff1a; http://b…

百度大脑金秋九月CV盛典,人脸识别新产品及伙伴计划发布会压轴开启

提起人脸识别你最先想到的是什么&#xff1f;是告别排队&#xff0c;刷脸就能支付的超市&#xff1b;还是告别黄牛&#xff0c;刷脸就能自助挂号建档的医院&#xff1f;其实&#xff0c;“刷脸”的时代早已到来&#xff0c;并且人脸识别技术的发展已经超越你的想象&#xff0c;…

BIML 101 - ETL数据清洗 系列 - BIML 快速入门教程 - 序

BIML 101 - BIML 快速入门教程 做大数据的项目&#xff0c;最花时间的就是数据清洗。 没有一个相对可靠的数据&#xff0c;数据分析就是无木之舟&#xff0c;无水之源。 如果你已经进了ETL这个坑&#xff0c;而且预算有限&#xff0c;并且有大量的活要做&#xff1b; 时间紧&am…

ADO数据库操作

void CSjtestDlg::OnBnClickedButtonAdd() {// TODO: 在此添加控件通知处理程序代码this->ShowWindow(SW_HIDE);DigAdd dig ;dig.DoModal() ;this->ShowWindow(SW_SHOW);m_Grid.DeleteAllItems() ;ADOConn m_Adoconn ;m_Adoconn.OnInitADOConn() ;CString sql ;sql.Forma…

C++中try/catch/throw的使用

C异常是指在程序运行时发生的反常行为&#xff0c;这些行为超出了函数正常功能的范围。当程序的某部分检测到一个它无法处理的问题时&#xff0c;需要用到异常处理。异常提供了一种转移程序控制权的方式。C异常处理涉及到三个关键字&#xff1a;try、catch、throw。 在C语言中…

掌握这些步骤,机器学习模型问题药到病除

作者 | Cecelia Shao编译 | ronghuaiyang来源 | AI公园&#xff08;ID:AI_Paradise&#xff09;【导读】这篇文章提供了切实可行的步骤来识别和修复机器学习模型的训练、泛化和优化问题。众所周知&#xff0c;调试机器学习代码非常困难。即使对于简单的前馈神经网络也是这样&am…

How to list/dump dm thin pool metadata device?

2019独角兽企业重金招聘Python工程师标准>>> See: How to create metadata-snap for thin tools using? I dont think LVM provides any support for metadata snapshots so you will need to drive this process through dmsetup. The kernel interface is descri…

Linux基础(二)--基础的命令ls和date的详细用法

本文中主要介绍了linu系统下一些基础命令的用法&#xff0c;重点介绍了ls和date的用法。1.basename:作用&#xff1a;返回一个字符串参数的基本文件名称。用法&#xff1a;basename PATH例如&#xff1a;basename /usr/share/doc 返回结果为doc2.dirname:作用&#xff1a;返回一…

Caffe中对MNIST执行train操作执行流程解析

之前在 http://blog.csdn.net/fengbingchun/article/details/49849225 中简单介绍过使用Caffe train MNIST的文章&#xff0c;当时只是仿照caffe中的example实现了下&#xff0c;下面说一下执行流程&#xff0c;并精简代码到仅有10余行&#xff1a;1. 先注册所有层&…

华为云垃圾分类AI大赛三强出炉,ModelArts2.0让行业按下AI开发“加速键”

9月20日&#xff0c;华为云人工智能大赛垃圾分类挑战杯决赛在上海世博中心2019华为全联接大会会场顺利举办。经过近两个月赛程的层层筛选&#xff0c;入围决赛阵列的11支战队的高光时刻也如期而至。最终华为云垃圾分类挑战杯三强出炉。本次华为云人工智能大赛垃圾分类挑战杯聚焦…

王坚十年前的坚持,才有了今天世界顶级大数据计算平台MaxCompute...

如果说十年前&#xff0c;王坚创立阿里云让云计算在国内得到了普及&#xff0c;那么王坚带领团队自主研发的大数据计算平台MaxCompute则推动大数据技术向前跨越了一大步。数据是企业的核心资产&#xff0c;但十年前阿里巴巴的算力已经无法满足当时急剧增长数据量的需求。基于Ha…

tomcat简单配置

-----------------------------------------一、前言二、环境三、安装JDK四、安装tomcat五、安装mysql六、安装javacenter七、tomcat后台管理-----------------------------------------一、前言Tomcat是Apache 软件基金会&#xff08;Apache Software Foundation&#xff09;的…

使用Caffe进行手写数字识别执行流程解析

之前在 http://blog.csdn.net/fengbingchun/article/details/50987185 中仿照Caffe中的examples实现对手写数字进行识别&#xff0c;这里详细介绍下其执行流程并精简了实现代码&#xff0c;使用Caffe对MNIST数据集进行train的文章可以参考 http://blog.csdn.net/fengbingchun/…

前端也能玩转机器学习?Google Brain 工程师来支招

演讲嘉宾 | 俞玶编辑 | 伍杏玲来源 | CSDN(ID&#xff1a;CSDNnews)导语&#xff1a;9 月 7 日&#xff0c;在CSDN主办的「AI ProCon 2019」上&#xff0c;Google Brain 工程师&#xff0c;TensorFlow.js 项目负责人俞玶发表《TensorFlow.js 遇到小程序》的主题演讲&#xff0c…

mongoDB设置用户名密码的一个要点

2019独角兽企业重金招聘Python工程师标准>>> 增加用户之前, 先选好库 use <库名> #选择admin库后可查看system.users里面的用户数据 db.system.users.find() db.createUser 这个函数填写用户名密码与权限就行了, 在这里设置库的名称没用. 一定要用用use选择好…

基于HTML5的电信网管3D机房监控应用

先上段视频&#xff0c;不是在玩游戏哦&#xff0c;是规规矩矩的电信网管企业应用&#xff0c;嗯&#xff0c;全键盘的漫游3D机房:随着PC端支持HTML5浏览器的普及&#xff0c;加上主流移动终端Android和iOS都已支持HTML5技术&#xff0c;新一代的电信网管应用几乎一致性的首选H…

从原理到实现,详解基于朴素ML思想的协同过滤推荐算法

作者丨gongyouliu编辑丨Zandy来源 | 大数据与人工智能&#xff08;ID: ai-big-data&#xff09;作者在《协同过滤推荐算法》、《矩阵分解推荐算法》这两篇文章中介绍了几种经典的协同过滤推荐算法。我们在本篇文章中会继续介绍三种思路非常简单朴素的协同过滤算法&#xff0c;这…

C++/C++11中引用的使用

引用(reference)是一种复合类型(compound type)。引用为对象起了另外一个名字&#xff0c;引用类型引用(refer to)另外一种类型。通过将声明符写成&d的形式来定义引用类型&#xff0c;其中d是声明的变量名。 一、一般引用&#xff1a;一般在初始化变量时&#xff0c;初始值…

node.js学习5--------------------- 返回html内容给浏览器

/*** http服务器的搭建,相当于php中的Apache或者java中的tomcat服务器*/ // 导包 const httprequire("http"); const fsrequire("fs"); //创建服务器 /*** 参数是一个回调函数,回调函数2个参数,1个是请求参数,一个是返回参数*/ let serverhttp.createServe…

内核分析阅读笔记

内核分析阅读笔记 include/Linux/stddef.h中macro offsetof define,list: #define offsetof(TYPE,MEMBER) ((size_t) &((TYPE *)0)->MEMBER) offsetof macro对于上述示例的展开剂分析:&((struct example_struct *)0)->list表示当结构example_struct正好在地址0上…

杨强教授力荐,快速部署落地深度学习应用的实践手册

香港科技大学计算机科学与工程学系讲座教授、国际人工智能联合会&#xff08;IJCAI&#xff09;理事会主席&#xff08;2017—2019&#xff09;、深圳前海微众银行首席AI 官 杨强为《深度学习模型及应用详解》一书撰序&#xff0c;他提到现在亟需一本介绍深度学习技术实践的图书…

OpenFace库(Tadas Baltrusaitis)中基于HOG进行正脸人脸检测的测试代码

Tadas Baltrusaitis的OpenFace是一个开源的面部行为分析工具&#xff0c;它的源码可以从https://github.com/TadasBaltrusaitis/OpenFace下载。OpenFace主要包括面部关键点检测(facial landmard detection)、头部姿势估计(head pose estimation)、面部动作单元识别(facial acti…

nginx conf 文件配置

打印输出: location / { default_type text/plain; return 502 "$uri"; } $remode_addr 获取访问者的ID$request_method 判断提交方式 GET POST$http_user_agent 获取浏览器软件 if (条件) {} #if之后要有空格 条件3种写法: 1: 来判断相等,用于字符串比较 …

js中 字符串与Unicode 字符值序列的相互转换

一. 字符串转Unicode 字符值序列 var str "abcdef"; var codeArr []; for(var i0;i<str.length;i){codeArr.push(str.charCodeAt(i)); } console.log(codeArr);-->[97, 98, 99, 100, 101, 102] 二.Unicode 字符值序列转字符串 var str String.fromCharCode…