IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 三维点云目标检测 — VoxelNet详解crop.py (一) -> 正文阅读

[人工智能]三维点云目标检测 — VoxelNet详解crop.py (一)

????????接下来将详细介绍VoxelNet三维点云目标检测模型,将参考Github上的源码进行介绍,Github地址为https://github.com/skyhehe123/VoxelNet-pytorch

????????本节将重点介绍数据处理中的crop.py的裁剪功能。

1 代码环境部署

conda create -n torch04 python=3.6
conda activate torch04
pip install torch==0.4.1
pip install torchvision==0.2.2
pip install cython opencv-python shapely cffi scipy mayavi
python setup.py build_ext --inplace
python nms/build.py

2 数据介绍

????????代码中的数据集采用的是KITTI数据集。为了快速进行算法调试和验证,我制作了一份Mini KITTI数据集,目录结构与KITTI完全一致,含20个训练样本和5个测试样本。下载地址为:minikitti数据集-深度学习文档类资源-CSDN下载。KITTI数据集的介绍请参考KITTI数据集简介 — Mini KITTI_Coding的叶子的博客-CSDN博客

????????MINI KITTI数据集解压后按照下面目录保存。

? ? ? ? 除此之外还需要,在training文件夹下新建train.txt、val.txt、test.txt文件,指定各个任务对应的文件名称。样例请参考:train_val_testforminikitti-深度学习文档类资源-CSDN下载

?3 crop.py

????????crop程序的作用是把在图像坐标之外的点云进行裁剪删除,便于后期可视化验证。主要流程如下:

????????(1)读取图像数据(375x1242x3)和激光雷达数据(4xK),K表示激光雷达点云中点的数量,4分别表示x、y、z、反射强度。

????????(2)读取标定校准参数,各个参数的相关介绍参考。外参矩阵Tr_velo_to_cam(3x4)需要增加一行[0, 0, 0, 1]变成4x4的矩阵,这样可以同时对反射强度进行保存。同样地,R0_rect也增加一行[0, 0, 0, 1]变成4x4的矩阵。内参矩阵P的维度为3x4。相应的函数段为:

def load_calib(calib_dir):
    # P2 * R0_rect * Tr_velo_to_cam * y
    lines = open(calib_dir).readlines()
    lines = [ line.split()[1:] for line in lines ][:-1]
    #
    P = np.array(lines[CAM]).reshape(3,4)
    #
    Tr_velo_to_cam = np.array(lines[5]).reshape(3,4)
    Tr_velo_to_cam = np.concatenate(  [ Tr_velo_to_cam, np.array([0,0,0,1]).reshape(1,4)  ]  , 0     )
    #
    R_cam_to_rect = np.eye(4)
    R_cam_to_rect[:3,:3] = np.array(lines[4][:9]).reshape(3,3)
    #
    P = P.astype('float32')
    Tr_velo_to_cam = Tr_velo_to_cam.astype('float32')
    R_cam_to_rect = R_cam_to_rect.astype('float32')
    return P, Tr_velo_to_cam, R_cam_to_rect

? ? ? ? (3)从原始点云中选出强度大于0的点,点云维度降为(4xL)。

? ? ? ? (4)将点云第4个维度反射强度暂时设置为1,以便与外参矩阵和R0矩阵相乘时进行平移操作。内参矩阵左乘R0矩阵左乘外参矩阵左乘点云坐标后得到点云在相机坐标系中的坐标,参考:KITTI数据集简介(四) — 标定校准数据calib_Coding的叶子的博客-CSDN博客。筛选出z大于0的点,即在相机前方的点,这样点云维度进一步下降至4xL。将得到的点云坐标除以z方向上坐标后,可得到点云在像平面上的ix、iy坐标。相应的函数段为:

def project_velo_points_in_img(pts3d, T_cam_velo, Rrect, Prect):
    '''Project 3D points into 2D image. Expects pts3d as a 4xN
        numpy array. Returns the 2D projection of the points that
        are in front of the camera only an the corresponding 3D points.'''
    # 3D points in camera reference frame.
    pts3d_cam = Rrect.dot(T_cam_velo.dot(pts3d))
    # Before projecting, keep only points with z>0
    # (points that are in fronto of the camera).
    idx = (pts3d_cam[2,:]>=0)
    pts2d_cam = Prect.dot(pts3d_cam[:,idx])
    return pts3d[:, idx], pts2d_cam/pts2d_cam[2,:], idx

? ? ? ? (5)筛选出ix、iy坐标在图像宽高(242、375)范围内的点云,并将点云的颜色复制为图像中对应像素的颜色。最终点云的维度为Nx9,每个点有9个维度,即x、y、z、reflectance、R、G、B、ix、iy。最后将点云以bin格式保存到crop文件夹下。

4 运行crop程序

????????在运行crop.py之前,需要先在training和testing文件夹下新建crop文件夹,否则运行程序时会提示找不到相应文件。默认处理的文件夹为testing,循环次数需要由7518改为5,这是因为MINI KITTI中的测试样本数量为5。然后在程序中将处理的改文件夹为training,循环次数需要由5改为20,这是因为MINI KITTI中的训练样本数量为20。

python三维点云从基础到深度学习_Coding的叶子的博客-CSDN博客_python 三维点云从三维基础知识到深度学习,将按照以下目录持续进行更新。更新完成的部分可以在三维点云专栏中查看。https://blog.csdn.net/suiyingy/category_11740467.htmlhttps://blog.csdn.net/suiyingy/category_11740467.html1、点云格式介绍(已完成)常见点云存储方式有pcd、ply、bin、txt文件。open3d读写pcd和plhttps://blog.csdn.net/suiyingy/article/details/124017716

??更多三维、二维感知算法和金融量化分析算法请关注“乐乐感知学堂”微信公众号,并将持续进行更新。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-05-21 18:58:09  更:2022-05-21 19:00:39 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 5:59:28-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码