bt365体育投注.主頁欢迎您!!

    <acronym id="zvmrr"></acronym>
    <td id="zvmrr"></td>
  • <tr id="zvmrr"><label id="zvmrr"></label></tr>
  • <acronym id="zvmrr"></acronym>
  • 袁钰涵

    袁钰涵 查看完整档案

    北京编辑  |  填写毕业院校  |  填写所在公司/组织 www.wgoodp.icu/u/yuanhan_5f5f19f9dabdc 编辑
    编辑

    而受苦又是一个坏习惯

    个人动态

    袁钰涵 赞了文章 · 11月24日

    嫦娥五号登月!AI 助力实现我国航空史上四个首次,将带回月球土壤

    嫦娥五号登月!AI 助力实现我国航空史上四个首次,将带回月球土壤

    北京时间今日凌晨 4:30,嫦娥五号探测器发射升空,将执行我国首次地外天体采样返回任务,一旦成功,中国将成为继苏联和美国之后第三个取回月球样本的国家。

    此外,嫦娥五号还将首次从月球表面起飞,带着月球土壤以接近第二宇宙速度(11.2km/s)返回地球。

    嫦娥五号采用的软着陆通过人工智能自主决策,探测器拥有“眼睛”和“大脑”,会一直对即将着陆的地点进行拍照,分析是否安全,边走边找作出判读和决策。

    image.png

    AI 自主决策,首次月表起飞

    长征五号遥五运载嫦娥五号探测器发射升空,是中国探月工程的第六次任务,火箭飞行约 2200 秒后,顺利将探测器送入预定轨道。按照计划,嫦娥五号将突破月面自动采样返回关键技术,开展月球样本相关的科学研究,构建起完整的月球探测体系。

    对返回地面的月球样品进行系统、长期的实验室研究,分析月壤与月岩的物理特性与结构构造、矿物与化学组成、微量元素与同位素组成、月球岩石形成与演化过程的同位素年龄测定、宇宙辐射与太阳风离子与月球的相互作用、太空风化过程与环境演化过程等,深化月球成因和演化历史的研究。

    嫦娥五号有望实现中国航空史上的四个首次:

    1.首次在月球表面自动采样;

    2.首次从月球表面起飞;

    3.首次在三十八万公里外的月球轨道上进行无人交会对接;

    4.首次带着月球土壤以接近第二宇宙的速度返回地球。

    image.png

    发射、入轨、降落在月球表面、月球表面采样、月表起飞、轨道交接、样本转移返回地球,这一系列高难度动作预计共需要 23 天时间。

    嫦娥五号会在月球正面最大的月海风暴洋北部,吕姆克山脉附近着陆,自主采集约 2 公斤土壤样本后将样本带回地球。

    AI 决策,自主选择月球着陆点

    嫦娥五号重约 8.2 吨,由轨道器、返回器、上升器和着陆器组成,搭载了降落相机、光学相机、月球矿物光谱分析仪、月壤气体分析仪、月壤结构探测仪、采样剖面测温仪、岩芯钻探机和机械取样器。

    中国探月工程首席科学家欧阳自远曾介绍,嫦娥五号仍采用软着陆,通过人工智能自主决策,着陆前会一直在月球表面晃来晃去地拍照,判断着陆点能否保证探测器四脚降落在一致的水平面上,否则是会翻车的。欧阳自远说:“探测器非常聪明,它一直在计算、挑剔,边走边找,最后作出判断和决策。”

    对于为何不将月球表面照片传回地球让人类做判断的问题,欧阳自远也给出了答案。因为照片从月球传回地球需要 1.3 秒的时间,在不断寻找着陆点再传回照片作出判断的过程中探测器来不及找到最佳地点降落。

    image.png

    嫦娥五号将将在月球表面进行首次月面起飞,但在月球起飞难度非常高,工程师无法在月球表面进行实施的维护,探测器也只能进行段距离的飞行。

    因此,本次月球表面起飞采用了无人交会对接的方式,月球上的交会对接也由嫦娥五号通过人工智能系统自己完成。探测器进入月球后,会有一条飞船与它交会对接,并将月球土壤采样转移到月球轨道上飞行的返回器中,再由返回器将其带回地球。

    探月工程阶段性胜利,未来将建立月球永久科研基地

    我国的探月工程以绕、落、回三步走为目标,2007 年首次发射了嫦娥一号完成绕月认为,2010 年嫦娥二号获得了世界首幅解析度为七公尺的全月图,2013 年嫦娥三号实现了首次月球软着陆,2018 年嫦娥四号实现人类探测器首次造访月球背面。本次月球采样任务,是探月工程的最后一个“回”的任务。

    科学家指出,对月球表面土壤进行采样有助于研究月球火山活动和演化历史,也可以通过分析月球土壤中的太阳粒子活动去了解各时期的太阳活动变化。

    月球土壤存有大量矿产资源,包括贵金属稀土,还有被视为洁净能源和高效核能源关键的氦-3,这些资源可望转化为燃料等为未来的太空探索提供可持续支持。根据计划,中国未来会再发射嫦娥六号、七号和八号探测器进行月面技术测试,研究在月球建立永久科研基地的可行性,预计 2030 年前后实现载人登月任务。

    segmentfault 公众号

    查看原文

    赞 2 收藏 0 评论 0

    袁钰涵 发布了文章 · 11月24日

    下单抢购不讲武德,错过机会耗子尾汁

    你听说了吗,华为云 11.11 上云嘉年华优惠得史无前例,众多企业下单抢购那个速度,真的是不讲武德,该动手就动手,活动准备结束,如果你还没去抢购可要抓紧时间了,不然真的后悔莫及!!!

    为了避免大家出现耗子尾汁的情况,小编这里给大家放一些超优惠产品,方便大家进行抢购,大家快来看呀!!!

    首先我们的云建站,毕竟谁也离不开,看看这折扣,5 折、6 折、7 折,折力度也太大了吧!

    而且——买 2 年送 1 年,买 3 年送 2 年,用三年的钱买五年的使用。

    买了云建站,送华为云服务器、云空间、免费模板、有的还送域名、插件,这是买一得五啊!!!

    重点是:还能搭配优惠券一起使用!

    优惠券从 101-505 都有,买一次能用一张,加起来一共能省下 1111 元!

    云服务早晚都得买,经过 2020 年,全球企业都加强了线上化,这种大势所趋,买了必定不亏,保证你是那个最不后悔的尾款人~

    (云建站专场:http://t.cn/A6GWJY7z

    除了云建站,云数据库也有超高优惠:

    无论新老客户,皆可享云数据库 5-6 折优惠,以及云服务器的 5 折优惠。

    (云数据库专场:http://t.cn/A6Gtd8zg

    (云服务专场链接:http://t.cn/A6GtdRG7

    而购买 MySQL 云数据库搭配 C6 云服务器,二者搭配能在原先的折扣基础上再打 9 折,同时还能配上文提到的红包一起使用,朋友们,这是折上加折,一刀砍下来,能省多少钱呀!!!

    (套餐在这里:http://t.cn/A6Gtd8zg

    总而言之,铁汁们,会场链接我放这里了:该不讲武德时候咱们不讲,让别人耗子尾汁,冲呀!!!!

    查看原文

    赞 0 收藏 0 评论 0

    袁钰涵 发布了文章 · 11月24日

    成为云推官,生活之余给自己赚点零花钱

    华为云征集云推官了!!!

    各位缺钱的、不缺钱的、钱多的朋友都能看过来,毕竟成为云推官,不仅为自己带来了好处,还能为身边朋友带来好处,这到底是什么好事?我们一起来看看吧!

    首先说一下成为云推官的条件:

    1. 仅限个人用户,无论是 IT 站长、程序员、维运工程师还是软件开发者,只要不是企业,都能参加我们的活动。
    2. 账号需要实名制,渠道、子客户、NA客户、有专属商务经理对接的客户都不能参加。
    3. 单人实名但有多个账号,只允许其中一个账号成为推广官

    满足了以上条件,进入链接报名即可成为我们的云推官,戳这里

    成为了云推官有什么好处呢?

    好处一: 有现金返利,这是一个阶梯式返利,返利最高可达 34%,甚至有的朋友从事云推官这份兼职收入比主业还高,可以想象这个返利有多强!

    好处二: 有丰厚的礼品奖励,随着人数的增加,获得的礼品也越来越多,成功推荐 100 人时,便可获得万元大礼包!就算本人不需要,挂闲鱼上卖了也是一笔收入呀!

    好处三: 除了会对推荐人数进行累积,对于推荐金额也会进行累计,层层奖励叠加,只要推的多,返利到手,万元礼包到手,还能得到华为 P40 手机,免费给自己换个新手机,成为云推官也太香了吧!

    当然有朋友要问了,推广流程会不会很麻烦?——完全不会!

    加入推广计划后,复制链接、传播链接即可,他人点入链接建立关联后,推荐人数、购买金额都会自动计算,剩下就等入账了。

    成为云推官不仅便宜了自己,华为云活动促销一手知道,即使提醒朋友,让朋友少花冤枉钱,朋友选择了物美价廉华为云,省事还省钱,想成为云推官的朋友们冲呀!

    查看原文

    赞 0 收藏 0 评论 0

    袁钰涵 赞了文章 · 11月23日

    为什么你的“开发速度”和“产品性能”,都比不过竞品?丨开发者必读

    牛顿

    物理学家牛顿曾经说过:If I have seen further, it is by standing on the shoulders of giants。

    荀子在《劝学》中也说过:假舆马者,非利足也,而致千里;假舟楫者,非能水也,而绝江河。君子生非异也,善假于物也。

    他们所表达的意思其实是一致的,很多事情仅仅靠自己的力量是难以解决的,但如果我们懂得利用工具就能够轻松完成。

    在项目开发中也是如此,开发者们也要懂得“善假于物”和“站在巨人的肩膀上”,合理的使用第三方工具,一样可以实现事半功倍的效果。

    随着移动互联网的发展,大部分中小企业比拼的不仅仅是产品功能,而是产品交付速度、质量、性能以及针对特定场景的定制能力。因此,对于底层技术和架构而言,完全可以借助垂直领域的第三方工具,提高开发速度,并得到更好的产品性能。

    以企业最普遍的场景 —— 表格为例,与大家探讨,第三方工具是如何帮助开发人员解放生产力,又是如何帮助他们优化产品性能和用户体验,从而保证为最终用户提供更具价值和更高质量的产品。

    一、前言

    大家应该都知道,很多企业的 IT 业务是从一张表格开始的。团队沟通中的信息共享大量依赖于表格,文档、报告、凭证以及基础数据的汇总分析,大部分都需要依靠表格的形式来进行决策的支持。

    而伴随着企业数字化转型的迫切需要,远程办公模式已正式开启,纯在线的表格产品俨然成为了很多企业必备的工具之一。但综合性的协同办公产品大部分将更多的精力投入在了文档工具的优化当中,对于表格场景并没有投入足够多的时间与精力;另一方面表格产品看似很简单,但背后其实涉及到很多的技术实现,以及产品团队对于表格场景的熟悉度处理,目前的泛用性在线表格工具都很难具备相应的经验与能力。

    因此,如果想要在企业 OA 系统中实现类似 Excel 的在线表格分析功能,为了避免耗费大量的开发精力却只得到一个”鸡肋产品“,最好的办法就是接入更专业的前端表格控件作为辅助。虽然,这类控件数量众多,但经过我的调查研究,能把“表格技术”这一细分场景发挥到极致的产品屈指可数。

    究其原因,这些产品大多未攻克以下四个技术难点。

    二、表格控件的四大技术难点

    B/S 作为 Web 兴起之后的一种网络结构模式,统一了客户端,将系统功能实现的核心部分集中到服务器上。

    但随之而来的问题是多浏览器差异、浏览器沙箱机制、内存访问受限、客户端性能低下等。作为数据载体的表格,最直接的影响就是经常会被“吐槽”卡顿,UI 界面“假死”,界面操作不流畅等。

    引起这些问题的症结在于浏览器渲染引擎的基础原理:当界面元素越多,浏览器的渲染时间会显著增长,内存消耗会越大。这对于强计算逻辑的前端表格控件来说,无疑是棘手的难题。

    由此可见,开发一款前端表格控件需要攻克这四个技术难点:性能、内存消耗、可靠性和操作体验。

    1、性能

    现代应用程序为了追求更好的用户体验,需要对 UI 界面反复优化,而频繁的修改界面 UI 元素,将引发多次浏览器重绘。在这个过程中,UI 元素的创建及修改,会激活内部垃圾回收机制,影响数据处理效率。

    除此之外,前端开发环境的多样化、各类高 DPI 设备、手机、平板、4K 显示屏、企业大屏等,这些无不加重了企业应用系统的处理负担。

    为此,业内目前最佳的解决方案是使用 Canvas 绘制模型。

    Canvas 主要用于在网页上绘制图像,可以将其理解为画布,开发者们在这个画布上构建想要的效果。它与在浏览器中运行的其他应用有所不同,由于 Canvas 只在屏幕上特定的区域执行并显示效果,可以说它的功能是独占的,因此不太会受到页面上其他内容的影响,反之也是如此。

    作为一种不依赖于浏览器解析的方式,使用 Canvas 绘制模型不仅可以解决性能问题,和 DOM 相比还提供了不失真的页面打印,做到所见即所得。

    2、内存消耗

    随着前端工程化的高速发展,各种前端工程脚手架日渐成熟,WebComponent 标准被提上日程,企业开始由 C/S 向 B/S 应用转型。为了优化内存,这就要求前端开发者,需要面对单线程处理复杂业务数据的挑战。

    对于表格控件这类松散的文档结构,业内目前的最佳实践是采用稀疏矩阵存储模型(Sparse Array)来保存数据。

    稀疏矩阵在机器学习方面是很常见的。由于稀疏矩阵含有许多数值为零的元素,可以用来压缩矩阵对象的内存台面空间,或者加速多数机器学习程序。

    而在表格场景中,相较于传统的链式存储或数组存储,稀疏矩阵存储构建了基于行索引的数据字典,在松散布局的表格数据中,稀疏矩阵只会对非空数据进行存储,而不需要对空数据开辟额外的内存空间。

    这种特殊的存储策略,不仅节省了内存消耗,也使得数据片段化变得更加容易。借助这个特性,开发者甚至可以随时替换或恢复整个存储结构中的任何一个级别的节点,实现高效的数据回滚和数据恢复。

    3、可靠性

    传统前端表格应用计算的特点,是没有稳定的框架计算器、语言计算精度差、表格计算依赖复杂。

    随着企业数字系统应用的越来越深入,业务计算方式也变的越来越复杂,灵活度要求也越来越高。为了解决这个问题,必须了解计算引擎的计算流程后进行相应的可靠性优化。

    spreadjs

    如图所示是计算引擎在构建计算依赖链时的一个简单的流程图。表达式树从计算存储模型中找到对应的根节点以及根节点标识,随后遍历整个表达式树,找出其他依赖标识,构建依赖关系。

    当整个依赖链中的任意节点发生变化时,如果沿着这条依赖链,可以查找依赖节点并进行重算,那么在这个过程中,没有在依赖链中的节点是不会发生重算计算的,也就是我们所说的没有脏值运算。

    进行这样的机制优化后,可以大幅提升表格产品的运算速度,从而提供更好的使用体验和更加精准的运算结果。

    4、操作体验

    随着业务场景的丰富,表格系统需要承载更多的功能。例如触摸支持、富文本支持、前端 Excel 导入导出、JSON 存储等。

    我们以触摸支持为例,随着大屏时代的来临,触摸操作成为了一项愈发普遍的使用场景。对于触摸来说,很多时候最难的并不是技术实现,而是对于场景的理解。用手机操作技术文档,单击单元格时,对应的位置是放大还是不放大?

    对于不同的场景,用户需要的反馈是不同的,对于一款优秀的前端表格控件来说,这的确是技术难点,但却值得每一位开发者深入思考,并积极寻求优化方案。


    在一切以用户体验为中心的互联网时代,任何开发活动都应该以改善用户体验为终极目标,产品优化当然也不例外,并且,产品优化最忌陷入纯粹为了追求技术极限而优化的境地。

    而上述四个技术难点,在我和葡萄城的 SpreadJS 产品技术团队详细沟通后,也得到了充分的验证,因为,这同样是他们的客户在实际应用场景中最常面临的问题。

    SpreadJS 纯前端表格控件,由业内最早进行表格产品研发的技术团队——葡萄城推出,如今已完美复刻了 Excel 的 UI 布局、数据透视表、450多种计算公式和182种形状,只要是涉及到 Excel 文件上信息化系统的场景,他们的产品功能都已经覆盖到了。

    spreadjs

    而用户之所以敢于用 SpreadJS 替代传统 Excel,正是基于其产品层面已经完成了大量的优化和迭代任务。据我了解,SpreadJS 在性能优化方面除了引入了 Canvas 绘制模型,还率先使用了双缓存画布技术,从而解决了常见的闪屏问题;此外还提供了支撑复杂逻辑运算的计算引擎,可以帮助开发者打造一个长久稳定且可靠的应用系统。

    想要在产品层面进行优化,一方面需要“吃透”表格产品的底层技术逻辑,另一方面需要有大量实际的场景应用实践,这恰恰想要做独立开发的企业或者泛用性工具平台所不具备的,而借助 SpreadJS 这类专注于垂直领域的表格控件工具,则可以达到事半功倍的效果。

    三、结语

    正如我们前面所说,开发一款前端表格控件最难的不是技术,还有对表格产品的熟悉程度。因为纯技术的问题,在很多时候是难不住开发者的,靠时间与精力的投入总能弥补。然而,一款真正优秀的产品最重要的一点,则是对于应用场景,以及用户使用体验的细节把控。

    就像在表格类工具中有一个算投资回报率的公式,几乎没有人知道这个公式用 Excel、Google Doc 算出来的结果是不一致的。而这个小到会被所有人忽略的细节,也是 SpreadJS 的研发团队告诉我的。

    随着社会的发展,市场需要更灵活、效率更高的开发者解决方案,企业也要同时追求”开发速度“与”产品性能“,这在传统的开发思路中是不可兼得的,但如果做到善假于物,借助第三方工具平台则可以完全实现。

    付出一些成本换来更大的发展机会与空间,谁又能说不是一笔好买卖?

    文中资源扩展阅读:
    SpreadJS 官网:https://www.grapecity.com.cn/...

    segmentfault 思否

    查看原文

    赞 19 收藏 5 评论 0

    袁钰涵 发布了文章 · 11月22日

    思否技术周刊 | 智能手机屏幕之战正酣、三星宣布推出全新智能显示器:搭载 Tizen OS、飞书发布独立 APP「飞书文档」

    本周关键词:

    • 折叠手机
    • EUV
    • 三星
    • 飞书
    • AMD

    智能手机屏幕之战正酣,苹果测试折叠设备,OPPO将发可伸缩手机

    11 月 16 日,据外媒报道,苹果已经开始测试折叠屏,新设备预计会在 2022 年推出。今天国内智能手机厂商 OPPO 用一句“手机屏幕真的到’头’了么”,将其最新的概念机送上了热搜。

    三星的 Galaxy Fold,华为的 Mate X 已经在智能手机市场开辟了一条全新的道路。现在,似乎到了苹果认为的加入折叠屏大军的成熟时机,而 OPPO 则选择另辟蹊径,有望推出一款具有伸缩屏幕的新机。(来源:SegmentFault)

    韩媒:韩国本土企业在 EUV 光刻技术方面取得重大进展

    11 月 16 日,据韩国媒体 BusinessKorea 上周报道,韩国本土企业在 EUV 光刻技术方面取得了极大进展。但并没有提到是哪一家企业,合理推测应指代韩国整个半导体光刻产业。

    EUV 光刻技术是多种先进技术的复合体,例如多层反射镜,多层掩模,防护膜,光源和注册表(registries)。在过去的十年中,包括三星电子在内的全球公司进行了深入的研究和开发,以确保技术处于领先地位。

    按公司划分,全球六大公司的专利申请数占了总数的 59%,卡尔蔡司(德国)占 18%,三星电子(韩国)占 15%,ASML(荷兰)占 11%,S&S Tech(韩国)占 8%,台积电(台湾)为 6%,SK 海力士(韩国)为 1%。韩媒还提到了韩国专利数量,据韩国知识产权局 (KIPO) 发布的《近 10 年 (2011-2020 年) 专利申请报告》显示,2019 年,韩国提交的专利申请数量为 40 件,超过了国外企业的 10 件。(来源:IT 之家)

    三星宣布推出全新智能显示器:搭载 Tizen OS

    11 月 17 日,三星发布了全新的智能显示器,这是一款具有工作、学习和娱乐功能的全新显示解决方案。与三星智能电视一样,三星全新智能显示器也采用了 Tizen 操作系统,为 PC 和智能手机提供了众多的连接方式。

    用户只需使用 Tap View、App Casting 或 Apple AirPlay 2,就可以通过简单的点击连接个人移动设备。用户还可以通过三星 DeX 连接到显示器。

    在家庭办公和学习方面,由于内嵌 Wi-Fi,用户可以直接从显示器上查看、编辑和保存云端文档。远程访问功能还可以让用户通过无线方式远程访问 PC 上的文件或查看笔记本电脑上的内容。

    集成 Bixby 功能,可以通过语音控制显示器。自适应图片通过根据房间条件自动调整亮度和色温,优化任何观看环境的画质。三星智能显示器将提供两种尺寸,32 英寸和 27 英寸。目前已在美国、加拿大和中国发售,三星计划从 11 月底开始扩大发售市场。(来源:IT 之家)

    飞书推出全新版本「π」,发布独立 APP「飞书文档」

    11 月 18 日,字节跳动旗下企业协作平台飞书在北京举办「2020 飞书未来无限大会」。会上,飞书推出全新版本「π」,发布独立 App「飞书文档」,并在视频会议、即时沟通等功能上宣布了重大更新。这是飞书自推出以来首次举办大型产品发布会。据飞书方面介绍,过去一年中,字节跳动全体员工在飞书上创建了超过 2000 万篇文档。(来源:极客公园)

    2020 年全球无线通信网络技术发明专利排行:华为、高通、OPPO 位列全球前三


    11 月 19 日,IPRdaily 中文网与 incoPat 创新指数研究中心联合发布了 2020 年全球无线通信网络技术发明专利排行榜(TOP100),其中华为以 8607 件专利位列第一,Qualcomm 以 5807 件专利排名第二,OPPO 以 5353 件专利排名第三。

    该排行榜对 2020 年 1 月 1 日至 10 月 31 日公开的全球无线通信网络领域发明专利申请数量进行统计排名。排行榜中检索的无线通信网络领域专利由 WIPO(世界知识产权组织)的 IPC 国际专利分类号「H04W(无线通信网络)」定义。(来源:Pingwest)

    首位女性获得者!AMD CEO 获 2020 年芯片行业最高奖项

    11 月 20?日,AMD 首席执行官 Lisa Su 获得了 2020 年半导体行业协会(SIA)最高荣誉 Robert N.Noyce Award 的获得者,Lisa Su 是该奖项自 1991 年设立以来第一位获奖的女性。

    SIA 今年将以线上的形式举办本次颁奖活动,以往 SIA 每年都会在举办千人以上的线下颁奖典礼,以表彰在技术或公共政策方面为半导体行业做出杰出贡献的领导者。

    Robert N.Noyce Award 是为了纪念半导体产业的先驱 Robert n. Noyce,他是 Semiconductor 和英特尔的共同创始人。而颇具讽刺意味的是,一位 AMD 的领导者获得了这个奖项。(来源:SegmentFault)

    华为首家新模式服务店开业:机器人送料,全程透明维修

    11 月 20 日消息,华为消费者业务手机产品线总裁何刚在微博上预告,华为客户服务中心(北京盈科中心)今日开业。据悉,这是华为首家新模式服务店。

    何刚表示,该店不仅有自动送料机器人搭配面对面维修工程师,带来全程透明的安心服务;还有华为学堂首次进入服务店,和大家一起探索玩机技巧,体验更多华为全场景产品。

    此外,店里也提供免费的咖啡,提供了《拿起手机拍大片》等书籍,在店里等的话可以去沙发休息区看电视、看书、玩 pad,看一下华为的展品,还有不定时开放的华为课堂等。(来源:新浪科技)

    image.png

    查看原文

    赞 0 收藏 0 评论 0

    袁钰涵 发布了文章 · 11月20日

    今日华为云一元店开张,走过路过不要错过

    老实说,这么多年来,我见过 10 元店,5 元店,最便宜的见过 2 元店,但我没想到还有 1 元购,还是华为云的产品,今天就给你们见识一下,在华为云一块钱能买到什么,跟着小编,走好这条薅羊毛的阳光大道!!!

    一元店一号产品:新人域名注册

    北京、上海、广州都能买,只要一年就能拥有一整年的域名注册,还能开展流量分析,精准识别攻击风险,除了华为云,哪家能这么便宜呀?所以别犹豫了,赶紧加入购物车!!!

    (会场链接在这里:http://t.cn/A6GYWjfc#

    一元店二号产品:公司注册

    无论新老用户,皆可享受 1 元公司注册,全程办理简短又快速,结果还是有效的,避免企业公司注册时遇到不正规平的各种问题,让你无忧开公司~

    (会场链接在这里:http://t.cn/A6G4vI9I

    除了上面那些明明白白写着 1 元的产品,其实也有一些隐藏产品,需要我们自己推算出来薅羊毛,这里举个例子——云速建站!

    600个模板免费送,买了云速建站还送云服务器,五天内用的不满意了还能免费退款,买两年送一年,买三年送两年,这最后折算下来,最低能低至 0.7 元/天啊,这么大的优惠,除了华为云 11.11 上云嘉年华,哪里能见到?买多赚多,朋友们别犹豫了,能多买点就多买点吧,毕竟现在谁能少得了云建站呢!

    (会场链接在这里:http://t.cn/A6GWJY7z

    除了小编单拎出来的三个优惠产品,会场里面还有各种优惠叠加形成的 1 元购,甚至消费满 1111 元,即可参加抽奖,一旦抽中奖品还能感受一下 0 元购的魅力,有云服务需求的朋友们冲呀!!!!

    查看原文

    赞 1 收藏 0 评论 0

    袁钰涵 赞了文章 · 11月20日

    “开源软件供应链”,可能是对开源生态的一次重要重构

    大教堂与集市

    技术编辑:徐九丨发布自:思否编辑部

    关注开源的朋友应该都听说过《大教堂与集市》这本书,书中对大教堂与集市进行了很形象的两种比喻。

    大教堂给人的感觉,就像机构或者企业中传统的软件项目从立项到完结,有着详尽的流程规划以及质量把控;而开源软件更像集市的发展,没有既定的标准、没有严格的监管、没有明确的方向,看起来乱哄哄的杂乱无章,但却诞生了红帽、Android 和 iOS 这类基于开源的产物。

    不可否认,开源本身确实存在着一些“隐痛”,其中最大的问题就是生态的割裂与分化,并且没有一条基于开源构建出的可行的商业模式,特别是在国内,各大企业、厂商虽然都在积极投身开源,尝试将开源与商业进行融合,但能够真的将开源商业模式跑通的寥寥无几。

    为了让国内的开源软件生态得以良好发展、发挥出开源真正的价值,11 月中旬,在南京举办的开源软件供应链 2020 峰会中,各界开源人士围绕现代软件构建模式的关键供应关系网络进行了为期两天的探讨,而这次会议的主题 —— 「开源软件供应链」,可能正是解决这一问题的关键之一。这一条“供应链”,很可能将对开源生态进行一次重要重构。

    一、什么是开源软件供应链?

    “开源软件供应链”这一概念是由中科院软件所于2017年率先提出的。

    供应链并不是什么新概念,但这是国内第一次将其引入开源领域。对于大部分领域来说,供应链最难的是打通各个环节间的交易或者交付,而对开源软件生态来说,上下游包含什么在之前的蛮荒发展阶段都还不甚清晰,思考清楚生态链的构成也成了进一步发展的前提。

    峰会的开幕式上,中科院软件所所长赵琛从开源软件的源头出发,对比了国内外开源软件发展历史和现状,阐述了对开源软件生产方式、组织体系和运转机制的深刻理解。他表示,要建设可靠的开源软件供应链,不仅需要通过技术、社区和人才,还要保障软件供应的安全和高质量创新。为此,中科院软件所对开源软件供应链提出了一个定义:

    一个系统在开发和运行过程中,涉及到的所有开源软件上游社区、源码包、二进制包、包管理器、存储仓库、社区、基金会等,按照依赖、组合等形成的供应关系网络。

    从这个定义中我们可以看到,开源软件供应链的构成与传统的供应链模型存在着很大的差异。软件所副总工程师武延军在会上以《开源软件供应链研究及实践》为主题进行了分享,其中介绍到了开源软件供应链的几个特点:

    ? 商品迭代快
    ? 模块数量多
    ? 生产线上化
    ? 供应全球化
    ? 仓储集中化
    ? 用户多样化

    正是这几个特点,让开源软件供应链的构建变得非常复杂,但这也说明拥有可靠的开源软件供应链是大规模商用软件的基础,开源软件的发展过程,其实就是供应链整合优化的过程。

    二、开源软件供应链点亮计划,重构开源生态

    本次开源软件供应链峰会共设立了七大主题 —— 操作系统&编译器、虚拟化&云源生、人工智能、大数据、分布式系统、开源文化&开源商业、开源&教育,而这些主题的选择,应该就是指明了供应链中的几个关键节点 —— 核心技术的发展、商业模式的融合、开源力量的拓展。

    赵琛在会议中表示:“相较于发达国家,我国的开源基础核心技术仍然缺失,产业价值链仍然以中低端为主,生态关键环节仍存在挑战。”而武延军在峰会中也分享了国内开源面临的三个最主要的问题:

    1、开源产业价值不高
    2、开源社区贡献不足
    3、开源生态受制于人

    这是目前国内开源软件行业的现状。美国企业之所以占据着开源产业的高地,并且不存在自主可控的问题,原因之一就是具备成熟的开源软件供应链体系。只有打造出国内开源生态的供应链条,将目前零散的生态进行梳理重构,才可以分析出开源产业的核心价值与要素,更好的评估开源生态的短板与发展方向。

    为此,软件所也在不断的研究与实践包括构建开源软件知识图谱、建立供应链可靠性风险识别与评估体系、建立供应链的量化评价指标等等,这些行业规范以及链条逻辑节点的梳理,才是进一步发展的基础和前提。

    此外,生态的发展离不开人才的培养与输入。2020 年 4 月,软件所和 openEuler 社区共同主办了“开源软件供应链点亮计划-暑期2020”活动,旨在培养和寻找新生代的力量。该活动组委会负责人屈晟也于本次峰会中对项目的进展进行了介绍分享。

    报告显示,这次活动共吸引了 42 个开源技术社区、246 位社区导师参与,上线了 388 个项目。截至 10 月底活动结束,有 3 位同学通过社区选举成为 Apache 项目的 Committer,超过100 位同学的贡献被社区认可并成为对应项目的 Contributor。

    三、开源的新时代与新愿景

    本次峰会的重头戏之一是《开源的新时代与新愿景》圆桌论坛。但想要真的迎来开源的新时代,除了打造供应链,还需要更多的力量共同参与,想要蓬勃良好的发展,“政产学研资用”缺一不可。

    在武延军研究员的主持下, openEuler 社区理事会理事长江大勇、鹏城实验室启智平台秘书长刘明、清华大学计算机系长聘副教授陈渝、开放原子开源基金会秘书长杜玉杰、恒拓开源董事长马越、飞漫软件总经理魏永明等 6 位业界代表齐聚一台,分别代表供应链中不同的角色进行了深度交流,也为开源软件供应链点亮计划提出了一些可落地的发展建议。

    峰会主论坛的最后,武延军也代表组委会向广大科研人员宣读了科研成果开源倡议书,倡议科研人员积极开源科研成果,遵守开源规则、维护知识产权,为开源科研成果的传播、改进和再发布创造便利条件,让科研成果发挥更大价值,服务更多领域。

    相信国内的开源软件生态必将随着行业的规范与协作,进入新一个新时代,而新时代的到来,必然也承载着新的愿景。

    开源会走向怎样的未来?又能为社会带来怎样的价值?在构建开源软件生态的路上,大教堂和集市是殊途同归还是分道扬镳,书中作者并没有给出答案,每一个从事开源的人可能也没有答案。

    开源之路任重道远,但“开源软件供应链”概念的提出以及“开源软件供应链点亮计划”的发布实施,必将让开源领域的从业者拥有更强大的信心与底气,去链接更多开源力量、共建开源软件生态、发挥出开源更大的社会价值。

    segmentfault 思否

    查看原文

    赞 13 收藏 1 评论 0

    袁钰涵 发布了文章 · 11月20日

    华为云建站,带你告别把钱打水漂的日子

    云建站是大势所趋,中小企业想继续发展,拥有更大的知名度与企业业务范围,都离不开云建站,近年来也越来越多的企业通过各种途径,譬如聘请程序员为公司维护网站;又或者找程序员定制网站模板,让其外包运行;还有的会选择一家企业的云建站服务,二者深度合作,进行外包。

    这里小编为你提供了第三条路,那就是购买华为云的云建站服务,让华为云为你运行网站。

    选择企业进行云建站外包服务最大的坑是企业跑路,而华为云强大的实力以及自身所带的知名度让这一风险性降到了最低,7*24小时售后保障,保证一年到头能把网站运营得妥妥的。

    企业云建站第二大的坑是风格老旧,做出来的页面非常静态化。选择华为云,为你提供数千种优质模板可供选择,图片和案例内容都能得到充分展现,即使企业里没有程序员,也能套用模板,进行企业的建站。如果企业对云建站有着更高的要求,企业能选择购买华为云的 1V1 专家云建站服务,短期即可交付,又快质量又好,能满足大部分中小企业的需求。

    企业云建站的第三大坑是管理困难,内容更新、数据统计还要人肉操作。华为云建站平台自带一站式管理系统,囊括会员、商品、文章、营销活动、统计、仓储、物流等等多项管理功能,一个后台就能掌握全局,降低企业管理和运营成本。

    而小编今天除了为大家找出云建站的那些痛点,为大家提供一条优质解决路径外,小编还带来了一个超级好消息——那就是华为云 11.11 上云嘉年华(链接放这里,方便各位大佬点击查看:http://t.cn/A6GWJY7z),11.11网站建设专场里有超级优惠的云建站产品,398元就能搭建网站+小程序。营销型网站低至3.4折,还送.com国际顶级域名。不仅如此,华为云还提供专家1v1定制服务,帮你设计任何你想要的网站风格,不满意还可以全额退款。

    image.png
    image.png

    反正早买迟买都得买,不如就趁着优惠快点买吧!大家冲呀!!!

    查看原文

    赞 1 收藏 0 评论 0

    袁钰涵 赞了文章 · 11月17日

    2020 中国技术先锋年度评选启动,三大类别奖项申报中

    2020 中国技术先锋年度评选

    前言

    如果列举 2020 年中国技术“热词”,频频被刷屏的“新基建”一定位列其中。

    突如其来的疫情让全人类经历了一次“数字化生存”大考,政企上云、传统行业的数字化转型也在大环境中被催化。作为新基建的底层支撑,芯片、服务器、操作系统、中间件、数据库等一系列信创技术,在全国范围内被广泛关注。

    日新月异的技术革命,数字经济的新一轮爆发,背后是无数开发者和科技企业夜以继日的付出。他们面对不断变化的外部环境,扎根行业,他们信奉技术力量敢于技术创新践行技术信仰,他们是技术先锋,探索改变世界的方向。

    SegmentFault 思否作为中国领先的新一代开发者社区,依托数百万开发者用户数据分析,及各科技企业厂商和个人在国内技术领域的行为、影响力指标,即将展开第二届“中国技术先锋”年度评选

    入选企业和个人将受邀参加 2020 中国技术先锋颁奖晚宴,并获得 SegmentFault 思否优先报道持续关注流量扶持的机会,我们将始终关注那些用技术推动时代变革的先锋企业、用技术探索未来的先锋开发者。

    奖项名单(拟)如下,现报名通道已正式开启,欢迎点击文末 “阅读原文”,填写申报表,推荐或自荐。

    中国技术品牌影响力企业榜

    1、 榜单必须以公司为主体申报参选,可推荐或自荐;
    2、 参选公司必须为科技型企业,拥有成熟的产品服务、顶级技术人才储备和不断创新的技术能力;
    3、 参评公司必须持续关注开发者生态,有各种形式的技术内容输出,如:积极参与或举办技术活动、有持续更新的技术博客、有成熟开源项目/积极参与开源等;
    4、 参评公司技术品牌美誉度较高,在开发者人群中具备较高知名度或影响力;

    参与榜单评选的公司,可结合自身优势同时申报以下 1 项或多项奖项,奖项可以以公司为主体申报,也可以以团队 / 产品线为主体申报。

    生态运营奖

    通过输出技术内容、参与或组织技术活动等形式,在构建和持续运营开发者生态上取得突出成果的企业、团队或产品线。

    技术向善奖

    具备较强社会责任感,能够将技术品牌构建与社会、经济、教育、公益相结合,或产品技术成果对于社会有较大贡献的企业、团队或产品线。

    技术文化奖

    企业以技术为导向或具备较好的技术文化,能够通过技术博客、开发者社区、技术活动将前沿技术成果和经验进行系统性对外&对内输出的企业、团队或产品线。

    最佳技术服务奖

    为行业提供基础技术服务的创新型科技企业或产品线,数字经济的基石。

    最佳技术应用奖

    能够将行业领先技术应用到某一特定行业领域,并取得突出成绩的企业或产品线。

    中国开源先锋30 人

    1、 榜单必须以个人为主体申报参评,可推荐或自荐;
    2、 参选个人必须持续关注开源,以不同形式积极参与开源,如:拥有成熟的开源项目、积极参与代码贡献、积极布道或组织开源活动、主导开源社区建设等;
    3、 参选个人可以是开源项目的开发者,也可以是开源社区的运营人员,不限技术背景,但应在开源领域取得了一定建树;

    最受开发者欢迎的技术活动

    1、 参选主体必须为在 2020 年 1 月 1 日至 12 月 31 日已举办完成的技术活动,可推荐或自荐;
    2、 参选活动的主要受众必须为开发者,且开发者占参会人员比例 80% 以上;
    3、 参选活动可以是线上/线下技术沙龙、技术竞赛、技术大会等,形式不限,但应为面向开发者的公开活动,在开发者人群中具备较高知名度或影响力/闭门会/培训活动/公司内部活动不在本次评选范围中;
    4、 参选活动须具备独特性或亮点,活动美誉度高,能对技术创新、开发者成长带来正向影响。

    评选维度:

    1、 活动规模及影响力:活动参与和影响的开发者人数;
    2、 活动内容质量:是否有知名技术专家参会,是否有较为丰富的技术内容输出和沉淀;
    3、活动品牌影响力:是否为系列活动,活动 IP 打造等。

    TopWriter年度榜单

    SegmentFault 思否社区有一群卓越的开发者,他们热衷于分享知识与经验,他们布道技术未来,他们让众多开发者受益,他们叫「Top Writer」。

    开发者是社区的基石,也是行业发展、技术发展的源动力。

    SegmentFault 思否将根据社区用户行为大数据(如文章 & 问答发布数量、获得声望 & 点赞量等)等综合分析,从「技术问答」和「专栏文章」两个维度进行了本年度「Top Writer」的评选。

    评选流程 & 参选方式

    1.报名征集:即日起至 2020?年 11 月 30?日
    2.走访/调研 & 评选评审
    3.榜单发布:2020?年 12 月
    4.报名链接:报名报单

    2020 中国技术先锋年度评选

    评选咨询:pr@sifou.com
    评选咨询:微信搜索 sifous
    媒体合作:bd@sifou.com

    查看原文

    赞 20 收藏 0 评论 0

    袁钰涵 赞了文章 · 11月16日

    打造自主行驶汽车的第一步:3D对象跟踪和传感器融合

    image
    一些快递公司,已经开始试点通过无人机或无人车递送快递;一些汽车品牌,正在研发可以自主行驶的车辆并取得了一定的成果;甚至一些消费级电子设备,也已经开始装备类似 LiDAR 这样的激光定位雷达。传说中的未来生活似乎已经触手可及!

    不过你就不好奇,这到底是怎么实现的?最重要的事,这些自主行驶的车辆,到底是如何判断周围环境呢?

    这首先要从 3D 对象的跟踪说起。这是个很庞大的话题,本文将主要聚焦于如何借助 Amazon SageMaker Ground Truth 对 3D 点云数据进行标记的能力对 3D 点云数据执行数据转换,从而使用 SageMaker Ground Truth 来标记 3D 对象跟踪。关于其他功能的更多详细信息,请参阅 AWS News 博客

    基于 SageMaker Ground Truth 的 3D 对象跟踪

    自动驾驶车辆(AV)厂商通常使用 LiDAR 传感器生成对车辆周边环境的 3D 成像结果。例如,他们会将 LiDAR 安装在车辆顶端,借此连续捕捉周边 3D 环境的时间点快照。LiDAR 传感器输出的是一系列 3D 点云图像帧(常见的捕捉速率为每秒10帧)。为了建立起能够自动跟踪车辆周边重点对象(例如其他车辆及行人)的感知系统,自动驾驶厂商往往首先在3D点云图像帧中手动标记对象,而后使用标记后的 3D 图像帧训练机器学习(ML)模型。

    在构建感知系统方面,目前最常见的做法是使用来自多个传感器的输入以弥补单一传感器的局限。例如,摄像机能够提供重要的上下文信息 —— 例如当前交通信号灯显示红色、黄色还是绿色。但其在黑暗条件下的感知能力却非常有限。在另一方面,LiDAR 传感器无法提供特定的上下文背景(例如交通信号灯的颜色),但却能在360度范围内实现纵深信息的收集,且无论外部光照条件如何。

    SageMaker Ground Truth 能够轻松在一系列 3D 点云帧上标记对象以构建机器学习训练数据集,且支持将多达8台摄像机输入的 LiDAR 传感数据加以融合。SageMaker Ground Truth 做图像融合要求视频帧与 3D 点云帧进行预先同步。在启用传感器融合功能之后,标记人员可以配合同步视频帧查看 3D 点云帧。除了为标记工作提供更多视觉环境信息之外,传感器融合功能还会将 3D 点云中绘制的任何标签投射至视频帧,保证在某一帧内完成的标记调整将准确出现在另一帧中。

    在本文中,我们将演示如何准备 3D 点云数据与同步视频数据,以供 SageMaker Ground Truth 使用。我们将从 KITTI Vision Benchmark Suite 开始,这是现有流行的自动驾驶数据集*。除了视频数据外,该数据集还包含由 Velodyne LiDAR 传感器生成的 3D 点云数据。具体操作步骤如下:

    • 明确 SageMaker Ground Truth 3D 点云标记作业的输入数据格式与要求。
    • 将 KITTI 数据集从局部坐标系转换为世界坐标系。
    • 将视频数据与同步 LiDAR 数据相关联,以进行传感器融合。
    • 准备一个输入 SageMaker Ground Truth 的 Manifest 文件。
    • 为 3D 点云对象检测创建一个标记作业,并跨越一系列帧进行跟踪。
    • 在工作人员标记 UI 界面当中使用辅助标记工具。

    要完成本轮演练,请使用 Ground Truth Labeling Jobs 下 Notebook 实例中 Amazon SageMaker Examples 选项卡下的 3D-point-cloud-input-data-processing.ipynb 这个 Notebook。我们也可以在 GitHub 上获取此 Notebook

    3D 点云标记作业输入数据

    在本节中,我们将介绍 Ground Truth 输入数据的概念,以及对于 3D 点云标记作业的基本要求。

    3D 点云帧与 3D 点云序列

    所谓「点云帧」,是指某一时刻 3D 场景下所有 3D 点的集合。每个点都使用三个坐标来描述,分别为 x、y 与 z。向点云中添加颜色及点强度变化,即可使点具备其他属性,例如强度 i 或者红色(r)、绿色(g)及蓝色(b)色彩通道的值(8位)。所有位置坐标(x, y, z)皆以米为单位。在创建 Ground Truth 3D 点云标记作业时,大家可以使用 ASCII 或者二进制格式的点云数据。

    而「序列」的定义,则是在 LiDAR 移动时(例如位于车辆顶端的 LiDAR)所捕捉到的3D点云帧的时间序列集合。SageMaker Ground Truth 将序列文件格式定义为各帧的有序排列结果,其中每个帧都与时间戳相关联。

    在本文中,我们将演示如何根据KITTI数据集创建SageMaker Ground Truth 序列文件,并以此为基础创建用于3D对象跟踪的标记作业。

    世界坐标系

    在对象跟踪中,大家可以在参考点(自动驾驶汽车)移动时跟踪对象(例如人行道上的行人)的运动轨迹。我们的参考点上安装有传感器以感应周边的环境,这也是目前「自主车辆」的常见设计思路。

    在执行对象跟踪时,我们需要使用世界坐标系(也称为全局参照系),这是因为自主车辆本身确实是在世界范围内移动。通常,SageMaker Ground Truth 要求我们将点云数据转换为您所选定的参考坐标系。大家一般可以通过将 3D 帧中的各个点与 LiDAR 传感器的外部矩阵相乘来完成此类转换。传感器的外部矩阵是一种同构转换矩阵,用于将数据的透视图从传感器自身的坐标系转换为世界坐标系。均匀变换是指对三个旋转轴(x轴、y轴与z轴)以及原点平移的序列转换,旋转矩阵则为定义三者旋转序列的3x3矩阵。

    本文将向大家介绍如何使用外部矩阵将 KITTI 3D 帧从局部坐标系转换为世界坐标系。KITTI 数据集为每个 3D 点云帧提供一对应的外部矩阵。我们可以使用来自自主车辆的 GPS 数据得出外部矩阵,并使用 NumPy 矩阵乘法函数将此矩阵与帧中的各个点相乘,将其转换为 KITTI 数据集使用的世界坐标系。

    通过自定义设置,大家还可以使用 GPS/IMU 与自主车辆上 LiDAR 传感器的相对位置与方向(纬度/经度/高度/侧倾角/俯角/仰角)计算外部变换矩阵。例如,我们可以基于_pose = convertOxtsToPose(oxts)_从 KITTI原始数据计算车辆姿态,并将 oxts 数据转换为由4x4刚性变换矩阵指定的局部欧氏姿势。接下来,就可以使用世界坐标系中的参考帧转换矩阵将该姿态转换矩阵转换为全局参考帧。

    传感器融合

    LiDAR 传感器与每台摄像机都拥有自己的外部矩阵,SageMaker Ground Truth 利用它们来实现传感器融合功能。要将标签从 3D 点云投射至摄像机平面图像,SageMaker Ground Truth 需要将 3D 点由 LiDAR 坐标系转换为摄像机坐标系。这一转换通常是使用 LiDAR 外部矩阵将 3D 点从 LiDAR 自有坐标转换为世界坐标系来完成的。接下来,我们使用摄像机外部矩阵的逆(从世界到摄像机)将上一步中获得的世界坐标系3D点转换为摄像机平面图像。如果 3D 点云数据已经转换为世界坐标系形式,则无需进行第一次转换,而且3D与2D之间的转换将仅需要使用摄像机外部矩阵。

    如果在世界坐标系中存在一个旋转矩阵(由轴旋转组成)与平移矢量(或原点),而非单一外部变换矩阵,则可以直接使用旋转与平移来计算车辆姿态。具体参见以下代码:

    rotation = [[ 9.96714314e-01, -8.09890350e-02, 1.16333982e-03],
    [ 8.09967396e-02, 9.96661051e-01, -1.03090934e-02],
    [-3.24531964e-04, 1.03694477e-02, 9.99946183e-01]]
     origin= [1.71104606e+00
     5.80000039e-01
     9.43144935e-01]
    from scipy.spatial.transform import Rotation as R
    # position is the origin
    position = origin
    r = R.from_matrix(np.asarray(rotation))
    # heading in WCS using scipy
    heading = r.as_quat()

    如果拥有一个4x4外部矩阵,且矩阵形式为[R T; 0 0 0 1],其中R为旋转矩阵,T为原点平移矢量,则意味着我们可以从矩阵中提取旋转矩阵与平移矢量,具体如下所示:

    import numpy as np
    transformation
    = [[ 9.96714314e-01, -8.09890350e-02, 1.16333982e-03, 1.71104606e+00],
     [ 8.09967396e-02, 9.96661051e-01, -1.03090934e-02, 5.80000039e-01],
     [-3.24531964e-04, 1.03694477e-02, 9.99946183e-01, 9.43144935e-01],
     [ 0, 0, 0, 1]]
    transformation = np.array(transformation )
    rotation = transformation[0:3][0:3]
    translation= transformation[0:3][3]
    from scipy.spatial.transform import Rotation as R
    # position is the origin translation
    position = translation
    r = R.from_matrix(np.asarray(rotation))
    # heading in WCS using scipy
    heading = r.as_quat()
    print(f"position:{position}nheading: {heading}")
    Python

    在传感器融合当中,我们可以通过原点位置(用于平移)以及四元数指向(用于指示xyz轴的旋转)以传感器姿态的形式提供外部矩阵。以下示例代码是在输入 Manifest 文件中使用的姿态 JSON 文件:

    {
     "position": {
     "y": -152.77584902657554,
     "x": 311.21505956090624,
     "z": -10.854137529636024
     },
     "heading": {
     "qy": -0.7046155108831117,
     "qx": 0.034278837280808494,
     "qz": 0.7070617895701465,
     "qw": -0.04904659893885366
     }
    }

    所有位置坐标(x, y, z)皆以米为单位,所有姿态朝向(qx, qy, qz, qw)均以四元数在空间方向上的朝向为指标。对于每台摄像机,分别提供自摄像机外部提取到的姿态数据。

    摄像机校准、内部与失真

    几何摄像机校准(也称为摄像机切除)用来标定摄像机的镜头和图像传感器参数。我们可以使用这些参数校正镜头失真、测量对象的真实大小或确定场景中摄像机的位置。此外,如果相机图像失真,也可以提供额外的校准参数(如内部和失真)来校正图像。
    相机参数包括本征矩阵参数、外部矩阵参数与失真系数,点击此处了解更多。详见以下代码:

    # intrinsic paramaters
    fx (float) - focal length in x direction.
    fy (float) - focal length in y direction.
    cx (float) - x coordinate of principal point.
    cy (float) - y coordinate of principal point.
    # Radial distortion parameters
    k1 (float) - Radial distortion coefficient.
    k2 (float) - Radial distortion coefficient.
    k3 (float) - Radial distortion coefficient.
    k4 (float) - Radial distortion coefficient.
    # Tangential distortion parameters
    p1 (float) - Tangential distortion coefficient.
    p2 (float) - Tangential distortion coefficient.

    摄像机的内部变换通过以下公式进行定义,其中 * 代表矩阵乘法。

    |x| |f_x, 0, c_x| |X|
    |y| = |0, f_y, c_y| * |Y|
    |z| | 0, 0, 1 | |Z|

    输入 Manifest 文件

    Ground Truth 采用输入 Manifest 文件,其中的每一行都描述了需要由注释人员(或者对某些内置任务类型进行自动标记)完成的任务单元。输入 Manifest 文件的格式由您的实际任务类型决定:

    • 3D点云对象检测或者语义分段标记作业 —— 输入 Manifest 文件中的每一行,都包含与单一3D点云帧及传感器融合数据相关的信息。此 Manifest 文件被称为3D点云帧输入 Manifest。
    • 3D点云对象检测与标记作业跟踪 —— 输入 Manifest 文件中的每一行都包含指向某一序列文件的链接,该文件负责定义一系列与3D点云帧及传感器融合瞻前顾后数据。其中各序列被称为3D点云序列,而此 Manifest 被称为点云序列输入 Manifest。

    在本次实验中,我们将创建一个点云序列 Manifest 文件。大家也可以修改解决方案以创建自己的点云帧输入 Manifest。示例 Notebook 中提供了更多详细信息。

    将 KITTI 数据集转换为世界坐标系

    我们可以使用 Notebook 运行本节中的各代码片段。

    世界坐标系由具体数据集决定。某些数据集会使用第一帧中的LiDAR位置作为原点,数据集中所有其他3D帧皆以第一帧作为参考对象,包括车辆的行驶方向与位置也将以第一帧为原点。也有一部分数据集会选取不同于原点的设备位置作为起点。KITTI 数据集使用第一帧位置作为其世界坐标系的参考对象。

    本文将展示如何相对于第一帧中的 LiDAR 传感器原点,将 KITTI 数据集转换为全局参考帧,以便 SageMaker Ground Truth 能够实际使用。KITTI 原始数据集中包含各个帧的旋转矩阵与平移矢量,我们可以使用此数据为各个帧计算外部矩阵。处理原始数据可能比较困难,因此建议大家使用 pykitti Python 模块以降低 KITTI 数据集的处理门槛。

    在数据集中,dataset.oxts[i].T_w_imu负责给出第i帧的LiDAR外部变换,我们可以将其与该帧中的各点相乘,以使用NumPy矩阵乘法函数matmul: matmul(lidar_transform_matrix, points)将其转换为世界坐标系下的帧。通常,将LiDAR帧中的各点与 LiDAR 外部矩阵相乘,即可实现世界坐标系转换。其中T_w_imu 约定即代表从 IMU 到世界坐标系的转移(因此标记为 T_destinationFrame_originFrame)。

    以下示例代码,说明了如何将 KITTI 点云帧转换为世界坐标系:

    import pykitti
    import numpy as np
    basedir = '/Users/nameofuser/kitti-data'
    date = '2011_09_26'
    drive = '0079'
    # The 'frames' argument is optional - default: None, which loads the whole dataset.
    # Calibration, timestamps, and IMU data are read automatically.
    # Camera and velodyne data are available via properties that create generators
    # when accessed, or through getter methods that provide random access.
    data = pykitti.raw(basedir, date, drive, frames=range(0, 50, 5))
    # i is frame number
    i = 0
    # customer computes lidar extrinsics
    lidar_extrinsic_matrix = data.oxts[i].T_w_imu
    # velodyne raw point cloud in lidar scanners own coordinate system
    points = data.get_velo(i)
    # transform points from lidar to global frame using lidar_extrinsic_matrix
    def generate_transformed_pcd_from_point_cloud(points, lidar_extrinsic_matrix):
     tps = []
     for point in points:
     transformed_points = np.matmul(lidar_extrinsic_matrix, np.array([point[0], point[1], point[2], 1], dtype=np.float32).reshape(4,1)).tolist()
     if len(point) > 3 and point[3] is not None:
     tps.append([transformed_points[0][0], transformed_points[1][0], transformed_points[2][0], point[3]])
     return tps
    # customer transforms points from lidar to global frame using lidar_extrinsic_matrix
    transformed_pcl = generate_transformed_pcd_from_point_cloud(points, lidar_extrinsic_matrix)

    将视频数据与 LiDAR 数据相关联,以实现传感器融合

    KITTI 提供 LiDAR 外部与相机外部矩阵。我们可以使用这些矩阵提取姿态数据,而后根据3D点云序列输入 Manifest 的需求将这部分数据转换为 JSON 格式。

    对于 KITTI 数据集,可以使用 pykitti Python 模块加载 KITTI 数据。在数据集中,.oxts[i].T_w_imu 负责给出第i帧的 LiDAR 外部矩阵(lidar_extrinsic_transform)。我们可以将其转换为平移与四元数指向形式,分别代表 JSON 格式的 LiDAR 朝向与位置。具体请参见以下代码:

    from scipy.spatial.transform import Rotation as R
    # utility to convert extrinsic matrix to pose heading quaternion and position
    def convert_extrinsic_matrix_to_trans_quaternion_mat(lidar_extrinsic_transform):
     position = lidar_extrinsic_transform[0:3, 3]
     rot = np.linalg.inv(lidar_extrinsic_transform[0:3, 0:3])
     quaternion= R.from_matrix(np.asarray(rot)).as_quat()
     trans_quaternions = {
     "translation": {
     "x": position[0],
     "y": position[1],
     "z": position[2]
     },
     "rotation": {
     "qx": quaternion[0],
     "qy": quaternion[1],
     "qz": quaternion[2],
     "qw": quaternion[3]
     }
     }
     return trans_quaternions

    同样,我们也可以使用相机外部参数提取相机姿态数据。我们可以通过inv(matmul(dataset.calib.T_cam0_velo, inv(dataset.oxts[i].T_w_imu)))在第i帧中计算cam0的Camera_extrinsic_transform,进而将其转换为cam0的朝向与位置。详见以下代码:

    def convert_camera_inv_extrinsic_matrix_to_trans_quaternion_mat(camera_extrinsic_transform):
     position = camera_extrinsic_transform[0:3, 3]
     rot = np.linalg.inv(camera_extrinsic_transform[0:3, 0:3])
     quaternion= R.from_matrix(np.asarray(rot)).as_quat()
     trans_quaternions = {
     "translation": {
     "x": position[0],
     "y": position[1],
     "z": position[2]
     },
     "rotation": {
     "qx": quaternion[0],
     "qy": quaternion[1],
     "qz": quaternion[2],
     "qw": -quaternion[3]
     }
     }
     return trans_quaternions

    相机校准:内部与失真

    KITTI 数据集为每台摄像机提供一项校准参数。例如,data.calib.K_cam0 当中就包含以下相机内部矩阵:

     fx 0 cx
     0 fy cy
     0 0 1

    创建输入 Manifest 文件

    将 KITTI 数据集中的一系列帧转换为世界坐标系,并从 LiDAR 及相机外部矩阵提取姿态信息之后,就可以创建一个包含传感器融合数据的3D点云序列 Manifest 文件了。我们可以使用以下函数为序列输入 Manifest 文件自动创建序列文件:

    def convert_to_gt():
     # The 'frames' argument is optional - default: None, which loads the whole dataset.
     # Calibration, timestamps, and IMU data are read automatically.
     # Camera and velodyne data are available via properties that create generators
     # when accessed, or through getter methods that provide random access.
     data = pykitti.raw(basedir, date, drive, frames=range(0, 50, 5))
     image_paths = [data.cam0_files, data.cam1_files, data.cam2_files, data.cam3_files]
     camera_extrinsic_calibrations = [data.calib.T_cam0_velo, data.calib.T_cam1_velo, data.calib.T_cam2_velo, data.calib.T_cam3_velo]
     camera_intrinsics = [data.calib.K_cam0, data.calib.K_cam1, data.calib.K_cam2, data.calib.K_cam3]
     seq_json = {}
     seq_json["seq-no"] = 1
     seq_json["prefix"] = 's3://pdx-groundtruth-lidar-test-bucket/pdx-groundtruth-sequences/kittiseq2/frames/'
     seq_json["number-of-frames"] = len(data)
     seq_json["frames"] = []
     default_position = {"x": 0, "y": 0, "z": 0}
     default_heading = {"qx": 0, "qy": 0, "qz": 0, "qw": 1}
     for i in range(len(data)):
     # customer computes lidar extrinsics
     lidar_extrinsic_matrix = data.oxts[i].T_w_imu 
     # velodyne raw point cloud in lidar scanners own coordinate system
     points = data.get_velo(i)
     # customer transforms points from lidar to global frame using lidar_extrinsic_matrix
     transformed_pcl = generate_transformed_pcd_from_point_cloud(points, lidar_extrinsic_matrix) 
     # Customer computes rotation quaternion and translation from LiDAR Extrinsic
     trans_quaternions = convert_extrinsic_matrix_to_trans_quaternion_mat(lidar_extrinsic_matrix)
     # Customer uses trans_quaternions to populates GT ego veicle pose
     ego_vehicle_pose = {}
     ego_vehicle_pose['heading'] = trans_quaternions['rotation']
     ego_vehicle_pose['position'] = trans_quaternions['translation']
     # open file to write the transformed pcl
     with open(output_base+"/"+str(i)+'.txt', "w") as out:
     writer = csv.writer(out, delimiter=' ', quotechar='"', quoting=csv.QUOTE_MINIMAL)
     for point in transformed_pcl:
     writer.writerow((point[0], point[1], point[2], point[3]))
     frame = {}
     frame["frame-no"] = i
     frame["frame"] = str(i)+'.txt'
     frame["unix-timestamp"] = data.timestamps[i].replace(tzinfo=timezone.utc).timestamp()
     frame["ego-vehicle-pose"] = ego_vehicle_pose
     images = []
     image_dir_path = os.path.join(output_base, 'images')
     if not os.path.exists(image_dir_path):
     os.makedirs(image_dir_path)
     for j in range(len(image_paths)):
     # copy image
     image_path = image_paths[j][i]
     image_suffix_path = 'images/frame_'+str(i)+'_camera_'+str(j)+'.jpg'
     copyfile(image_path, os.path.join(output_base, image_suffix_path))
     # If customer has the camera extrinsics then they use them to compute the camera transform
     camera_transform= np.linalg.inv(np.matmul(camera_extrinsic_calibrations[j], np.linalg.inv(data.oxts[i].T_w_imu)))
     # Customer computes rotation quaternion and translation from camera inverse Extrinsic
     cam_trans_quaternions = convert_camera_inv_extrinsic_matrix_to_trans_quaternion_mat(camera_transform)
     image_json = {}
     image_json["image-path"] = image_suffix_path
     image_json["unix-timestamp"] = frame["unix-timestamp"]
     image_json['heading'] = cam_trans_quaternions['rotation']
     image_json['position'] = cam_trans_quaternions['translation']
     image_json['fx'] = camera_intrinsics[j][0][0]
     image_json['fy'] = camera_intrinsics[j][1][1]
     image_json['cx'] = camera_intrinsics[j][0][2]
     image_json['cy'] = camera_intrinsics[j][1][2]
     image_json['k1'] = 0
     image_json['k2'] = 0
     image_json['k3'] = 0
     image_json['k4'] = 0
     image_json['p1'] = 0
     image_json['p2'] = 0
     image_json['skew'] = 0
     images.append(image_json)
     frame["images"]=images
     seq_json["frames"].append(frame)
     with open(output_base+'/mykitti-seq2.json', 'w') as outfile:
     json.dump(seq_json, outfile)

    创建标记作业

    输入 Manifest 文件创建完成后,即可以用 Notebook 创建一个标记作业。在创建标记作业时(参照 Notebook 内的相关说明),请使用内部工作团队,以保证能够在工作人员门户中随时查看各工作人员任务并与工作人员标记 UI 进行交互。

    标记作业的预处理时间,是任务开始时显示在工作人员门户中的所需时间。具体时长取决于输入数据的大小、点云的分辨率以及用于传感器融合的数据(如果存在)。因此,在使用 Notebook 时,标记作业可能需要几分钟时间才会显示在工作人员门户当中。在任务出现后,将其选定并选择 Start Working。

    关于工作人员 UI 的更多详细信息,请参阅3D 点云对象跟踪。以下为工作人员标记UI中提供的部分辅助标记工具:

    • 标签自动填充:当工作人员向帧中添加框体时,此功能会自动将框体请回至序列中的所有帧。当工作人员手动调整其他帧中同一对象的注释时,自动填充标签也将进行自动调整。
    • 标签插值:工作人员在两个帧中标记单一对象后,Ground Truth 会使用这些注释在两帧之间的移动中对该对象进行插值。
    • 捕捉:工作人员可以在对象周边添加一个框体,并使用键盘快捷键或菜单选项让 Ground Truth 自动拟合工具紧紧贴合对象的边界。
    • 适应地面:在工作人员向3D场景中添加框体后,工作人员可以自动使该框体与地面相适应。例如,工作人员可以使用此功能将框体贴合至场景中的道路或人行道。
    • 多视图标记:工作人员将3D框体添加至3D场景之后,侧面板上会显示正面与侧面两个透视图,以帮助工作人员在对象周边紧密调整该框体。工作人员可以在3D点云或侧面板上调整标签,相应调整也会实时显示在其他视图当中。
    • 传感器融合:如果提供传感器融合数据,则工作人员可以在3D场景与2D图像当中调整注释,且该注释会被实时投射至其他视图当中。

    以下视频演示了插值的过程。工作人员只需要将两个长方形框体添加至序列中的第一帧与最后一帧。这些手动添加的框体将在左下方的导航栏中以红色段表示,中间的所有标签(在导航栏中显示为蓝色)均由 Ground Truth 负责插入。
    image

    下图所示,为多视图标记与传感器融合。将长方形框体添加至3D点云可视化图后,我们可以在三个侧视图与摄像机图像中对其进行调整。
    image

    除了标签之外,大家还可以添加标签属性以收集各个对象上的其他元数据。在以下视频中,可以看到带有「Car」标签的长方形框体。该标签还包含与之关联的两项标签属性:Occlusion 与 Color。工作人员可以为各个标签属性选择对应的值。
    image

    Ground Truth 每15分钟自动保存一次注释。在作业完成之后,选择 Submit。当任务完成后,输出数据将被保存于在 HumanTaskConfig 中指定的 Amazon Simple Storage Service (Amazon S3)存储桶当中。

    要了解关于输出数据格式的更多详细信息,请参阅 Ground Truth 输出数据页面中的3D点云对象跟踪部分。

    总结

    在本次实验中,我们了解了 Ground Truth 3D点云标记作业对于输入数据的要求与选项,同时尝试创建了对象跟踪标记作业。关于我们能够在3D点云标记作业中实现的其他任务类型,请参阅3D点云任务类型。另外,我们还要感谢 KITTI 团队为我们提供这套宝贵的数据集,用于演示如何准备3D点云数据并将其引入 SageMaker Ground Truth。

    *KITTI 数据集拥有自己的使用许可。请保证您对数据集的使用方式完全符合其中提出的条款与要求。

    image

    查看原文

    赞 4 收藏 1 评论 0

    认证与成就

    • 获得 30 次点赞
    • 获得 1 枚徽章 获得 0 枚金徽章, 获得 0 枚银徽章, 获得 1 枚铜徽章

    擅长技能
    编辑

    (??? )
    暂时没有

    开源项目 & 著作
    编辑

    (??? )
    暂时没有

    注册于 9月14日
    个人主页被 4.3k 人浏览

    bt365体育投注