[CVPR2024]Point Transformer V3: Simpler, Faster, Stronger
Motivation Scaling up is all you need. scale: size of datasets, the number of model parameters, the range of effective receptive field, and the computing power . scale principle: efficiency ( simplicity scalability ) VS accuracy Unlike the advancements made in 2d or NLP field,the previous works in 3D vision had to focus on improve the accuracy of the model due to the limited size and diversity of point cloud data available in separate domains . The time consumption of point transformer V1...
[CVPR2021]Point Cloud Transformer
Motivation Point Cloud: disordered (permutation-invariant ) unstructured which make it difficult to designing a neural networks to process. All operations of Transformer are parallelizable and order-independent , which is suitable for PT feature learning. In NLP ,the classical Transformer use the positional encoding to deal with the order-independence . the input of word is in order, and word has basic semantic, whereas point clouds are unordered, and individual points have no semantic...
[NIPS2023] asynchrony robust collaborative perception via birds eye view flow Paper Conference
1. motivation irregular asynchronous setting: the time stamps of the collaboration messages from other agents are not aligned the time interval of two consecutive messages from the same agent is irregular Problem formulation: maxP,θ∑n=1Ng(Y^ntni,Yntni)subject to Y^ntni=cθ(Xntni,{Pm→ntmj,Pm→ntmj−1,...,Pm→ntmj−k+1}m=1N)\max_{P,\theta}\sum_{n=1}^{N}g(\widehat{Y}_{n}^{t_{n}^{i}},{Y}_{n}^{t_{n}^{i}})\\ \text{subject to }\widehat{Y}_{n}^{t_{n}^{i}}=c_{\theta}(X_{n}^{t_n^i},\{P_{m\rightarrow...
1、函数指针
总结:尽量避免使用函数指针. 函数名与函数指针 double foo(int a,int b);//函数声明,double foo(int,int)为函数原型 上面这行代码为 函数声明 ,foo为 函数名 ,double (int,int)为 函数签名. 函数名是一个标识符,它是不可赋值的,它是可调用的. &foo表示函数的地址,函数地址 也是可以调用的,例如: (&foo)(1,2);//与foo(1,2)相同. 由于&foo表示foo函数的地址,则&foo的类型就是函数指针.函数指针指向函数签名相同的函数. 定义并初始化函数指针 double pam (int);double (*pf)(int)=pam;auto...
2、内联函数、左值引用、函数重载
内联函数 为什么使用内联函数? 减少上下文切换,加快程序运行速度。 是对C语言中的宏函数的改进。 语法 #include<iostream>using namespace std;inline double square(double x){ return x*x;}int main(){ cout<<square(2.2)<<endl;} 其实就是在函数声明或者定义前加上关键字inline。 左值与右值 在C++11中,我们将值划分为:左值、右值(分为纯右值和可扩展右值) 左值:可以取地址,有名字的值 右值:不能取地址,没有名字的值,存活时间很短 纯右值:运算表达式,如1+2,或者和对象无关的字面值,如true,或者 非引用 的函数返回值,或者lambda表达式 可扩展右值:仅和右值引用相关的值,它包括:右值引用...
3、从源码到可执行文件
简析 一般来说,C++程序会分为 头文件和源代码文件。 C++鼓励我们将组件函数放在单独的文件中,这就意味着会存在多个源代码文件,C++鼓励我们对这些源代码文件单独编译,然后将这些文件的编译版本链接。 单独编译后在链接的意义在于:如果我们要对一个源文件修改,我们就可以只对这个源文件编译,然后和其他文件的编译版本链接。 比如下面这个程序,有一个有文件coordin.h,两个源代码文件 file1.cpp和file2.cpp coordin.h #ifndef a#define astruct polar{ double distance; double angle;};struct rect{ double x; double y;};polar rect_to_polar(rect xypos);void show_polar(polar...
4、内存模型
C++11使用4种方案来存储数据,这4种方案的区别主要是数据保留在内存的时间,即4种存储持续性(duration) 自动存储 静态存储 线程存储 动态存储 作用域(scope):描述了名称在文件的多大范围内可见 链接性(linkage): 描述了名称在不同文件种的共享的方式 外部链接性 内部链接性 无链接性 自动存储(局部变量) 自动存储的变量是最简单的,就是在代码段中int a=1类似的这种变量,也可以使用关键词register来显式表示他是自动存储的变量,register int...
5、名称空间
背景 声明区域(declaration region):可以进行声明的区域。 全局变量的声明区是整个文件,函数内声明的变量的声明区是代码块。 潜在作用域(potential scope):声明位置开始到声明区截止。 作用域(scope):变量对程序的可见范围。 变量的作用域是潜在作用域的子集。 例如,在函数中声明的局部变量会隐藏同名的全局变量,导致全局变量的作用域缺少一部分。 名称空间(namespace):每个声明区都可以声明名称,并且这些名称独立于其他声明区的名称。(例如:一个函数中的局部变量不会和另一个函数的局部变量发生冲突。)所以说,每个声明区就是一个名称空间。 C++允许我们自己创造名称空间。为了统一概念,我们不再把代码块当成名称空间,所以名称空间只有两种:全局名称空间 用户创造的名称空间 名称空间 我们创造两个名称空间Jack和Jill int Hill;namespace Jack{ double pail; void fetch(); int pal; struct...
6、对象和类(上)
...
6、对象和类(下)
this指针 到目前为止,每个类成员函数只涉及一个对象,即调用它的对象。但是我们有时候需要涉及多个对象,在这种情况下,必须使用this指针。 例如,我们要求一个函数实现比较两个股票的总价值,并选出大的那个股票。 那么这个成员函数的原型肯定是: const Stock & topval(const Stock &s)const; 首先这肯定是const成员函数,其次它的肯定要接收一个Stock对象,返回值也必须是一个Stock对象。 那么,调用这个成员函数时, top=stock1.topval(stock2)和top=stock2.topval(stock1)是等价的。 下面我们来看看函数如何定义? const Stock & Stock::topval(const Stock& s)const{ if(s.total_val>total_val) { return s; } else return...