前端性能优化思想模型,在自动驾驶领域的实践(上)

简介: 前端性能优化思想模型,在自动驾驶领域的实践

背景

上一篇文章《当前端遇到自动驾驶》有详细介绍过自动驾驶点云标注的背景,就不再赘述了,这里只稍微再补充一点领域知识:

常见的点云标注任务有 动态帧(连续帧),静态帧(叠帧),2D&3D融合 等等。

不同的任务场景有不同的技术难点,我们今天针对动&静态帧标注这两个场景下的点云渲染和加载性能优化来展开。




挑战

挑战1: 数据量大

每个PCD[1]的点云数量高达几十万量级,而3D框体调整需要实时渲染,全量扫描点云极度消耗机器资源,产生交互卡顿,如何优化?

挑战2: 文件体积大

每个PCD文件包含大量数据,ASCII编码模式下单文件大小高达20多MB,在静态帧标注场景,单帧能达到几百MB,用户光加载个文件都要等很久,如何优化?

静态帧:将N个PCD数据叠加在同一个场景(scene)下进行处理,主要用于标注一些建筑物和路标等静止物体。

方法论

在进入实际问题解决之前,我们先引入几个思想模型(方法论):

分治

分治[2],字面意思就是“分而治之”,就是把复杂问题拆分成多个简单问题来处理,最后再合并处理结果。

这个思想在计算机领域极其常见,本身就是计算机诞生的原理性支点。

编码

编解码在计算机领域也是极其常见的,在不同场景下切换不同的编解码方式,可以在易用高效之间灵活切换。

流式

从微观视角看没有绝对的流式,一切都是批处理,是离散的。但我们在顶层应用的开发时,从宏观视角看,就会出现流式现象,本质上就是粒度更小的批处理




实战效果

先简单讲下基本思路,其实不管是解决什么问题,多大规模的问题,最本质的方法论都是普适的。比如解决规模问题,无非就是采用“分治”的策略嘛,分而治之,多大的问题都能被拆解为若干个相似的小问题,再逐一治理。

上面我们已经介绍了三种最常用的思想模型,接下来我们看看如何在遇到的两个挑战里进行实操。

挑战1

挑战1(数据量大)明显是个规模问题,既然是规模问题,就可以用分治思想解决。

我们先把整个点云所覆盖的XY平面,拆分为N个矩形单元,比如10 x 10一个单元,那如果整体覆盖面大小是1000 x 1000 的话,就会被分拆为10000个处理单元,每个单元都有自己的坐标边界(Xmin,Xmax,Ymin,Ymax),当我们绘制3D框体时候,可以先用哈希表找出该框体所占用的单元面积,做一个标记,等整体用户操作完成后,再统一渲染,并且只渲染被标记为“活动” 的处理单元即可。

image.png

这样下来,其实每次渲染只需要重新更新10 x 10范围内的点云,这个数量级基本上可以从十万级降低到百级(取决于处理单元的大小),处理速度也会快很多。

目前这个方案的代码尚未开发完成,暂时不放出来了,感兴趣的朋友也可以自己试着实现一版。

挑战2

挑战2(文件体积大)其实就是解决资源文件过大问题,在前端这里早就司空见惯了,无非就是下面几种方式:

  1. 压缩文件 —— 对应编解码模型
  2. 拆分文件 —— 对应分治模型
  3. 流式加载 —— 对应流式模型

编码压缩

先来说压缩,PCD文件有很多种编码格式,其中ASCII格式比较直观,我们可以直接读懂文件,明文看到该文件点位的信息,方便我们及时纠错,但是缺点就是太大了。

image.pngASCII编码的PCD文件

所以我们将生产环境用的PCD文件,统一重新进行了二进制编码,采用binary方式写文件,这就极大的缩小了文件体积(压缩到原来的20%)。

image.png

目录
相关文章
|
26天前
|
前端开发 JavaScript API
(前端3D模型开发)网页三维CAD中加载和保存STEP模型
本文介绍了如何使用`mxcad3d`库在网页上实现STEP格式三维模型的导入与导出。首先,通过官方教程搭建基本项目环境,了解核心对象如MxCAD3DObject、Mx3dDbDocument等的使用方法。接着,编写了加载和保存STEP模型的具体代码,包括HTML界面设计和TypeScript逻辑实现。最后,通过运行项目验证功能,展示了从模型加载到保存的全过程。此外,`mxcad3d`还支持多种其他格式的三维模型文件操作。
|
2月前
|
缓存 前端开发 JavaScript
利用代码分割优化前端性能:策略与实践
在现代Web开发中,代码分割是提升页面加载性能的有效手段。本文介绍代码分割的概念、重要性及其实现策略,包括动态导入、路由分割等方法,并探讨在React、Vue、Angular等前端框架中的具体应用。
|
19天前
|
机器学习/深度学习 前端开发 算法
婚恋交友系统平台 相亲交友平台系统 婚恋交友系统APP 婚恋系统源码 婚恋交友平台开发流程 婚恋交友系统架构设计 婚恋交友系统前端/后端开发 婚恋交友系统匹配推荐算法优化
婚恋交友系统平台通过线上互动帮助单身男女找到合适伴侣,提供用户注册、个人资料填写、匹配推荐、实时聊天、社区互动等功能。开发流程包括需求分析、技术选型、系统架构设计、功能实现、测试优化和上线运维。匹配推荐算法优化是核心,通过用户行为数据分析和机器学习提高匹配准确性。
60 3
|
27天前
|
编解码 前端开发 开发者
探索无界:前端开发中的响应式设计深度实践与思考###
本文将带你领略响应式设计的精髓,一种超越传统页面布局限制的设计策略,它要求开发者以灵活多变的思维,打造能够无缝适应各种设备与屏幕尺寸的Web体验。通过深入浅出的讲解、实际案例分析以及技术实现细节的探讨,本文目的是激发读者对于响应式设计深层次的理解与兴趣,鼓励在实际应用中不断创新与优化。 ###
72 10
|
2月前
|
前端开发 安全 UED
2024年前端性能优化新策略
2024年前端性能优化策略涵盖代码分割与环境变量管理。代码分割通过动态导入和按需加载CSS减少初始加载时间;环境变量管理则确保敏感信息安全,简化多环境配置。结合最新工具和技术,可大幅提升Web应用性能与用户体验。
|
1月前
|
缓存 监控 前端开发
探索前端性能优化:关键策略与代码实例
本文深入探讨前端性能优化的关键策略,结合实际代码示例,帮助开发者提升网页加载速度和用户体验,涵盖资源压缩、懒加载、缓存机制等技术。
|
2月前
|
搜索推荐 前端开发 定位技术
前端开发人员SEO优化技术方案
不同的搜索引擎提供了服务后台常见功能来优化网站搜索
51 2
|
2月前
|
编解码 前端开发 开发者
前端开发中的响应式设计实践
前端开发中的响应式设计实践
|
2月前
|
数据采集 缓存 监控
如何优化前端框架的数据驱动方式以提高性能?
综上所述,通过多种手段的综合运用,可以有效地优化前端框架的数据驱动方式,提高应用的性能,为用户带来更好的体验。同时,随着技术的不断发展和进步,我们需要不断探索和创新,以找到更适合的优化方法和策略。
|
2月前
|
编解码 前端开发 UED
探索无界:前端开发中的响应式设计哲学与实践####
本文不拘泥于传统摘要的框架,而是以一种对话的方式,引领读者踏入响应式设计的奇妙世界。想象一下,互联网如同一片浩瀚的海洋,而网页则是航行其中的船只。在这片不断变化的海域中,如何让我们的“船只”既稳固又灵活地适应各种屏幕尺寸和设备?这正是响应式设计的魅力所在。通过深入浅出的探讨,我们将一同揭开它背后的哲学思想与实战技巧,让你的网页在任何设备上都能展现出最佳姿态。 ####
27 0