【论文阅读】【3d目标检测】Group-Free 3D Object Detection via Transformers

本文介绍了一种无需手工group的3D对象检测方法,针对Votenet中knn聚类的问题,提出使用Transformer进行点云特征操作。通过自注意力机制和交叉注意力,智能选择种子点并生成高质量提案,适应不同环境下的点云密度。实验展示了改进后的模型在速度和性能上的优势。

论文标题:Group-Free 3D Object Detection via Transformers

iccv2021
本文主要是针对votenet等网络中采用手工group的问题提出的改进
我们首先回忆一下vote中group是怎么做的:首先选出vote种子后进行采样与聚类 采样与聚类的方式一般是knn寻找vote种子的临近点 请注意 这里的选取的group数 和聚类临近点的数目都是我们手工设计的
那么这么设计会有一些什么不好的地方呢? 首先vote数目是fps选取出来的 为了选取到覆盖所有目标的vote 我们必须要选择足够多的vote 这样便会在背景点上选择不少vote 进行聚类生成质量很差的proposals
其次 这些选取的超参数是否是最优的呢 我们需要进行大量的对比实验 而且一个算法在室内与室外环境下应用这样的超参数也是不太能直接移植的 因为两种环境下点云的密度是不一样的。
例如下图中 我们可以看到对于中心临近的物体 他很容易选择到其他物体上的点:
在这里插入图片描述
那么 如何根据物体进行点的选取呢?
这便是这篇文章做的事情。
老规矩 上图
在这里插入图片描述
文章的结构很类似votenet 主要创新在于vote种子的选取及种子之间的feature操作
首先简单介绍一下backbone 主要是首先利用pointnet++的sa层进行8倍下采样 随后上采样至2x得到1024个点 对于这1024个点我们选取vote种子点 文章提出了三种方法 首先是进行fps选取最远的k个点 其次是选取k个种子点 简单来说就是选取最邻近物体中心的k个点 这便涉及到

End-to-End Object Detection with Transformers即DETR方法。要复现该论文中的目标检测方法,可按以下步骤进行: ### 1. 了解论文核心要点 DETR一次性预测所有目标,并使用集合损失函数进行端到端训练,该损失函数在预测目标真实目标之间进行二分匹配。其主要特征是二部匹配损失非自回归并行解码的transformer的结合,通过去除多个编码先验知识的手工设计组件(如空间锚框或非极大值抑制)来简化检测流程,且不需要任何定制层,可在包含标准CNN变换器类的任何框架中轻松复现 [^2][^3]。 ### 2. 获取论文代码 论文链接为:https://arxiv.org/pdf/2005.12872.pdf,代码链接为:https://github.com/facebookresearch/detr [^1]。 ### 3. 环境搭建 通常需要安装Python环境以及深度学习框架(如PyTorch),还有一些依赖库,可根据代码仓库中的`requirements.txt`文件进行安装。示例安装命令如下: ```bash pip install -r requirements.txt ``` ### 4. 数据准备 准备适合目标检测的数据集,如COCO数据集。需要将数据集按照一定的目录结构放置,以便代码能够正确读取。 ### 5. 模型训练 按照代码仓库中的说明,使用准备好的数据集进行模型训练。一般会有训练脚本,例如: ```bash python main.py --coco_path /path/to/coco --batch_size 2 --output_dir output ``` 其中`--coco_path`指定数据集路径,`--batch_size`指定批量大小,`--output_dir`指定输出目录。 ### 6. 模型评估 训练完成后,使用测试集对模型进行评估,以验证模型的性能。评估脚本一般也在代码仓库中,可按照说明执行。 ### 7. 模型推理 使用训练好的模型对新的图像进行目标检测推理,获取检测结果。示例推理代码可能如下: ```python import torch from models import build_model from PIL import Image import torchvision.transforms as T # 加载模型 model, _, _ = build_model(args) checkpoint = torch.load('path/to/checkpoint.pth') model.load_state_dict(checkpoint['model']) model.eval() # 图像预处理 transform = T.Compose([ T.Resize(800), T.ToTensor(), T.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]) ]) # 加载图像 image = Image.open('path/to/image.jpg') image = transform(image).unsqueeze(0) # 推理 with torch.no_grad(): outputs = model(image) # 处理输出结果 # ... ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值