THOMAS:TRAJECTORY HEATMAP OUTPUT WITH LEARNED MULTI-AGENT SAMPLING
THOMAS: TRAJECTORY HEATMAP OUTPUT WITH LEARNED MULTI-AGENT SAMPLING在这篇论文中,作者们提出了一种名为THOMAS的新方法,用于多智能体轨迹预测。这个方法允许有效地、一致地预测多个智能体的多种可能轨迹。为了实现这一目标,他们提出了一个统一的模型架构,用于同时估计各个智能体未来的热图。这个架构利用了分层和稀疏图像生成技术,以实现快速且高效的推断过程。
此外,论文还介绍了一种可学习的轨迹重组模型,它接受每个智能体的一组预测轨迹作为输入,并输出这些轨迹的一致重新排序。这个重组模型的作用是重新组织最初相互独立的轨迹模态,以确保它们不会相互冲突,并保持彼此的一致性。
最终,研究团队在多智能体交互预测挑战赛中取得了非常好的成绩,并在在线测试排行榜上名列第一。这表明他们的方法在多智能体轨迹预测领域取得了显著的进展。
IntroductionChallenge
The interactivity between agents
Agents need to be aware of their neighbors in order to a ...
(UniAD)Planning-oriented Autonomous Driving
Planning-oriented Autonomous Driving上海AI实验室 & 武汉大学 & 商汤科技团队
(CVPR 2023最佳论文)
这是CVPR历史上第一篇以自动驾驶为主题的最佳论文。
也是近10年来计算机视觉三大顶级会议中(CVPR、ICCV、ECCV),第一篇以中国学术机构作为第一单位的最佳论文。
论文中,研究人员首次将感知、预测和规划等3大类主任务、6小类子任务(目标检测、目标跟踪、场景建图、轨迹预测、栅格预测和路径规划)整合到统一的基于Transformer的端到端网络框架下,实现了全栈关键任务驾驶通用模型,是自动驾驶中重要的技术突破。
在nuScenes真实场景数据集下,UniAD的所有任务均刷新SOTA,尤其是预测和规划效果远超之前的最佳方案。
其中,多目标跟踪准确率超越SOTA 20%,车道线预测准确率提升30%,预测运动位移和规划的误差则分别降低了38%和28%。
UniAD的价值就在于,能更好地协助进行行车规划,实现「多任务」和「高性能」,确保车辆行驶的可靠和安全。
Background - The Design Space of ...
ZTE面经汇总
以下问题由牛客中兴Java整理而来,答案由笔者整理而来。
数据结构 堆和栈栈用于管理函数调用和临时数据,它是一种有限大小的、自动管理的数据结构;
而堆用于动态分配内存,通常用于存储大量数据或需要在不同作用域之间共享的数据,但需要手动管理内存的分配和释放。
排序算法(快排、冒泡)排序算法是将一组数据按照特定的规则进行排列的算法。下面我会简要介绍两种常见的排序算法:快速排序和冒泡排序。
1. 快速排序(Quick Sort)快速排序是一种高效的分治排序算法,其主要思想是通过选择一个基准元素,将数组分为两个子数组,其中一个子数组的元素都小于基准元素,另一个子数组的元素都大于基准元素。然后,对这两个子数组分别递归进行快速排序,直到整个数组有序。
快速排序的步骤:
选择一个基准元素(通常是数组的第一个元素)。
将数组分为两个子数组,一个包含所有小于基准的元素,另一个包含所有大于基准的元素。
对这两个子数组分别递归进行快速排序。
合并子数组和基准元素,得到排序后的数组。
Java代码示例:
1234567891011121314151617181920212223242526272829 ...
Bean的生命周期
Java对象的生命周期为了更好的理解Bean的声明周期,先来看看不用Spring时,Java对象的生命周期。
下面是一个Java对象创建的语句。
1A a=new A();
对于普通Java环境下创建对象简要的步骤可以分为:
java源码被编译为被编译为class文件
等到类需要被初始化时(比如说new、反射等)
class文件被虚拟机通过类加载器加载到JVM
简单来说,可以理解为它是用Class对象作为「模板」进而创建出具体的实例。
注:第3步,其实就是JVM的类加载过程 。
加载。(由类加载器完成,双亲委派模型…)
验证。(防止恶意代码的注入,以及确保类文件的正确性)
准备。(JVM为类的静态变量分配内存空间(这些内存都将在方法区中分配),并设置默认初始值,但并没有赋值。)
解析。(将符号引用转化为直接引用)
类初始化。(对静态变量进行初始化和执行静态代码块)(静态代码块先于构造方法,父类先于子类。)
卸载。(即被GC的过程)
Spring Bean的生命周期的五个阶段
实例化Instantiation。
Bean的生命周期从实例化开始,这是创建Bean对象的阶段。
Sp ...
java整合minIO实现上传文件预览
minIO下载与使用
官网地址 https://min.io/
github地址 https://github.com/minio/minio
windows 服务端下载地址 https://dl.minio.io/server/minio/release/windows-amd64/minio.exe
简介
MinIO是一个高性能、分布式对象存储系统,专门设计用于存储和检索大规模数据对象,如照片、视频、日志文件等。它的设计灵感来自于云原生应用的要求,提供了云存储的灵活性和可伸缩性,适用于私有云、公有云和混合云环境。以下是MinIO的一些关键特点和简介:
对象存储:MinIO以对象的形式存储数据,每个对象通常包含数据本身、元数据(例如文件名、文件类型等)和一个唯一的标识符。
分布式架构:MinIO采用分布式架构,可以在多个节点上分布数据,提供高可用性和冗余,以防止数据丢失。
高性能:MinIO被设计为非常快速的对象存储系统,可以利用现代硬件和网络来实现低延迟和高吞吐量的数据访问。
S3兼容性:MinIO提供了Amazon S3兼容的API,这意味着您可以使用AWS SDK和工 ...
JVM类加载过程与加载器
Java类加载过程Java类的生命周期Java类加载过程是Java虚拟机(JVM)将类的字节码文件()加载到内存并进行初始化的过程。
JVM 可以理解的代码就叫做字节码(即扩展名为 .class 的文件)
类从被加载到虚拟机内存中开始到卸载出内存为止,它的整个生命周期可以简单概括为 7 个阶段:
加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和卸载(Unloading)。其中,验证、准备和解析这三个阶段可以统称为连接(Linking)。
Class 文件需要加载到虚拟机中之后才能运行和使用,那么虚拟机是如何加载这些 Class 文件呢?
主要分为加载 、连接(验证、准备、解析)、初始化五个步骤。以下依次解读这五个步骤。
类加载过程加载 在加载阶段,类加载器将类的字节码文件从文件系统、网络等位置读取到内存中。加载并不表示类的实例化,只是将类的信息加载到内存中。需要注意的是,这个阶段不会初始化类的静态变量和执行静态代码块。
加载这一步主要是通过类加载 ...
miniSpring开发(9)-实现AOP:运行时插入逻辑
动态代理Java 提供的动态代理可以对接口进行代理,在代理的过程中主要做三件事。
拥有被代理的接口与实现类
实现 InvocationHandler 接口,重写接口内部唯一的方法 invoke。
使用 Proxy 类,通过 newProxyInstance,初始化一个代理对象。
通过代理对象,代理其他类,对该类进行增强处理。
具体可见 ; Java代理机制。
第一步:首先定义一个 IAction 接口。
1234package com.test.service;public interface IAction { void doAction();}
提供其实现类:
1234567package com.test.service;public class Action1 implements IAction { @Override public void doAction() { System.out.println("really do action"); }}
第二步、第 ...
JVM垃圾回收机制
JVM堆空间结构在JVM中,堆是垃圾收集器管理的主要区域,因此也被称作 GC 堆(Garbage Collected Heap)。
从垃圾回收的角度来说,由于现在收集器基本都采用分代垃圾收集算法,所以 Java 堆被划分为了几个不同的区域,这样我们就可以根据各个区域的特点选择合适的垃圾收集算法。下图为Java堆的内存结构图。
可以看到分为JDK1.7和JDK1.8两个版本,都有新生代、老生代,而永久代在JDK1.8之中被元空间MetaSpace取代。
年轻代(Young Generation): 年轻代是堆内存的一部分,用于存放新创建的对象。它通常分为三个区域:
Eden空间:刚刚创建的对象首先被分配到Eden空间。在进行垃圾回收时,如果对象仍然存活,它们会被移到Survivor区域。
Survivor区域(S0和S1):Survivor区域用于存放Eden空间中经过一次垃圾回收后仍然存活的对象。这两个Survivor区域会轮流使用,经过多次垃圾回收后仍然存活的对象会被晋升到年老代。
年轻代的垃圾回收通常使用复制算法,即将存活的对象从一个区域复制到另一个区域,并清除原区域中的 ...
POI解析Excel信息
POI简介官网: https://poi.apache.org/
Apache POI(Poor Obfuscation Implementation)是一个开源的Java库,它提供了用于读取、写入和操作Microsoft Office格式文件(如Word文档、Excel电子表格和PowerPoint演示文稿)的API。POI最初由Jakarta项目中的一组开发者创建,现已成为Apache软件基金会的顶级项目之一。
POI库允许Java开发人员与Office文档进行交互,无需安装Microsoft Office套件。这使得开发人员能够动态地创建、修改和读取Office文档,这在许多企业和个人项目中都是非常有用的。
以下是POI库的一些主要特点:
支持多种Office格式:POI支持处理Microsoft Office的各种格式,包括.doc和.docx(Word文档)、.xls和.xlsx(Excel电子表格)、.ppt和.pptx(PowerPoint演示文稿)等。
读写操作:POI提供了API,可以读取现有的Office文档,也可以创建新的文档并向其中写入数据。
完善的功能:PO ...
基于PDFBox解析PDF信息
PDFBox简介官网 : https://pdfbox.apache.org/
PDFBox是一个开源的Java库,用于在Java平台上处理PDF文件。它提供了一系列功能,使开发人员能够读取、创建、修改和提取PDF文件的内容。
PDFBox是Apache软件基金会的一个顶级项目,拥有广泛的用户群体和活跃的开发社区。
PDFBox的主要功能包括:
读取PDF文件:PDFBox可以将PDF文件解析为文本或其他格式,以便进一步处理和分析PDF内容。
创建和修改PDF文件:PDFBox可以生成全新的PDF文件,也可以对现有的PDF文件进行修改,添加文本、图片、链接、表单等内容。
提取PDF内容:PDFBox可以从PDF文件中提取文本、图像、链接、元数据等信息,使得开发人员能够轻松地获取和利用这些信息。
操作PDF页面:PDFBox允许你对PDF页面进行裁剪、旋转、缩放和合并等操作。
处理表单:PDFBox可以填充和提取PDF表单中的数据,使得表单处理变得更加简单。
支持加密和签名:PDFBox支持对PDF文件进行加密和数字签名,确保PDF文件的安全性和完整性。
PDFBox是一个功能强大 ...