avatar
Articles
34
Tags
34
Categories
2

主页
博文
  • 分类
  • 标签
  • 归档
生活
  • 分享
  • 相册
  • 音乐
  • 影视
友链
留言板
关于笔者
在发之泽
主页
博文
  • 分类
  • 标签
  • 归档
生活
  • 分享
  • 相册
  • 音乐
  • 影视
友链
留言板
关于笔者

在发之泽

Carla学习
Created2023-12-15
Carla的基本架构 Carla是一款开源的自动驾驶仿真器,它基本可以用来帮助训练自动驾驶的所有模块,包括感知系统,Localization, 规划系统等等。 Client-Server的交互形式 如下图所示,Carla主要分为Server与Client两个模块,Server端用来建立这个仿真世界,而Client端则是由用户控制,用来调整、变化这个仿真世界。 Server: Server端负责任何与仿真本身相关的事情:从3D渲染汽车、街道、建筑,传感器模型的构建,到物理计算等等。它就像一个造物主, 将整个世界建造出来,并且根据Client 的外来指令更新这个世界。它本身是基于UnrealEnigne做出的3D渲染(很多游戏都是使用这个强大的引擎做的哦)。 Client: 如果server构造了整个世界,那么这个世界不同时刻到底该如何运转(比如天气是什么样,有多少辆车在跑,速度是多少)则是由Client端控制的。用户通过书写Python脚本(最新版本C++ 也可以)来向Server端输送指令指导世界的变化,Server根据用户的指令去执行。(可以理解为Client端耍耍嘴皮子下个指令, ...
embedding
Created2023-12-07
Input Embedding 前言 本文将针对 Transformer 关于输入部分的操作进行解析与总结,会结合代码来讲,只有结合了代码才比较“务实”,不然我总感觉很空洞、不踏实。 One-Hot Encoding 在 CV 中,我们通常将输入图片转换为4维(batch, channel, height, weight)张量来表示;而在 NLP 中,可以将输入单词用 One-Hot 形式编码成序列向量。向量长度是预定义的词汇表中拥有的单词量,向量在这一维中的值只有一个位置是1,其余都是0,1对应的位置就是词汇表中表示这个单词的地方。 例如词汇表中有5个词,第3个词表示“你好”这个词,那么该词对应的 one-hot 编码即为 00100(第3个位置为1,其余为0) 代码实现起来也比较简单: Word Embedding One-Hot 的形式看上去很简洁,也挺美,但劣势在于它很稀疏,而且还可能很长。比如词汇表如果有 10k 个词,那么一个词向量的长度就需要达到 10k,而其中却仅有一个位置是1,其余全是0,太“浪费”! 更重要的是,这种方式无法体现出词与词之间的关系。比如 “爱” ...
Petr_3D坐标生成
Created2023-12-05
Petr_3D坐标生成 1.DGSN的视锥空间离散化及其转换 为了学习3D空间中的3D卷积特征,先通过将PSV变换到3D空间来建立3DGV。 PSV的坐标由(u,v,d)表示,其中(u,v)为像素坐标,d是深度,将其所在空间称为grid camera frustum space。深度坐标d按照预定的3D网络间距vd(深度单位)进行均匀采样,串联的信息能够使网络学习用来目标识别的语义特征 3D Geometric Volume: 使用已知的相机内参,利用反向3D投影,在计算匹配损失前,将PSV最后的特征图从相机空间(u,v,d)到3D空间(x,y,z): fx,fy为水平和垂直的焦距长度。 下图展示了转化过程,当物体识别在3D空间被学习,在相机frustum中施加了像素相关性约束(红虚线),在这两个表达中明显不同: 图3:volume变换:图像被成像平面采集(红实线),PSV在左侧camera frustum中将图像以等深度(蓝色虚线)投影,如世界空间(左图)和camera frustum space(中间)。相机空间中,车是失真的,由K的逆矩阵进行转换后,PSV被转换到3DGV,重 ...
FPN
Created2023-11-29
FPN介绍 FPN网络可以说是一个非常经典的组件,twostage网络中一般都会加上去,能够有效的提升对小目标的检测能力,cascade_rcnn/faster_rcnn+big backbone+fpn+dcn的经典组合经久不衰。 这篇博客就结合mmdetection的fpn模块来简单介绍一下FPN网络: 这个是目标检测常用结构,输入一张图像,经过backbone提取特征,最后输出一张featuremap,以fasterrcnn举例,featuremap直接输入rpn得到proposals,proposals在featuremap上提取proposal feature然后进行box的分类和位置的回归。 为了增加多尺度能力,在上面结构上有很多变种,第一个就是下图的特征图像金字塔(Featurized image pyramid ),每一层做预测,缺点是计算量太大。 本文提出的FPN: 接下来我会从mmdetection的fpn模块实现具体介绍: 注意在mmdection的backbone中,输出是一个list,list里面是每个block的结果。这样的好处是方便FPN计算 接 ...
pytorch_nn_module__call__
Created2023-11-27
PyTorch中nn.Module类中__call__方法介绍 在PyTorch源码的torch/nn/modules/module.py文件中,有一条__call__语句和一条forward语句,如下: __call__ : Callable[…, Any] = _call_impl forward: Callable[…, Any] = _forward_unimplemented 在PyTorch中nn.Module类是所有神经网络模块的基类,你的网络也应该继承这个类,需要重载__init__和forward函数。以下是仿照PyTorch中Module和AlexNet类实现写的假的实现的测试代码: from typing import Callable, Any, List def _forward_unimplemented(self, *input: Any) -> None: "Should be overridden by all subclasses" print("_forward_unimplemented&q ...
MMD-PETR_train-detector导图
Created2023-11-27
MD-PETR_train-detector导图
MMDataParallel
Created2023-11-24
mmdetection:MMDataParallel 1.前言 mmdetection为了利用多GPU,在mmcv中实现了MMDataParallel和MMDistributedDataParallel。有没有发现这两者的命名和pytorch中的DataParallel和DistributedDataParallel命名方式很相似。没错,mmcv中的dataparallel就是继承了pytorch中的dataparallel。 下面简单讲一下,DataParallel和DistributedDataParallel两者的区别,DataParallel实现的是单进程多线程,DistributedDataParallel实现的是多进程。总而言之,DistributedDataParallel实现了真正的分布式并发计算,很好地利用多进程,并且GPU间通信开销更小。关于他们的详细区别,可见PyTorch 源码解读之 DP & DDP。写的非常详细,好文要顶。 对于计算密集任务,python的多进程要比多线程更好,熟悉python并发编程,肯定听说过python的GIL锁机制,导致多线程 ...
MMD3D模型训练测试群流程解析
Created2023-11-24
MMD3D模型训练测试全流程解析 [TOC] 训练与验证流程 在训练开始之前,我们需要编写配置文件。MMClassification 在 configs 文件夹中提供了各种模型常用的样例配置文件,可以直接使用或是稍作修改以用于自己的任务。 完成配置文件的编写之后,我们就可以使用入口脚本 tools/train.py 进行训练和验证。该脚本会进行数据集、模型相关的初始化,并调用高阶 API train_model 来搭建执行器(Runner),模型的训练和验证步骤均由执行器进行调度。 更完整的配置文件教程可见:https://mmclassification.readthedocs.io/zh_CN/latest/tutorials/config.html 这里我们仅以 MMClassification 为基准,介绍从训练入口开始,我们是如何让模型训练起来的,避免大家在 OpenMMLab 架构中迷路,那么让我们出发~ 第一站 tools/train.py 正如上文所说,这里是训练和验证的入口脚本。它主要执行的工作是解析命令行参数、环境信息,把这些信息动态更新到配置文件中,做一些诸如打印 ...
PETR代码详解
Created2023-11-23
PETR 代码详解 小记 看了很久的PETR源代码,后续磕盐工作以此文章为基础在上面更改,期望能顺利毕业。 本来很早就想边看边记录,但是一直以为博客的源文件没有迁移到主力本上,突然才发现上一篇4090时都迁过来了,感觉自己最近有些不在状态了,还是得开启学习记录,保持状态。 整体的代码流程 配置文件 使用了mmdet框架的代码结构,这里从头到尾把配置文件部分讲清楚,其中一些细节会同步放出定义源码讲解。 使用 petr_r50dcn_gridmask_p4.py 做解释。首先是配置加载和预先定义。 _base_ = [ '../../../mmdetection3d/configs/_base_/datasets/nus-3d.py', '../../../mmdetection3d/configs/_base_/default_runtime.py' ] # 这里引用了nus-3d的nuscenes数据集,所以包含了在mm3d中的配置,default_runtime是基本的runtime设置。 backbone_norm_cfg = di ...
Hook食用指南
Created2023-11-23
Hook 是什么 Hook 介绍 钩子编程(hooking),也称作“挂钩”,是计算机程序设计术语,指通过拦截软件模块间的函数调用、消息传递、事件传递来修改或扩展操作系统、应用程序或其他软件组件的行为的各种技术。处理被拦截的函数调用、事件、消息的代码,被称为钩子(hook)。--维基百科 在训练过程中,通常有十个关键位点,如下图所示,从训练开始到结束,所有关键位点已用红色标出,共有 10 个。我们可以在这十个位点插入各种逻辑,例如加载模型权重、保存模型权重。而我们将同一类型的逻辑组织成一个 Hook。因此,MMCV 中 Hook 的作用就是训练和验证模型时,在不改变其他代码的前提下,灵活地在不同位点插入定制化的逻辑。 而控制整个训练过程的抽象在 MMCV 中被设计为 Runner,它的主要行为就是执行上图蓝色的工作流,MMCV 提供了两种类型的 Runner,一种是以 epoch 为单位迭代的 EpochBasedRunner,另一种是以 iteration 为单位迭代的 IterBasedRunner。下面给出 EpochBasedRunner 和 IterBasedRunne ...
12…4
avatar
haseka
这是我的博客
Articles
34
Tags
34
Categories
2
Follow Me
Announcement
This is my Blog
Recent Post
Carla学习2023-12-15
embedding2023-12-07
Petr_3D坐标生成2023-12-05
FPN2023-11-29
pytorch_nn_module__call__2023-11-27
Categories
  • -技术 -笔记7
  • -技术 -笔记 -综述1
Tags
MMDataParallel coordinate batch -BEV -DETR embedding MMDetection3D mmd3d -BEV -BEVFormer PETR log -Attention 数据提取 xmind MMDetection runner MMD Carla -BEV -Attention DataLoader nn.Module FPN Registry Sampler -BEV -DETR -code __call__ BEV registry model MMD3D pytorch 模型搭建 code -BEV -PETR -BEV -综述 hook
Archives
  • December 20233
  • November 202331
Info
Article :
34
UV :
PV :
Last Update :
©2020 - 2023 By haseka
Framework Hexo|Theme Butterfly