- 博客(61)
- 收藏
- 关注
原创 Laplace分布
相比高斯分布,高斯分布是L2分布,可以用来表示多维的相关性分布。在做NLL的时候,laplace收敛的更加匀速。laplace分布是一个L1的分布,只能用来描述一维的分布,不能用来表示多维的相关性分布。参考链接:https://zhuanlan.zhihu.com/p/156234503。
2024-04-19 11:14:36 60
原创 DP、DDP、FSDP
FSDP使属于DDP的一种,主要是在于要把DDP中的all-reduce操作拆解为reduce-scatter和all-gather 操作(在参数处理的时候)参考链接:https://blog.csdn.net/qinduohao333/article/details/131650137。参考链接:https://www.cnblogs.com/qizhou/p/16770143.html。直接用sys.exit()就行。如何退出DDP多卡?
2024-04-19 11:07:09 126
原创 PCA 主成分分析
PCA的主要思想是将n维特征映射到k维上,这k维是全新的正交特征也被称为主成分,是在原有n维特征的基础上重新构造出来的k维特征。PCA的工作就是从原始的空间中顺序地找一组相互正交的坐标轴,新的坐标轴的选择与数据本身是密切相关的。其中,第一个新坐标轴选择是原始数据中方差最大的方向,第二个新坐标轴选取是与第一个坐标轴正交的平面中使得方差最大的,第三个轴是与第1,2个轴正交的平面中方差最大的。通过这种方式获得的新的坐标轴,我们发现,大部分方差都包含在前面k个坐标轴中,后面的坐标轴所含的方差几乎为0。
2024-04-11 20:31:09 226
原创 C++线程管理
std::unique_lock:支持std::lock_guard的功能,但是区别在于它提供更多的成员函数,比如:lock(),unlock()使用更加灵活,并且可以和condiction_variable一起使用控制线程同步。主要作用是防止wait线程空执行,只有等notify_one这个线程更新了之后,wait才会动,才会去尝试解锁;std::lock_guard: 构造函数执行了mutex::lock(),在作用域结束时,自动调用析构函数,执行mutex::unlock()
2024-03-12 17:38:01 364
原创 PointMixer论文阅读笔记
但是MLP-mixer在点云识别方面表现欠佳,PointMixer就是在保留了MLP-mixer优点的同时,还可以很好的处理点云问题。MLP-Mixer将CNN的两个任务切割开来,不同位置的mix叫token-mixing,同一位置不同channel的mix叫做channel-mixing。token-mix MLP具有转置同变性的缺点,而且token-mix只能使用固定数量的输入,但是对于点云来说,neighbor不是固定的,要用聚类算法。这里的乘法的element-wise。
2024-02-15 15:21:25 1080
原创 误差椭圆和协方差矩阵的关系
特征向量 = [[sin(), cos()], [cos(), -sin()]]协方差矩阵的特征值为误差椭圆的a和b, 特征向量为误差椭圆的方向。
2024-02-06 18:14:11 339
原创 派生类和基类的构造函数的关系
我们通常说的派生类和基类,我们调用派生类的自定义的构造函数的时候,派生类会自动调用基类中的default construct函数,而不能调用基类中的其他构造函数(除非在派生类的构造函数序列初始化的时候指明基类的构造函数,否则将会自动调用基类默认构造函数)
2024-01-21 12:16:16 406
原创 Focal loss
α / (1 - α) = 负样本数 / 正样本数, 平衡样本不均匀。平衡分类难易,如果P越大说明分类容易,乘以(1-p)变小。分类问题经典loss。
2023-12-28 15:12:38 321
原创 emplace_back() push_back()
假设 vector 中元素类型是类类型,那么 emplace_back() 待添加的元素的类型是类中有参构造的参数类型时,emplace_back() 比 push_back() 少一次移动或拷贝构造函数。而如果添加的元素是类类型的对象时,则和 push_back() 一样都只会调用一次移动构造函数或一次拷贝构造函数。原文链接:https://blog.csdn.net/unonoi/article/details/114680819。如果在类里面没有构造传类的构造函数,那么是浅拷贝,反之为深拷贝。
2023-11-01 17:40:55 35
原创 MARC: Multipolicy and Risk-aware Contingency Planning for Autonomous Driving论文阅读笔记
为了降低计算量,可以使用规则剪枝,但是剪枝的缺点是,很难设计出完美的规则去适应所有的场景。先用规则建立起sceanario,然后使用剪枝方法删除不必要的障碍物,然后使用闭环前仿(forward-simulation)建立轨迹。具体的,先衍生出各个场景,各个场景之间不同的地方(分叉的地方)使用分叉点,减少相同部分的计算量。最后使用cost计算,来选择最合适的场景和轨迹。这里的做法是planning的时候依旧保有了多模态,在planning阶段依旧考虑多模态,让planning的结果是对所有场景的最优结果。
2023-10-04 16:40:28 399 1
原创 M2I论文解读
整体来讲M2I是一种模型架构,主要提出了交互预测的概念。先是去区分influence和reactor(通过谁先通过碰撞点来计算,先到达碰撞点的是influencer,后到达碰撞点的是reactor),然后会influencer和reactor进行正常的单轨迹预测,然后用交互预测使用预测好的影响者的轨迹去预测响应者的轨迹。这个论文的缺陷是只提出了两个障碍物之间的交互,难以将这种交互扩展到多个障碍物。
2023-10-04 11:13:38 49
原创 MoE(Mixture-of-Experts)
具体做法是把一个预训练好的模型(比如BERT)的FFN层分解成多个experts,这样在计算的时候速度可以大幅提高(相当于只激活原始FFN网络的一部分)。token-level:前面那个文章,是 sample-level 的,即不同的样本,使用不同的experts,但是这篇则是 token-level 的,一个句子中不同的token使用不同的experts。MoE主要的作用是作为一个相对好的模型,去增加另一个模型的训练参数量,来提升另一个模型的能力。在模型的某个部分增加MoE,增大模型的参数量。
2023-08-06 18:28:49 122
原创 常见的曲线拟合
Idlt().solve()的理解,可以参考博客https://www.zhihu.com/column/c_1584844668977840128?所有的控制点一起控制整条曲线,动一个点,整条曲线都会变动,算力比较大。分段控制曲线,但是曲线不会经过控制点,可能会有小S弯。分段控制曲线,曲线经过控制点,可能会有小S弯。
2023-07-12 16:59:30 176
原创 CoreDump
gdb 运行的bin文件 xxx/corefile。mkdir xxxx // 创建一个文件夹。使用core_pattern工具。
2023-06-25 15:17:22 43
原创 git常用命令
git push -f origin xxx //打了patch之后,继续推送原来的commit。git pull = git pull origin xxx //获取最新版本并merge。git pull --rebase //不会自动merge, 会显示冲突选择忽略或修复。git reset --hard origin/xxx // 取消当前的commit。git fetch origin //远程获取最新版本到本地,不会自动merge。git push origin xxx //推送到一个分支。
2023-05-23 16:09:07 37
原创 DenseTNT论文笔记
同时会对F进行loss计算,这里会有goal的真值。为了解决预测没有多个真值的问题,会使用offline的优化算法来优化,具体的,前边获得heatmap的方法和online是一样的,将goal set prediction这一块换成optimization algorithm。由于预测的目标只有一个,去做多目标真值有一定的困难,这篇文章还提出了一种离线的优化算法,能够得到一些pseudo-label。这个地方置信度的真值标签v也很有意思,是在训练的时候现标注的,真值是预测出的轨迹里真值最近的那个head。
2023-05-21 20:43:13 544
原创 Virtual
虚基类https://blog.csdn.net/xbb123456rt/article/details/81986691?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167629987316800215069826%2522%252C%2522scm%2522%253A%252220140713.130102334…C++中基类的析构函数为什么要用virtual虚析构函数。
2023-05-14 10:15:42 28
原创 初识友元函数
友元关系在类之间不能传递,即类 A 是类 B 的友元,类 B 是类 C 的友元,并不能导出类 A 是类 C 的友元。“咱俩是朋友,所以你的朋友就是我的朋友”这句话在 C++ 的友元关系上 不成立。友元的特点是,在A中申明了B是A的友元,那么就说明A把B当做朋友,B能够访问A中的所有东西,但是A不一定是B的朋友,A不能访问B的东西。
2023-05-14 10:15:29 30
原创 二叉树初步整理
C++中map、set、multimap,multiset的底层实现都是平衡二叉搜索树,所以map、set的增删操作时间时间复杂度是logn,注意我这里没有说unordered_map、unordered_set,unordered_map、unordered_map底层实现是哈希表。又被称为AVL(Adelson-Velsky and Landis)树,且具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。
2023-05-12 11:26:00 28
原创 栈、队列、堆
所以大家经常说的大顶堆(堆头是最大元素),小顶堆(堆头是最小元素),如果懒得自己实现的话,就直接用priority_queue(优先级队列)就可以了,底层实现都是一样的,从小到大排就是小顶堆,从大到小排就是大顶堆。是一个披着队列外衣的堆,因为优先级队列对外接口只是从队头取元素,从队尾添加元素,再无其他取元素的方式,看起来就是一个队列。堆是一棵完全二叉树,树中每个结点的值都不小于(或不大于)其左右孩子的值。如果父亲结点是大于等于左右孩子就是大顶堆,小于等于左右孩子就是小顶堆。方法一:设置友元函数。
2023-05-12 11:25:42 22
原创 GRPC初试
offline-map-server这个代码库主要是将hdmap的接口写到grpc中 然后进行编译得到需要的python文件 然后在python脚本中可以通过这些python文件去访问hdmap。172.26.24.172:9091这台机器是潘安的机器 需要在那台机器上先运行C++的代码 然后再运行python代码。hdmap_grpc_api_pb2_grpc 是通过build.python_grpc.sh得到的。再 source gen_proto_inst.sh 生成proto_inst.h。
2023-05-12 11:25:10 32
原创 Python多线程和多进程
在Python多线程编程中,join方法的作用式线程同步。守护线程,是为守护别人而存在的,当设置为守护线程后,被守护的主线程不存在后,守护线程也自然不存在。setDaemon(False)默认情况: 守护线程主线程执行完自己的任务后,就退出了,此时子线程会继续执行自己的任务,直到子线程任务结束setDaemon(True) 设置守护线程设置子线程为守护线程,实现主程序结束,子程序立马全部结束功能加入join方法设置同步。
2023-05-12 11:24:21 33
原创 BCLOUD
GLOB_GEN_SRCS 会将指定代码目录转换为对应的产出目录。PROTOFLAGS 指定proto生成的编译参数。Sources 指定编译该bin所使用的源文件。GenSources 执行source命令。INCPATHS 增加了头文件搜索路径。Application 生成可执行文件。PROTOC 用于处理proto文件。Libraries 指定了要连接.a。CONFIGS 增加了依赖路径。OUTPUT 产出目录。
2023-05-12 11:23:46 133
原创 Lift, Splat, Shoot(LSS)
Lift阶段:将2D信息转换为3D信息还需要补充一个depth信息,所以可以对depth信息先离散化,形成一个点云(h, w, d);整个模型的作用,就是将单个摄像头2维的信息先 lift 到3维,然后再将多个摄像头3维的信息进行splat(拼接)。Splat阶段,模仿了pointpillar将各个camera的点云信息拼接起来,拼接的时候会利用到camera的内外参信息。用真值去找到L2距离最小的template,然后再使用cross entropy loss去计轨迹的置信度。
2023-05-12 11:23:33 678
原创 BEV整体概览
自顶向下可以理解为从"3d"出发,先生成含有3d信息的BEV query,然后再利用transformer将每张图片上的特征提取待BEV query上。自底向上可以理解为从"2d"出发,通过"LIFT"操作把图像提升到"3d"伪点云,然后在利用voxel pooling生成BEV特征。BEV 感知算法的本质是多传感器融合背景下的一种视角表达形式,可以使多个传感器数据在相同视角下表达。BEV模型分为两种:自底向上、自顶向下。【BEV】学习笔记之模型学习小结。
2023-05-12 11:22:27 128
原创 wayformer
那怎么分开呢,时间和空间的attention顺序是怎么样呢,又提出了两种,Sequential Attention和Interleaved Attention,Sequential Attention是N / 2的temporal encoder block后面接这N / 2的spatial encoder block。对于attention的形式,也提出了几种改进方式,从大的方向上来分有两种,multi-axis attention和factorized attention。
2023-05-12 11:22:00 296 1
原创 Transformer
Attention Is All You Need (Transformer) 论文精读原创 | Attention is all you need 论文解析(附代码)self-attention没有位置感知能力的证明self attention是permutation equivariant(置换等变),带有latent query的self-attention是permutation invariant(置换不变)
2023-05-08 00:34:48 78
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人