三维目标检测|IoU3D-基于cuda的三维七自由度包围盒交并比(IoU)计算

本文的基础代码来自于PointRCNN代码库,代码链接
在三维目标检测中,往往需要面临大规模级别包围盒交并比(IoU)计算,如果在计算过程中仅仅通过串行方式进行计算,将会面临计算效率低下,网络训练缓慢等缺点。作者在最近的三维目标检测任务中就遇到了这样的问题,自己编写的代码无法高效的计算,幸好在shi shaoshuai等人开发了iou3d_nms模块,本文将介绍iou_nms的安装,测试。

安装过程

  1. 首先创建conda虚拟环境(也可以使用已有的虚拟环境),作者这里用的是python 3.7版本
conda create python=3.7 -n iou3d_test
conda activate iou3d_test
  1. 安装必要软件环境,作者的机器使用的是cuda10.2,且NVIDIA驱动已完整安装,所以使用如下指令安装torch环境
conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 cudatoolkit=10.2 -c pytorch
  1. Clone 源代码,这里直接将pointrcnn源码clone了下来
git clone --recursive https://github.com/sshaoshuai/PointRCNN.git
  1. 安装iou3d
cd lib/utils/iou3d/
python setup.py install
  1. 写一段代码来测试
import os, sys
sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)), '../'))
import torch
import time
from lib.utils.iou3d.iou3d_utils import boxes_iou3d_gpu

boxes_a = torch.rand([100,7]).to('cuda')
boxes_b = torch.rand([100,7]).to('cuda')
start = time.time()
ans = boxes_iou3d_gpu(boxes_a, boxes_b)
end = time.time()
print(f"执行时间: {end - start:.4f}秒")

在测试代码中随机初始化100个包围盒A和100个包围盒B,计算结果包含(100,100)个交并比结果,计算仅用时 0.0022秒
测试成功

最后一点,PointRCNN中的IoU是在相机坐标系下计算的(详见kitti官网),若要使用常规坐标系,建议使用OpenPCDet项目中的iou3d项目。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值