【三维目标检测】Complex-Yolov4详解(一): 数据处理
前面分别介绍了基于点云的三维深度学习算法PointNet、PointNet++,和基于体素的三维深度学习算法VoxelNet。本节将开始介绍基于投影的三维深度学习算法Complex-Yolov4。三维投影算法主要思想是用激光雷达点云的鸟瞰图(BEV)和前视图(FV)作为模型输入,将三维点云转换为二维图片,早期工作开始于2017年的MV3D。
激光雷达点云的鸟瞰图和前视图的详细介绍请参考:点云鸟瞰图BEV原理与可视化_Coding的叶子的博客-CSDN博客和详细理解雷达点云前视图(FV, Front View)_Coding的叶子的博客-CSDN博客。
算法参考来源于Github上的Complex Yolov4,地址为:https://github.com/maudzung/Complex-YOLOv4-Pytorch。
1 数据目录结构
Complex-Yolov4的数据来源于KITTI数据集,其目录结构如下图所示。为了快速进行算法调试、训练、评估和验证,以及快速下载,我制作了一个mini kitti数据集,数据集的文件目录结构与完整KITTI数据集保持一致。其中,小型的KITTI数据集,即 mini kitti保存了20个训练样本和5个测试样本。下载地址为:minikitti数据集-深度学习文档类资源-CSDN下载,详细介绍请参考:KITTI数据集简介 — Mini KITTI_Coding的叶子的博客-CSDN博客https://blog.csdn.net/suiyingy/article/details/124820161。下载的数据包含4个部分,即激光雷达数据velodyne、图像数据image_2、校准数据calib和标注数据label_2。
除了Mini Kitti数据之外还需ImageSets和classes_names.txt。ImageSets文件夹中定义了训练、验证和测试样本的全部名称。ImageSets可以参考Complex-Yolov4自带的内容进行定义,需要与Mini Kitti保持一致,也可以直接下载,下载地址为:train_val_testforminikitti-深度学习文档类资源-CSDN下载。下载后将文件夹重名为ImageSets即可。
classes_names.txt存储了需要检测的目标类别,其默认内容如下图所示:
2 数据处理
(1)读取激光雷达数据Nx4、标签数据和校准数据。
(2)从标签中筛选出关注的标签,如Car,每个标签label长度为8,分别是x、y、z、h、w、l、ry,其中x、y、z和ry是相机坐标系中的取值。利用校准数据Calib,相机坐标系下的x、y、z和ry转换为雷达坐标系下的x、y、z和rz,具体原理和过程可以参考KITTI数据集简介(四) — 标定校准数据calib_Coding的叶子的博客-CSDN博客和三维点云目标检测 — VoxelNet详解之数据处理 (二)_Coding的叶子的博客-CSDN博客两篇博客。注意到,VoxelNet代码和Complex-Yolo代码中关于坐标从相机坐标系变换到雷达坐标系的代码是不同的,VoxelNet参考代码中少了R0_rect的逆矩阵。将补充后的代码如下所示:
def camera_to_lidar(x, y, z, V2C=None, R0=None, P2=None):p = np.array([x, y, z, 1])if V2C is None or R0 is None:p = np.matmul(cnf.R0_inv, p)p = np.matmul(cnf.Tr_velo_to_cam_inv, p)else:R0_i = np.zeros((4, 4))R0_i[:3, :3] = R0R0_i[3, 3] = 1p = np.matmul(np.linalg.inv(R0_i), p)p = np.matmul(inverse_rigid_trans(V2C), p)p = p[0:3]
return tuple(p)
(3)将标注参数投影到图像中,获得投影后的x、y、w、l,详细介绍同Voxelnet部分:三维点云目标检测 — VoxelNet详解之数据处理 (二)_Coding的叶子的博客-CSDN博客。
(4)将x、y、w、l、rz转换成yolo格式,其中rz用欧拉公式转换为虚部(im)和实部(re)。这样最终真实标签target由8个维度组成,即batch_id、class_id、x、y、w、l、im、re。
(5)删除指定范围之外的激光雷达数据:kitti_bev_utils.removePoints(lidarData, cnf.boundary)。
(6)获取鸟瞰图(BEV)rgb_map:由强度图intensityMap(608x608)、高度图heightMap(608x608)和密度图densityMap(608x608)共同组成3x608x608维度的鸟瞰图,类似于3通道的RGB图片。这也是该算法核心思想的体现。鸟瞰图详细介绍请参考:点云鸟瞰图BEV原理与可视化_Coding的叶子的博客-CSDN博客。本程序中xoy平面内的网格尺寸由Discretization参数决定,取值为(boundary["maxX"] - boundary["minX"]) / BEV_HEIGHT
(7)读取到的数据需要经过随机水平翻转或Cutout增强。
经过上述7个步骤,可以得到模型输出的数据包含img_file、rgb_map、targets。假设Batch Size大小为B。img_file存储了image_2中对应图片的路径列表,长度为B。Rgb_map为步骤(6)中的鸟瞰图,维度为Bx3X608x608。targets为真实标签,根据(4)中定义可以知道其维度为Mx8,M为目标总数量。
3 数据可视化
运行src/data_process目录下的kitti_dataloader.py文件,可以得到部分可视化结果,如下图所示。
4 python三维点云从基础到深度学习_Coding的叶子的博客-CSDN博客_python三维点云重建
更多三维、二维感知算法和金融量化分析算法请关注“乐乐感知学堂”微信公众号,并将持续进行更新。
【三维目标检测】Complex-Yolov4详解(一): 数据处理相关推荐
- 【三维目标检测】Complex-Yolov4详解(二):模型结构
Complex-Yolo网络模型的核心思想是用鸟瞰图BEV替换Yolo网络输入的RGB图像.因此,在完成BEV处理之后,模型的训练和推理过程基本和Yolo完全一致.Yolov4中输入的RGB图片的尺寸 ...
- 目标检测算法YOLOv4详解
YOLOv4是精度速度最优平衡, 各种调优手段是真香,本文主要从以下几个方面进行阐述: YOLOv4介绍 YOLOv4框架原理 BackBone训练策略 BackBone推理策略 检测头训练策略 检测 ...
- 深度篇——目标检测史(七) 细说 YOLO-V3目标检测 之 代码详解
返回主目录 返回 目标检测史 目录 上一章:深度篇--目标检测史(六) 细说 YOLO-V3目标检测 下一章:深度篇--目标检测史(八) 细说 CornerNet-Lite 目标检测 论文地址:< ...
- 【三维目标分类】PointNet++详解(一)
上一节主要介绍了PointNet分类,本节将进一步介绍PointNet++点云分类.本节仍然参考Github上的源码进行介绍,PointNet采用全局最大值池化的方式对全体点云进行了特征抽取,这导致了 ...
- 【三维目标分类 】PointNet详解(一)
Pointnet是基于点云的三维目标检测网络,也是三维深度学习目标检测的基础网络之一.PointNet文章作者关于三维物体检测的讲解请参考3D物体检测的发展与未来 - 深蓝学院 - 专注人工智能与自动 ...
- 目标检测算法——YOLOV7——详解
1.主要贡献 主要是现有的一些trick的集合以及模块重参化和动态标签分配策略,最终在 5 FPS 到 160 FPS 范围内的速度和准确度都超过了所有已知的目标检测器. 当前目标检测主要的优化方向: ...
- 目标检测 RCNN算法详解
原文:http://blog.csdn.net/shenxiaolu1984/article/details/51066975 [目标检测]RCNN算法详解 Girshick, Ross, et al ...
- 目标检测算法——SSD详解
目录 一. 背景(基本介绍) 二. 网络结构 三. 具体过程 1. default box 匹配 2. 损失函数 3. 数据增广 4. Atrous Algothrim 5. NMS(非极大值抑制) ...
- 目标检测算法YOLO-V2详解
❝ 上期我们一起学习了YOLO-V1算法的框架原来和损失函数等知识,如下: 目标检测算法YOLO-V1算法详解 目标检测模型YOLO-V1损失函数详解 [文末领福利] ❞ 今天,我们一起学习下YOLO ...
最新文章
- 微信小程序 通过云函数请求http网站接口
- Oracle数据库表信息,序列,视图等导出,导入。(数据库备份和恢复)
- 万万没想到,枯燥的“机器学习”还可以这样学!
- 硬件基础:虚拟内存相关知识介绍?
- 总结面试时没有回答上的内存对齐问题
- 使用WxPython进行Win32下Python编程
- 201521145048《Java程序设计管理》第一周学习总结
- JavaScript事件处理程序的3种方式
- 4-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案升级篇(远程升级WIFI内部程序)
- 优化理论08-----约束优化的最优性条件、拉格朗日条件、凸性、约束规范、二阶最优性条件(上)
- HTML5手机游戏将迎美好未来 .
- java 运算符适用类型_java基础(数据类型,运算符)
- python做一个考试系统_怎么做一个在线考试系统?
- Python 冒泡排序 代码实现
- 北斗卫星导航系统基础篇之(一)
- 机器学习系列2---经验风险最小化原则和结构风险最小化原则与VC维问题
- c语言问号的用法及举例,问号的使用方法和另类用法有哪些
- 帝国CMS7.5忘记后台密码怎么找回
- 《日瓦戈医生》读后感
- st-link v2怎么连接_三相交流电的描述及连接方式