算法 [63]
矩阵乘法
老师教的差不多全还回去了。 向量 向量点积 点积(Dot product)也叫标量积(Scalar product)。在Euclidean空间也称内积(Inner product)。对应元素相乘后相加,结果是一个标量,也就是一个数。 对于向量 a⃗=(
学习Transformer
Transformer在谷歌2017年的论文 [1706.03762] Attention Is All You Need 中首次被提出,主要用于NLP(Natuarl Language Processing,自然语言处理)的各项任务。 后来在CV领域,研究者们基于Transformer架构开展了一
单目相机的相对速度估计
前言 单目相机的目标距离估计本身就已经充满了挑战,那么目标的(相对)速度估计也必然是十分困难... 目前单目相机的相对速度估计算法可以分成两类:传统方法和深度学习方法。没错,什么任务都可以深度学习。 传统方法中,最经典的是Mobileye在2003年的一篇论文中提出的算法。这个算法包含目标距离和速度
道路目标流量统计算法
实现流量统计算法有两个前提: 能够实现目标检测,最基本的前提,必须能够识别到视频帧中的车辆和行人。 能够进行目标跟踪,在检测的基础上,为目标分配一个唯一的ID。流量计数依赖于目标的唯一ID。 目标检测算法以YOLO系列为例。 跟踪算法以ByteTrack跟踪结果为例。将检测结果objects作为By
面向自动驾驶的端到端感知技术及发展趋势
摘要: 近年来,随着深度学习技术的发展和硬件算力的不断增强,自动驾驶技术越来越多的应用在各种场景。包括视觉感知、激光雷达感知和多传感器融合感知技术在这些年都得到了迅速发展。本文首先回顾了近年来自动驾驶感知技术的相关工作,然后介绍了相关工作所用到的方法和技术。随后整理并介绍了自动驾驶感知所需的数据集和
多目标跟踪算法的评价指标
多目标跟踪(MOT,Multiple Object Tracking)。 评价指标 MOTA MOTA 全称 Multiple Object Tracking Accuracy,计算公式为: MOTA = 1 - \frac{\sum_t(FN_t + FP_t + IDSW_t)}{\sum_t
多目标跟踪中的目标匹配算法
多目标跟踪算法 自动驾驶领域中的目标跟踪算法通常都是多目标跟踪算法,即 MOT(Multiple Object Tracking)。因为在这种场景中,要跟踪的目标往往不止一个。也有些文献会把这类问题称为 MTT(Multiple Target Tracking)。 MOT 问题中,并不是所有目标都会
我还在学CUDA编程(四)——内存管理及访问模式
内存管理 内存分配和释放 CUDA 编程模型中存在 Host 和 Device 两个异构系统,每个系统都有相对独立的内存空间。 在 Host 代码中,可以使用下面的函数分配 Device 全局内存: cudaError_t cudaMalloc(void **devPtr, size_t count
单目相机像素坐标系到世界坐标系的转换
世界坐标系 -> 像素坐标系 转换过程可参见这篇文章:FunnyWii's Zone 机器视觉 - 单目相机入门,其中描述了世界坐标系 -> 像素坐标系的转换过程。可以归结为下述公式: Z_c \begin{bmatrix} u \\ v \\ 1 \end{bmatrix} = K \begin{
我还在学CUDA编程(四)——内存的层次结构
CUDA 内存模型 存储器的类型有两种: 可编程:显式控制哪些数据存放。 不可编程:不能决定数据存储位置。 在 CPU 层次结构中,一级缓存(L1 Cache)和二级缓存(L2 Cache)都是不可编程的。可编程的存储器类型包括: 寄存器 共享内存 本地内存 常量内存 纹理内存 全局内存 下图为上面
OpenCV 的 remap() 函数中的 map1 和 map2
今天在 StackOverflow 上看到这么个问题:想把原图像中的一个点 \textstyle g,通过内参和畸变参数映射到去畸变图像中的点 \textstyle p,并获取这个点的坐标。 你以为我接下来会说,xxx 和我想的一样,但是我想错了,其实并不是这样。 现在,我想说的只有其实并不是这样,
继续学CUDA编程(三) —— CUDA执行模型(下)
并行归约问题 先解释一下什么是 归约(Reduction),归约是将某个计算问题变换为另一个问题的过程。在 CUDA 运算中,在向量中执行满足交换律和结合律的运算,被称为归约问题。每次迭代计算方式都是相同的(归),从一组多个数据最后得到一个数(约)^{[1]}。比如当给定 N 个数值,求其 SUM/
单目相机的深度图,以及绝对深度和相对深度
深度图 深度图(Depth Image, Depth Map)会将图像中的每个像素编码为相机到场景中某个点的距离,从而提供图像中物体的空间信息。 需要注意的是,不同场景下深度的定义可能略有差异。有些数据集或传感器中,深度表示的是相机坐标系下沿光轴方向的 Z 值;有些场景中,深度也可能表示空间点到相机
使用Python控制海康球头相机运动的方法
控制海康球头的 3 种方法 做了一些调查,目前控制海康球头相机的方法主要有三种: 海康官方 SDK。海康开放平台提供了多个平台的 SDK,包括 Windows、x86 Linux 和 ARM Linux(Jetson)等。Jetson 平台通常应选择 ARM 64 位 Linux 版本 ONVIF。
Jetson Orin部署Mediapipe Holistic检测
安装 JDK JetPack 一般不带 JDK,可以先安装 OpenJDK 11: sudo apt install openjdk-11-jdk
安装 Bazel 针对 MediaPipe 这个项目,需要使用的 Bazel 版本通常取决于当前 MediaPipe 版本指定的 Bazel 版本。更
继续学CUDA编程(三)——CUDA执行模型(上)
这一部分是 CUDA 的核心部分,涉及到了硬件和程序的执行模型。 SM 流式多处理器(Streaming Multiprocessor,SM)是构建整个 GPU 的核心模块。GPU 的硬件并行,是通过复制了多个 SM 来实现的。一个 Block 只能在一个 SM 上被调度。 下图包含了 SM 的关键
“我还要学CUDA编程!”(二)——CUDA编程模型
CUDA 编程结构 在 GPU 上执行的函数称为 CUDA 核函数(Kernel Function),核函数会被 GPU 上多个线程执行。典型的 CUDA 程序遵循如下模式: 把数据从 CPU 内存(Host)拷贝至 GPU 内存(Device) 调用该 Kernel 函数,对 Device 中的数
”我要学CUDA编程!“ —— 来自一个废物的自白
写在前面(废话,请跳过) 本来自己的脑子里是不存在 CUDA 编程这个东西的,没错,就是压根儿没听说过。 之所以了解到这个东西,是因为最近开始做 AVM(Around View Monitor),或者说 SVS(Surrounding View System),利用 4 个广角相机,实现车辆周围的
车道线的多项式曲线拟合
离散点平滑 基于优化的离散点平滑 模型检测到的车道线,最终输出的是车道线的点坐标 \textstyle (x,y),这些点能够大致描述车道线在画面中的位置。但如果想要拟合出车道线的高阶方程,可能还是不够平滑,一些离散点会影响拟合的效果。 优化变量:车道线点坐标 \textstyle (x_i,y_i
车道线检测功能综述【深度学习方法】
深度学习方法 车道线检测常用数据集见 FunnyWii's Zone 车道线检测功能综述【传统方法】 基于分割的方法 基于分割的方法利用语义分割或实例分割来区分图像中的车道线、其他物体和背景。这类方法将车道线检测问题转化为像素级分类问题,会对场景图片中的像素进行分类,判断该像素是否属于车道线。 由于