MV3D代码笔记

MV3D代码笔记

  • data.py文件
  • train.py
  • tracklet_labels.txt文件

说一说心路历程
一周前看到了论文pointfusion,但是在阅读代码的时候,发现 pointfusion代码中直接使用了处理过后的kitti数据,如下代码可视;但是我又不知道他是怎么处理的,然后就想到了MV3D中有类似的操作,所以起了阅读MV3D源码的想法;两天前开始阅读源码,找了一个star最高的MV3D源码进行阅读

MV3D代码笔记_第1张图片
但是,随着阅读的进行,我发现这个源码中没有加载前视图的特征;然后就失去了继续阅读的兴趣;但是还是准备对已经阅读的一些文件做个笔记,以备以后需要

data.py文件

  1. 运行daty.py文件,之前需要对src\lidar_data_preprocess\Python_to_C_Interface\ver3文件夹进行编译,产生LidarTopPreprocess.so文件
  2. 运行data.py文件以后,在data文件中产生6个文件夹,如下图:
    MV3D代码笔记_第2张图片
  • gt_boxes3d 储存154个npy文件,每个文件对应一帧点云数据中所有boxes的8个坐标信息
  • gt_boxes_plot 储存了154和png文件,是将2Dbox画在img上的png文件(并不是所有额obj都被画了出来,根据tracklet.xml文件可知,点云数据中还有cycilst和行人等目标,但是在data阶段没有画出来)
    MV3D代码笔记_第3张图片
  • gt_labels 文件夹里边包含154个npy文件,储存对应点云中boxes目标框的标签,比如[1,1].代表这帧点云中有两个boxes框,且种类标签都为1
  • rgb 154个png文件,代表归一化后的原始image;不要诧异图片是黑色的,黑色的原因是因为原始图片的rgb范围是[0,255].黑色的图片rgb范围是[0,1];
  • top npy.npz文件,mv3d的top视图,将点云平均分为M个切片,为每一个切片计算高度图,得到M个高度图;代码中的M计算得15;
    首先将点云分为很对个3维格子,设置格子的长宽高分辨率;然后根据点的三维坐标确定位于的格子;取每个格子内所有点的最大高度为切片对应得2D 格子的高度值;源码里边将每个点云切片分为500*300的分辨率;每个npy.npz文件可以得到一个shape为[500,300,15]的数组
    详情可以阅读data.py中的函数lidar_to_top函数;
  • top_image
    MV3D代码笔记_第4张图片

train.py

阅读train.py的时候,发现作者写的巨复杂。这个MV3D的代码与一个月前阅读的pointrnn的源码比要逊色好多;读起来很费劲。train.py写的也很复杂,原作者的代码对于输入的数据有两种,一种是只使用一个2011_09_26_drive_0005_sync数据,一种就是使用所有的2011_09_26数据,如下图

MV3D代码笔记_第5张图片
MV3D代码笔记_第6张图片
也是将数据分为7:3的比例进行训练和测试;
MV3D代码笔记_第7张图片
这是处理只使用一个bag数据包2011_09_26_drive_0005_sync时,分为训练集和测试集的处理函数;

tracklet_labels.txt文件

文件中提供了某物体boxes出现的首帧索引和出现的帧数,每一个类别的box大小和boxes的中心点坐标和角度
MV3D代码笔记_第8张图片

根据tracklet_labels.txt文件可以得到所有154帧点云数据的所有object情况,可以得到每帧数据的object个数和信息;
在tracklet_tools.py中有将tracklet_labels.txt内容转换为列表的代码,如下;

MV3D代码笔记_第9张图片

你可能感兴趣的:(点云目标检测,python,opencv,计算机视觉,目标跟踪)