端到端无人驾驶:SparseDrive
论文精读Abstract完善的模块化自动驾驶系统被解耦为不同的独立任务,例如感知、预测和规划,遭受模块间信息丢失和错误累积的困扰。相比之下,端到端范式将多任务统一到一个完全可微的框架中。尽管端到端范式具有巨大的潜力,但现有方法的性能和效率都不令人满意,特别是在规划安全性方面。我们将此归因于计算成本高昂的BEV(鸟瞰图)特征以及预测和规划的直接设计。 为此,我们探讨了稀疏表示,并回顾了端到端自动驾驶的任务设计,提出了一个名为SparseDrive的新范式。具体来说,SparseDrive由对称稀疏感知模块和并行运动规划器组成。稀疏感知模块将检测、跟踪和在线映射以对称模型架构统一起来,学习驾驶场景的完全稀疏表示。对于运动预测和运动规划,我们回顾了这两个任务之间的巨大相似性,从而导致运动规划器的并行设计。基于这种将规划建模为多模态问题的并行设计,我们提出了一种分层规划选择策略,该策略结合了碰撞感知重核模块,以选择合理安全的轨迹作为最终的规划输出。 凭借如此有效的设计,SparseDrive在所有任务的性能上都大大超过了以前的最先进水平,同时实现了更高的训练和推理效率。 1....
MySQL:事务隔离级别
事务隔离级别1. 事务特性 原子性(Atomicity):一个事务中的所有操作,要么全部完成,要么全部不完成。 一致性(Consistency):是指事务操作前和操作后,数据满足完整性约束,数据库保持一致性状态。比如A向B转账,数据库不会出现非法状态,如总金额丢失或多出。 隔离性(Isolation):数据库允许多个并发事务同时对其数据进行读写和修改的能力。 持久性(Durability):事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。 InnoDB该如何保证这四个特性呢: 持久性是通过 redo log (重做日志)来保证的; 原子性是通过 undo log(回滚日志) 来保证的; 隔离性是通过 MVCC(多版本并发控制) 或锁机制来保证的; 一致性则是通过持久性+原子性+隔离性来保证; 2. 并行会引发的问题2.1 脏读如果一个事务「读到」了另一个「未提交事务修改过的数据」,就意味着发生了「脏读」现象。 例如: 2.2 不可重复读在一个事务内多次读取同一个数据,如果出现前后两次读到的数据不一样的情况,就意味着发生了「不可重复读」现象。 2.3...
MySQL:索引常见问题
MySQL:索引常见问题1. 什么是索引索引的定义就是帮助存储引擎快速获取数据的一种数据结构,形象的说就是索引是数据的目录。 2. 索引分类 按「数据结构」分类:B+tree索引、Hash索引、Full-text索引。 按「物理存储」分类:聚簇索引(主键索引)、二级索引(辅助索引)。 按「字段特性」分类:主键索引、唯一索引、普通索引、前缀索引。 按「字段个数」分类:单列索引、联合索引。 2.1 按数据结构分类 2.1.1 索引的选择在创建表时,InnoDB 存储引擎会根据不同的场景选择不同的列作为索引: 如果有主键,默认会使用主键作为聚簇索引的索引键(key); 如果没有主键,就选择第一个不包含 NULL 值的唯一列作为聚簇索引的索引键(key); 在上面两个都没有的情况下,InnoDB 将自动生成一个隐式自增 id 列作为聚簇索引的索引键(key); 其它索引都属于辅助索引(Secondary Index),也被称为二级索引或非聚簇索引。 创建的主键索引和二级索引默认使用的是 B+Tree 索引。 2.1.2 B+...
2024年12月7日
...
面向对象
面向对象基础1. 面向对象和面向过程1.1 定义 面向过程编程(POP):面向过程把解决问题的过程拆成一个个方法,通过一个个方法的执行解决问题。 面向对象编程(OOP):面向对象会先抽象出对象,然后用对象执行方法的方式解决问题。 1.2 面向对象优点 易维护:由于良好的结构和封装性,OOP 程序通常更容易维护。 易复用:通过继承和多态,OOP 设计使得代码更具复用性,方便扩展功能。 易扩展:模块化设计使得系统扩展变得更加容易和灵活。 2. 面向对象三大特征2.1 封装将对象的属性隐藏在对象内部,不允许外部对象直接访问对象内部的信息,但可以通过这个对象提供的方法操作属性。 2.2 继承继承是在已存在的类的定义作为基础创建新类,新类可以增加新的数据和功能,也可以使用父类功能。 注意: 子类拥有父类所有属性和方法(包括私有属性和方法),但是不能访问父类的私有属性和方法。 2.3...
2024年12月3日
...
java基本数据类型
基本数据类型1. 包装类型1.1 定义Java 的包装类型(Wrapper Class)是对基本数据类型的对象表示,用于将基本数据类型(如 int、double)包装为类对象。包装类存在的主要目的是使基本数据类型能够与 Java 的集合框架(如 ArrayList)等只能操作对象的API兼容。 1.2 基本类型和包装类型的区别 用途:定义一些常用变量或局部变量会使用基本类型;在对象属性,方法参数中会使用包装类型,同时包装类型可用于泛型。 存储方式:基本数据类型的局部变量存放在 Java 虚拟机栈中的局部变量表中,基本数据类型的成员变量(未被 static 修饰 )存放在 Java 虚拟机的堆中。包装类型属于对象类型,存储在堆中。 占用空间:基本数据类型占用空间小。 默认值:成员变量包装类不赋值就是null,基本数据类型有默认值。 比较方式:基本数据类型中,==比较的是数值是否相同;对于包装类型来说,==比较的是对象的内存地址,equals可以比较数值大小。 1.3 包装类型的缓存机制Byte,Short,Integer,Long 这 4...
java自定义注解
公共字段填充1. 问题我们在update和insert操作时需要修改创建时间,修改时间,修改人id,且这几种属性都属于公共属性,即所有的表都含有这个属性,如果通过service操作会显得非常繁琐,所以我们使用自定义注解的方式完成。 2. 自定义注解AtuoFill自定义注解AutoFill,用于标识需要进行公共字段自动填充的方法。自定义注解前要写上两个注解: 一个是@Target(ElementType.METHOD),这个注解用来指定当前注解只能加在方法上。 另一个注解是@Retention(RetentionPolicy.RUNTIME),这个注解用来指定当前注解在什么阶段被保留,这里表示注解在运行时会被 JVM 保留 这里的value是注解的一个属性,它的作用是接收一个 OperationType 类型的值,该值用来表示操作的类型(例如 INSERT 或 UPDATE)。 123456789/** * 自定义注解,用于标识某个方法需要进行功能字段自动填充处理 */@Target(ElementType.METHOD) ...
java基础概念与常识
基础概念与常识1. JVM与JDK与JRE1.1 JVMJVM是java虚拟机,是运行java字节码的虚拟机。JVM会针对不同的操作系统开发不同版本的JVM,目的是在不同操作系统上运行相同的字节码都会给出相同的结果。 同时,不同的编程语言都可以生成字节码,并运行在jvm上 1.2 JDKjdk全称为Java Development Kit,是java开发工具包。它包含了:JRE(java runtime environment),编译器javac和其他工具。 1.3 JREjre是java运行已编译java程序的环境,主要包括:JVM,java基础类库。 1.4 JDK和JRE的关系 2. 字节码2.1 定义字节码就是java程序编译后生成的.class文件。字节码只面向JVM虚拟机。 2.2 好处字节码只面向JVM虚拟机,不面向任何特定处理器。这样会在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点。 2.3 java程序运行过程 2.4...
我的第一篇博客
这是我的第一篇博客!