「青源Workshop」是智源研究院发起的青源会系列闭门研讨,鼓励参会者“合作 · 探索 · 实践”——探讨关于未来研究、系统、创业话题的合作设想、工作规划、协作倡议。

2022年10月9日,本年度第8期「具身智能与机器人」主题活动召开,北京大学王鹤、清华大学眭亚楠、谷歌大脑团队夏斐在会上作了关于 Sim2Real、具身智能在人体运动恢复、基于语言视觉模型规划的具身推理等话题的引导报告。30余位学者参与了本次讨论,智源社区将本次活动报告与讨论公开部分的主要内容整理如下。

以仿真的方式赋能可泛化的具身视觉与交互

王鹤丨北京大学前沿计算研究中心助理教授

从字面上看,「具身智能」即「具有身体的 AI」。狭义的具身智能已经广泛存在于生产和生活场景下(例如,仓储内机械臂的分拣操作、无人驾驶汽车),然而目前此类智能体的工作环境简单或者任务较为受限。

在家用机器人等智能体面临的复杂感知、交互场景下,智能体需要应对物体种类、几何结构、物理性质等因素的变化。智能体需要具备「可泛化的交互驱动的三维视觉」以及「可泛化的交互能力」。

然而,三维视觉数据和交互数据十分有限,我们可以利用仿真和合成数据发展可泛化的三维视觉和交互策略。

可泛化的交互驱动的三维视觉

「位姿估计」是链接计算机视觉和机器人学的重要研究问题,本质上需要预测出物体朝向的三维位姿,以往的研究大多针对数据集中已有的物体进行位姿估计。在CVPR 19 上,王鹤提出了类别级的物体位姿估计泛化表征任务。

找到各种带有标签的物体从而进行监督学习仍然需要很高的成本。为此,王鹤团队在「上下文感知的混合现实」(CAMERA)工作中考虑利用合成数据减小域之间的差异,该工作将真实的桌面场景作为背景,再将 ShapeNet 中的物体作为前景,从而构成混合现实场景,给出了物体的位姿和蒙版(mask)标注信息。合成的数据集包含约 27 万张训练图片。为了缩小前景与真实背景之间的差异,提升分割模型的泛化性能,王鹤引入了 2 万张没有位姿信息的 MS COCO 图像进行弱监督联合训练。

相较于 RGB 混合数据,真实数据和合成数据的点云之间的域差异更小。为此,王鹤考虑仅仅使用深度传感器生成的点云的几何特征实现可泛化的三维视觉。他们基于 SAPIEN 平台搭建了关节类物体的点云数据集,在 CVPR 2020 和 ICCV2021 发表的工作将类别级泛化发展到了关节类物体 9D 位姿估计和零样本位姿追踪问题上,在真实数据上取得了很好的泛化性能。

由于深度传感器在透明和高光物体上生成的点云质量较低,王鹤团队考虑使用合成数据修复此点云数据的深度信息,实现更加精准的泛化。为此,王鹤在 ECCV 2022 上发表的工作采用域随机化技术生成了具有不同材质、原色、透明度、光照、背景纹理、摄像头视角的物体。接着,针对结构光的深度传感器进行仿真,通过「真实性渲染」技术得到左 IR 图和右 IR 图,对二者进行立体匹配得到最终的仿真深度图,并基于合成的 100 万数量级的数据训练 SwinDRNet 网络。实验结果表明,这种大规模仿真数据集可以得到非常好的泛化性能。

为了更便捷地获取高质量三维视觉表征,王鹤提出了一种基于多视图可泛化神经渲染的三维视觉框架,将多视图的 RGB 图像表征融合。他们提出的方法在无需真实数据的情况下,通过多视图特征聚合网络和 TSDF 预测网络构建了场景的 TSDF,用于下游的高精度的可泛化抓取任务,也可以与 NeRF 相连作为辅助任务,帮助克服透明高光物体几何监督不充分的问题。

上述可泛化的三维视觉技术有利于实现实时的开放环境下的位姿跟踪和重建(例如,手和物体的交互)。此外,可泛化的三维视觉技术还需要用到领域自适应、视点自适应、点云的 Sim2Real、高效标注学习等技术。

可泛化的交互

从视觉角度出发,实现物体操作和导航也具有重大的研究价值,最终可以实现运动中的物体操作。为此,王鹤团队在 ECCV 2022 上的工作实现了对于任意透明物体的抓取,并且在 ManiSkill 2021 全球挑战赛上首次实现了类别级可泛化的模仿学习算法,使智能体可以操作未曾见过的物体。在导航方面,王鹤首次在仿真器之外的真实环境下,实现了同时完成三维语义理解和重建的方法,将三维场景重建与强化学习。通过任务分解,在提升样本效率的同时,提升了模型的性能。

此外,王鹤通过物理仿真构建了世界上最大的灵巧手数据集,共包含 100 万次抓取数据,覆盖 5000 多种物体。王鹤认为,通过将传感器理解和真实性仿真技术、域随机化技术相结合,可以实现 Sim2Real。我们还需要进一步在仿真器环境下探索强化学习的泛化性问题,并在未来减小仿真环境和真实世界的物理差距。在视觉信号不足时,我们也可以借助触觉信号等数据作为补充,最终实现鲁棒、可泛化的三维视觉和可泛化的操作策略。

用于运动功能恢复的学习和优化

眭亚楠丨清华大学航天航空学院副教授

与传统机器学习相比,具身智能具有以下特点:

(1)从简单任务走向复杂任务,逐渐实现复杂的交互。

(2)从浅层离散的、不相关的经验走向深层的相关经验。

(3)关注采集到的数据之间的关联,提升数据的深度和丰度,即「Deep Learning from Deep Data」。

具身智能更多地会从智能体的角度出发,以更加个性化的视角学习。它是一种与人更加类似的学习方式。眭亚楠在利用具身智能技术帮助人类恢复运动能力等方面的研究对于具身学习的安全性有很高的要求,也很难量化衡量算法的偏好。此类研究旨在帮助出现运动障碍的人或者机器人通过合理的学习策略重新具备运动能力。眭亚楠团队通过对完全瘫痪的病人进行神经仿真来实现这一目标。

为了实现运动功能恢复,我们在脊髓中感兴趣的区域植入一个高维刺激阵列,帮助瘫痪病人重新恢复运动能力。

脊髓硬膜外电极的神经外科植入手术已经有几十年的历史。如上图所示,这是一个 16 通道的刺激器,每个触点可以输出「+」、「-」、「0」三种电位,我们也可以在时域上做参数的调整。

由于不同病人的脊髓形态有所差异、伤情有所区别、最优刺激各不相同,我们需要在巨大的动作空间中进行搜索和优化。

由于神经系统十分复杂,我们很难凭借医生经验和患者的需求自述设置刺激的参数,我们考虑用在线强化学习技术实现神经模拟。在强化学习过程中,人的运动状态构成了状态空间,输入的刺激形成了动作空间,我们采用优化算法将状态空间和动作空间联系起来。在临床实验中,实验的安全性、伦理规范十分重要。为此,我们需要设计安全的强化学习算法,施加足量的安全约束,保证实验正常执行。

强化学习的试错过程由循环的评估和提升组成,而未知的安全约束可能破坏评估环节,使强化学习回路被打破。安全的强化学习技术需要在「探索-利用」之外加入「安全扩充」,在已知的安全级中进行评估。这种技术为高价值机器人应用、医学机器人应用等任务提供了安全约束保证。

安全强化学习是一个带约束的优化问题,要求我们在在线采样过程中,保持每一个采样点都满足安全性约束,否则实验会中止。另一方面,人类反馈难以被量化,甚至在不同阶段可能自相矛盾,需要利用较弱的偏好反馈进行学习。

眭亚楠将此类研究拓展为一系列序列优化理论和算法,主要包含两个层面:

(1)带安全性约束的优化。尽量避免触及安全边界,以较为保守的方式一边拓展安全边界,一边在安全边界中进行有效的优化和学习。

(2)带偏好反馈的优化。

2016 年前后,眭亚楠所在的研究团队已经可以实现使瘫痪的患者站立起来。进一步,我们希望使患者能够完成站立之外的更高级的运动状态。然而,通过前文介绍的模型无关的方法,无法利用神经机制,其优化速度较慢。为此,我们需要构建一个用于高效具身学习的环境。在如上图所示的「神经-肌肉-骨骼」模型中,眭亚楠的研究组实现了「多-物理建模」、「肌肉-骨骼模拟」和「多-轴突直径模拟」,构建了更大、更加复杂的系统。在此基础之上,我们可以实现更好的神经交互接口。

在构建好神经交互接口后,进一步通过「脊髓模型+电极阵列模型」和「物理仿真+贝叶斯优化」等方式对电极进行仿真和优化,预测各种刺激带来的运动效果。

为了得到更加高效的优化算法,眭亚楠设计了如上图所示的自编码器结构。其中编码器将混合的高维数据映射为低维的「Quasi」物理表征,解码器的输出则为领域的先验知识。

眭亚楠将其团队的工作概括为:

(1)更加精细的运动神经系统的建模与仿真;

(2)更有效的优化算法,在低维空间中更好地表征高维空间的刺激。

临床实验表明,与人类专家相比,该系统的性能更优。通过自动编码器实现的 GP 回归模型具有良好的预测效果。根据仿真结果,我们可以对电极进行新一轮的升级,实现多阴极解决方案,这意味着更扩散的电场,有望得到更好的可持续性疗效。眭亚楠老师研究组的目标是:基于先进计算方法,更好地理解人类的运动神经系统,重建受损的运动能力。

通过基于「语言-视觉模型」的规划实现具身推理

夏斐丨谷歌大脑研究科学家

为了让机器人在非结构化复杂环境下工作,我们可以尝试基于大规模仿真,通过智能体和仿真环境的交互,实现机器人在非结构化环境下的部署。除此之外,我们还可以通过「对齐」(gounding)方法实现具身智能。具体而言,夏斐研究员提出了基于「可供性」、「推理链条」、「语言-视觉模型」、「场景对齐」、「代码生成」的「对齐」方法。

人类在孩童时代通过与环境的交互学习,形成了感知和动作之间的回路,这是人类智能的重要来源之一。受此启发,夏斐研究员在攻读博士期间的工作主要围绕对真实环境的仿真展开,旨在模拟真实世界中视觉和物理上的复杂性。在 CVPR 2018 上,夏斐博士提出的 GibsonEnv 首次采用神经网络渲染重建仿真环境。在这个环境下,我们可以对智能体(人形机器人、四足机器人、汽车)进行精确的物理模拟以及视觉的模拟。我们可以在该环境下渲染 RGB 深度图、法向图,完成语义分割等任务。

为了进一步实现更好的交互模拟,夏斐博士提出了 Interactive Gibson,该环境下的各种元素是可以交互的,提供了物理上的真实性,使机器人可以完成移动操作任务。具身智能可以从模拟环境中学到视觉信息和交互信息。目前,机器视觉和机器人领域的研究逐渐从静态的互联网 AI 的简单任务(分类、分割、检测、生成等)发展为动态交互场景下的具身智能 AI(例如,视觉导航、视觉抓取、具身问答、移动操作等)。

基于预训练大模型,我们可以提取有助于智能体做出决策的知识。在传统的仿真环境下。机器人需要通过五万个 episode 以上与环境的交互才能学会开门等工作。而通过询问 GPT-3 等预训练模型,可以直接得到开门指令的语义信息。

SayCan

在论文「Do as I Can, Not as I Say:Grounding Landuage In Robotic Affordances」,夏斐研究员等人试图让机器学会服从人的长程指令,完成复杂的任务。在这一工作中,机器人需要根据大规模预训练语言模型学会理解抽象的长程指令,并做出任务规划。

如果直接将人类指令输入给语言模型,机器往往很难精准理解人类的意图。夏斐采用如上图所示的少样本提示方法将大语言模型的输出映射为机器人能够完成的动作。给定一个问题,模型需要通过给机器人可以执行的动作打分,并给出当前应该执行的动作。通过循环执行该步骤,就可以生成完整的解决方案步骤。

然而,上述方法仅仅利用了纯文本数据,并没有实现具身智能。为此,夏斐通过强化学习的值函数得到积累奖励,从而近似地得到基于任务的对于视觉场景的可供性的估计。

完整的 SayCan 系统包含两个模块:

(1)语言对齐模块:对子任务和总任务的关联性打分,从语言上判断任务规划是否通顺。

(2)世界对齐模块:对子任务成功率打分。上述两个模块输出概率的乘积反映了成功完成子任务且子任务对总任务有帮助的可能性。最终,我们将乘积得分最高的系统部署到机器人上。

SayCan 共支持 101 个子任务,利用语言模型将其组装成共 551 个任务,学习操作了 17 种物品,共有 68,000 个专家演示,完成概率约为 80%。在 SayCan 框架下,只需给定新的策略及其相应的值函数估计,配合任务的语言表征就可以为机器人添加新的技能。

夏斐研究员发现,大规模语言模型可以为一些任务提供对齐功能,实现任务规划。机器人的值函数可以提供对真实世界的对齐能力,建立语言模型和真实世界之间的链接。向该系统加入新的策略、语言表证、可供性估计就可以将其泛化到新的任务上。然而,底层的抓取、导航性能仍然是制约移动操作任务的最终性能的瓶颈。SayCan 的可供性估计方法需要使用者为每一种策略提供语言表证,泛化能力需要进一步提高。

Chain of Thought Prompting

推理链提示可以使 SayCan 执行更为复杂的任务。与标准的提示学习不同,推理链提示方法不仅要求模型给出问题的答案,还需要模型给出针对答案的解释,从而赋予机器人一定的推理能力。

实验结果表明,推理链提示可以成功识别用户的否定意图,给出正确的任务规划,能够处理更加复杂的约束。

通过基于语言模型的任务规划实现具身推理

在开环的基于语言模型的机器人任务规划中,任何环节的失败都会导致整个任务失败。受到人类在不断试错中逐步完成任务的模式的启发,夏斐研究员为各个子任务之间提供了环境的反馈,这种反馈可能来自于通过检测模型识别的场景、通过 VQA 模型向人类的查询的结果或基于 CLIP 的「成功状态检测器」。在得到环境的反馈后,就可以实现闭环任务规划。

造成任务失败的原因可能有:

(1)操作策略较差,随机产生失败;

(2)环境有错误,导致规划完全错误。模型对任务理解的粒度取决于训练语料的丰富程度。我们通过比较初始状态、目标状态是否符合预期来判断机器是否产生了错误。在这里,我们采用 RGB 图像信息得到视觉状态。

NLMap-SayCan

为了摆脱对物体位置标注的依赖,夏斐研究员首先通过 VLM 得到开放词表下的场景表征,让机器对环境进行探索,自动扫描建图,从而得到开放词表下的场景表征。在机器人完成任务时,可以利用扫描得到的场景找到物体的位置,识别物体之间的关系,得到更好的任务规划结果。

用于具身控制的语言模型编程

除了上文提到的对齐方法,我们还可以通过语言模型利用机器人的感知和控制应用程序接口直接生成代码,从而实现自动控制和任务规划。基于这种方式,机器人可以考虑上下文,更加自然地完成复杂任务。

问答

Q1:具身智能研究领域涉及哪些核心科学问题,存在哪些新的研究方向和挑战?目前对具身智能的定义是否形成共识?

卢策吾:目前学术界尚未形成对具身智能定义的共识。从字面意义上来说,发展「具有身体」的智能是一个很庞大的科学问题,可以分解出很多子问题。研究者们正尝试通过不同的技术路线实现具身智能,不同的技术路线面临的科学问题各不相同。与之相比,计算机视觉研究好比造「轮子」,而具身智能则类似于「造火箭」,需要整合多个人工智能研究方向的成果。

Q2:具身学习从模拟世界到现实世界的迁移中,现实世界的经验和数据是必须要有大量样本,还是有小样本就可以,还是可以完全不需要?在简化仿真场景中交互学习得到的知识与方法是否有助于最终解决真实世界的复杂问题? 

王鹤:在抓取等可控因素较多的任务中,「真实性渲染」等技术已经可以较好地缩小真实世界和模拟世界的差异,基于域随机化技术就可以实现较好的仿真。然而,在三维室内场景等较为复杂的场景下的下游任务中,仿真到现实的迁移就较为困难。物理性质上的变化和仿真则更为困难,这是学术界的讨论热点之一。基于模型的强化学习算法在一定程度上可以降低所需的交互次数,但复杂的 Sim2Real 的迁移仍然有待探究。

卢策吾:解决物体外观差异层面上的迁移时间问题,但是物理层面的仿真更为困难。探究机械性能和人工智能体性能之间的互补性也是一个值得探究的方向,或许我们可以通过提升机器人的机械性能,降低对仿真参数细节的要求,从硬件上寻求对软件的补充,降低对仿真性能的依赖。

吴佳俊:我们可以从多个抽象的层次上考虑 Sim2Real 问题。从底层上说,物体需要看起来、听起来、触摸起来逼真,还要具有逼真的物理性质。在视觉感知方面,目前有了一些进展,但听觉、触觉和物理上的仿真效果则还是不尽如人意。从更高的层面上说,机器对于场景、任务的理解也有待提高。另一方面,从以人为中心的层面上说,触觉等感知形式则需要更加关注人类的控制反馈,而场景的理解还需要考虑人与人之间的协作关系,这些都是还远没有解决的问题。就目前的情况而言,我们仍然需要真实数据作为支撑。

王小龙:物理上的约束对于 Sim2Real 十分关键。根据我们的经验来看,在仿真环境下的开发和在真实机器人上的开发一定要同步进行。否则,将仿真环境下的结果迁移到真实机器人上会有很大的差异。在我看来,真实世界和模拟世界在物理上的一些差异并不一定需要弥平,即使存在这些差异,机器人也可以顺利完成需要完成的工作。最近,基于真实机器人的控制工作也较为火热。

眭亚楠:骨骼肌肉系统和神经系统联合建模的质量较低,我们仍然需要现实世界中的大量样本参与训练。需要形成可靠的度量标准,衡量模拟世界和现实世界之间的差异。

Q3:Synthetic assets 既可以由人工制作模型+渲染,也可以由扫描实际物体+机器学习(GAN, NERF)得到。后者是否有取代前者的趋势和潜力?抑或二者各有难以替代的使用场景? 

弋力:我们并不一定要把所有的差异都解决了才能进行下游任务。目前看来,专家演示还是不可或缺的,尤其是我们希望做出类人机器时需要让人类能够理解机器人的行为。仅仅通过物理计算将先验知识授予机器还十分困难,让智能体自助获取数据和通过专家演示、预料分析等数据提供知识是互补的。

Q4:如何应用目前的基础模型(foundation model)解决机器人泛化问题? 具身智能如何泛化到开放环境中? 

卢宗青:我们可以充分利用互联网存在的视频数据作为专家演示,让机器根据视频学习人类在物理世界中的行为方式,再通过让智能体与环境的简单交互实现具身智能。

卢策吾:以目前的技术水平而言,根据视频学习大模型对于学习高层语义帮助较大,可以帮助机器将任务分解为小的子任务,但是在底层问题上的帮助不大,这依赖于计算机视觉研究的进一步提升,否则会引入噪声和不确定性。此外,基于遥操作专家演示训练大模型也是一个值得探究的方向。但是此时输入媒介发生了变化,缺乏姿态等精细标注,模型设计更加困难,对于数据量的要求也更大。在构建大模型时,数据收集成本也是一个需要考虑的重要因素。

Q5:具身智能如何拥抱多模态输入数据?如何在数据收集过程中保证用户隐私?如何将大模型高效地应用于终端设备?

王鹤:MIT 的韩松老师等学者尝试在终端设备上进行训练,让机器人在感知的同时在线更新,从某种程度上说可以保护隐私。

打造有身体的 AI丨记青源Workshop具身智能与机器人研讨会(2022年第8期)相关推荐

  1. 艺术家与AI研究者的跨界碰撞丨记青源Workshop「AI+艺术」研讨会(2022年第10期)...

    艺术创造力是人类最无可替代的能力之一,曾几何时,艺术是AI无法涉足的疆域.但从2014年推出的GAN,到近年的DALL-E.CogView.MidJourney,再到今年横空出世的Stable Dif ...

  2. 具身智能(Embodied AI)和食品计算

    文章目录 具身智能 简介 什么是具身智能 具身智能学习 现有问题 现有方法 具身智能任务 具身智能工具 计算机视觉可能的任务 食品计算 食品识别.检测.分割 未来工作 具身智能 简介 什么是具身智能 ...

  3. 具身智能综述和应用(Embodied AI)

    什么是具身智能? 目前人工智能的进展,在诸多数据源和数据集(Youtube.Flickr.Facebook).机器计算能力(CPU.GPU.TPU)的加持下,已经在CV.NLP上取得了许多任务(如目标 ...

  4. Embodied AI 具身智能

    大模型的时代的到来,现在的大模型的参数几乎是几何级数的上升. 谷歌和柏林工业大学的团队重磅推出了史上最大视觉语言模型--PaLM-E:An Embodied Multimodal Language M ...

  5. 北京决心一试:如何打造中国的HHMI和贝尔实验室?道翰天琼认知智能api机器人接口1。

    在药物研发.脑科学.人工智能等若干战略前沿领域,北京市陆续发力设立新型研发机构,是科研改革的大胆尝试.面对现有体制里不太绕得过去的弊端,这些新型研发机构在科研评价.人才选拔.科研成果转化等方面,做了大 ...

  6. 2022年智源社区年度热点推荐丨新春集锦

    本文为2022年最受智源社区小伙伴喜爱的文章,根据文章质量和热门程度等维度计算得出.还有AI大佬的全年总结盘点总结,也一并推荐给你.虎年除旧,兔年迎新,藉此机会.智源编辑组全员谨祝大家新春快乐! 20 ...

  7. 新加坡国立大学尤洋:我的四个选择,本质的喜欢催动长久的坚持丨青源专栏...

    为了启发青年学者思考职业发展,激发科研灵感,智源社区推出青源专栏,定期邀请青源会员分享他们的研究思考和科研感悟.新加坡国立大学计算机系校长青年教授.青源会会员尤洋分享了他在高性能计算研究.创业经历以及 ...

  8. 【深度首发】嗖嗖身边创始人程俊:以一公里为半径,八分钟免费送达,打造C端消费新生态 丨Xtecher封面

    滴滴出行利用移动互联网撬动了封闭已久的传统打车行业,如何扩大移动互联网应用范围,为消费者提供更高品质的生活服务,打造C端消费新生态,是程俊的思考,于是,嗖嗖身边来了. 作者|郑合鑫 采访.编辑丨小鱼 ...

  9. 如何打造一流的视觉AI技术

    本次分享主要分以下几个部分:首先简要介绍一下计算机视觉技术的相关背景,然后结合格灵深瞳的实践,从算法研发.训练平台.智能数据处理.异构计算等几个方面着重介绍如何打造一流的视觉AI技术,最后介绍格灵深瞳 ...

  10. 刘偲:AI+艺术 | 青源 Talk 第 11 期

    活动议程 日期:1月13日(周四) 时间 主题 14:30-14:35 开场简介 黄高  清华大学自动化系副教授.博导,青源会会员 14:35-15:20 AI+艺术 刘偲 北航人工智能研究院教授.博 ...

最新文章

  1. C# winform自己实现Windows消息处理
  2. pypark hive 开启动态分区_Hive分区与分桶
  3. 字符串大小写字母转换c 语言,towlower()
  4. API 层实现语音录制
  5. 【Android】命令行jarsigner签字和解决找不到证书链错误
  6. 使用Android自带DownloadManager下载文件
  7. DXUT框架剖析(5)
  8. Android APK系列3-------使用platform密钥来给apk文件签名
  9. aspx反射调用方法
  10. 编译DPDK遇到make: *** /lib/modules/3.10.0-693.el7.x86_64/build: no such file or dirortory
  11. 用MySQl创建供应商标s_建立一个供应商、零件数据库。其中供应商表S(Sno - 问答库...
  12. 正弦信号、余弦信号与复指数信号(欧拉公式)
  13. Win32从入门到放弃
  14. python 高级部分
  15. 加粉推广全能助手 推广辅助工具 好多粉微信号加粉复制统计工具加强版,加粉推广神器,持续完善升级,新增统计点击转化,页面插件功能,完美支持ocpc接口
  16. 数学系列:数学在计算机图形学中的应用
  17. opporeno5k关闭高清通话步骤分享(如何取消HD)
  18. 半小时搞定Yolov5安装配置及使用(详细过程)
  19. “让数据多跑腿,让群众少跑路” 京东区块链助力司法体系实现高效透明
  20. JavaScript 各种参数 详解

热门文章

  1. 【半年时光-追寻你的足迹】
  2. 新元宇宙每周连载《地球人奇游天球记》第十八回冥王遇鬼
  3. as_completed函数用例
  4. 腾讯裁员,裁出“财务自由”
  5. Ps“反转负冲”人像处理一例
  6. Error: Getter not found: 'suspending'. case AppLifecycleState.suspending
  7. UVa 10015 - Joseph's Cousin
  8. CSS3实战 - 3d转换 - 超级立方体
  9. 科普:商标图样的要求有哪些?
  10. Tilera多线程网络编程总结