【论文笔记】NeRF-RPN: A general framework for object detection in NeRFs

news2025/1/15 19:23:51

原文链接:https://arxiv.org/abs/2211.11646

1. 引言

  NeRF模型能直接从给定的RGB图像和相机姿态学习3D场景的NeRF表达。本文提出NeRF-RPN,使用从NeRF模型提取的辐射场和密度,直接生成边界框提案。

3. 方法

  如图所示,本文的方法有两个组成部分,特征提取器(从NeRF采样的辐射和密度网格)和RPN头(生成物体提案)。
在这里插入图片描述

3.1 从NeRF输入采样

  第一步是均匀采样NeRF模型的辐射和密度场,建立特征体积网格。体积网格的分辨率与各维度范围成正比,从而保证物体的长宽比。对使用RGB作为辐射表达的NeRF模型,本文从NeRF训练时使用的视图集合中采样并平均结果。若相机姿态未知,则从球上均匀采样方向。通常来说,给定样本 ( r , g , b , α ) (r,g,b,\alpha) (r,g,b,α),其中 ( r , g , b ) (r,g,b) (r,g,b)为平均后的辐射, α \alpha α是从密度转换得到的: α = clip ( 1 − exp ⁡ ( − σ δ ) , 0 , 1 ) \alpha=\text{clip}(1-\exp(-\sigma\delta),0,1) α=clip(1exp(σδ),0,1)其中 δ = 0.01 \delta=0.01 δ=0.01是预设的距离。对使用球面谐波或其他基函数表达辐射的NeRF,可以根据下游任务,使用RGB值或基函数的系数作为辐射信息。

3.2 特征提取器

  考虑到不同大小的物体和不同尺度的场景,本文特征提取器中使用FPN输出特征金字塔。

3.3 3D区域提案网络

  3D RPN以特征金字塔为输入,输出一组有朝向的边界框及其对应的分数。本文实验了两种RPN:基于锚框的和无需锚框的,如下图所示。
在这里插入图片描述
  基于锚框的RPN:本文在特征金字塔的各层放置不同长宽比和尺寸的3D锚框,使用卷积预测各锚框内物体的偏移量和分数。各层之间的卷积共享权重。边界框偏移量 t = ( t x , t y , t z , t w , t l , t h , t α , t β ) t=(t_x,t_y,t_z,t_w,t_l,t_h,t_\alpha,t_\beta) t=(tx,ty,tz,tw,tl,th,tα,tβ)的回归目标被定义如下: t x = ( x − x a ) / w a , t y = ( y − y a ) / l a , t z = ( z − z a ) / h a t w = log ⁡ ( w / w a ) , t l = log ⁡ ( l / l a ) , t h = log ⁡ ( h / h a ) t α = Δ α / w , t β = Δ β / l t_x=(x-x_a)/w_a,t_y=(y-y_a)/l_a,t_z=(z-z_a)/h_a\\t_w=\log(w/w_a),t_l=\log(l/l_a),t_h=\log(h/h_a)\\t_\alpha=\Delta\alpha/w,t_\beta=\Delta\beta/l tx=(xxa)/wa,ty=(yya)/la,tz=(zza)/hatw=log(w/wa),tl=log(l/la),th=log(h/ha)tα=Δα/w,tβ=Δβ/l其中 x , y , z , w , l , h , α , β x,y,z,w,l,h,\alpha,\beta x,y,z,w,l,h,α,β为真实边界框参数, x a , y a , z a , w a , l a , h a x_a,y_a,z_a,w_a,l_a,h_a xa,ya,za,wa,la,ha为锚框参数。
  当某提案与任一真实边界框的IoU大于0.35时,或在所有提案中与某一真实边界框的IoU最大时,该提案被标记为正;非正提案中,与所有真实边界框的IoU均小于0.2的被标记为负。其余提案不参与损失函数的计算。损失函数与Faster-RCNN类似,分类使用二元交叉熵损失,回归使用smoothL1损失(仅对正锚框计算): L = 1 N ∑ i L c l s ( p i , p i ∗ ) + λ N p o s ∑ i p i ∗ L r e g ( t i , t i ∗ ) L=\frac{1}{N}\sum_iL_{cls}(p_i,p_i^*)+\frac{\lambda}{N_{pos}}\sum_ip^*_iL_{reg}(t_i,t_i^*) L=N1iLcls(pi,pi)+NposλipiLreg(ti,ti)后处理前会将提案转化为长方体。
  无需锚框的RPN:类似FCOS,预测分数 p p p、中心性 c c c和边界框偏移量 t = ( x 0 , y 0 , z 0 , x 1 , y 1 , z 1 , Δ α , Δ β ) t=(x_0,y_0,z_0,x_1,y_1,z_1,\Delta\alpha,\Delta\beta) t=(x0,y0,z0,x1,y1,z1,Δα,Δβ)。回归目标被定义为: x 0 ∗ = x − x 0 ( i ) , x 1 ∗ = x 1 ( i ) − x , y 0 ∗ = y − y 0 ( i ) , y 1 ∗ = y 1 ( i ) − y , z 0 ∗ = z − z 0 ( i ) , z 1 ∗ = z 1 ( i ) − z Δ α ∗ = v x ( i ) − x , Δ β ∗ = v y ( i ) − y x_0^*=x-x_0^{(i)},x_1^*=x_1^{(i)}-x,y_0^*=y-y_0^{(i)},y_1^*=y_1^{(i)}-y,z_0^*=z-z_0^{(i)},z_1^*=z_1^{(i)}-z\\\Delta\alpha^*=v_x^{(i)}-x,\Delta\beta^*=v_y^{(i)}-y x0=xx0(i),x1=x1(i)x,y0=yy0(i),y1=y1(i)y,z0=zz0(i),z1=z1(i)zΔα=vx(i)x,Δβ=vy(i)y其中 x , y , z x,y,z x,y,z表示体素位置,上标 ( i ) (i) (i)表示真实边界框,下标0和下标1代表该真实轴对齐边界框在该维度上的下界和上界。 v x ( i ) v_x^{(i)} vx(i)表示真实边界框在 x y xy xy平面投影中最上方顶点的 x x x坐标, v y ( i ) v_y^{(i)} vy(i)表示真实边界框在BEV投影中最右方顶点的 y y y坐标,如上图所示。中心性的真实值为 c ∗ = min ⁡ ( x 0 ∗ , x 1 ∗ ) max ⁡ ( x 0 ∗ , x 1 ∗ ) × min ⁡ ( y 0 ∗ , y 1 ∗ ) max ⁡ ( y 0 ∗ , y 1 ∗ ) × min ⁡ ( z 0 ∗ , z 1 ∗ ) max ⁡ ( z 0 ∗ , z 1 ∗ ) c^*=\sqrt{\frac{\min(x^*_0,x^*_1)}{\max(x^*_0,x^*_1)}\times\frac{\min(y^*_0,y^*_1)}{\max(y^*_0,y^*_1)}\times\frac{\min(z^*_0,z^*_1)}{\max(z^*_0,z^*_1)}} c=max(x0,x1)min(x0,x1)×max(y0,y1)min(y0,y1)×max(z0,z1)min(z0,z1) 总损失为 L i = 1 N ∑ i L c l s ( p i , p i ∗ ) + λ N p o s ∑ i p i ∗ L r e g ( t i , t i ∗ ) + 1 N p o s ∑ i p i ∗ L c t r ( c i , c i ∗ ) L_i=\frac{1}{N}\sum_iL_{cls}(p_i,p_i^*)+\frac{\lambda}{N_{pos}}\sum_ip^*_iL_{reg}(t_i,t_i^*)+\frac{1}{N_{pos}}\sum_ip^*_iL_{ctr}(c_i,c_i^*) Li=N1iLcls(pi,pi)+NposλipiLreg(ti,ti)+Npos1ipiLctr(ci,ci)其中分类损失为focal损失,回归损失为旋转边界框的IoU损失,中心性损失为二元交叉熵损失。 p i ∗ ∈ { 0 , 1 } p_i^*\in\{0,1\} pi{0,1}为体素真实标签,由FCOS中的中心采样和多级预测过程确定。 N p o s N_{pos} Npos p i ∗ = 1 p^*_i=1 pi=1的体素数。后处理前同样会将提案转化为长方体。

3.4 额外损失函数

在这里插入图片描述
  物体分类:虽然NeRF-RPN主要目标是获取高召回率,但有时候低FP率也很重要。本文加入二元分类网络实现前景/背景分割,输入RPN产生的感兴趣区RoI和特征提取器输出的特征金字塔,输出分类分数和RoI的细化偏移量,如上图所示。本文参考Oriented RPN,通过旋转RoI池化,为每个提案 ( x r , y r , z r , w r , l r , h r , θ r ) (x_r,y_r,z_r,w_r,l_r,h_r,\theta_r) (xr,yr,zr,wr,lr,hr,θr)提取具有旋转不变性的特征。首先,放大边界框并划分为特征体积网格,然后使用三线性插值计算每个网格的值,输入到池化层中,得到 N × 3 × 3 × 3 N\times3\times3\times3 N×3×3×3大小,输入分类和回归分支。此处的边界框偏移量 g = ( g x , g y , g z , g w , g l , g h , g θ ) g=(g_x,g_y,g_z,g_w,g_l,g_h,g_\theta) g=(gx,gy,gz,gw,gl,gh,gθ)被定义为: g x = ( ( x − x r ) cos ⁡ θ r + ( y − y r ) sin ⁡ θ r ) / w r , g y = ( ( y − y r ) cos ⁡ θ r − ( x − x r ) sin ⁡ θ r ) / l r , g z = ( z − z r ) / h r g w = log ⁡ ( w / w r ) , g l = log ⁡ ( l / l r ) , g h = log ⁡ ( h / h r ) , g θ = ( θ − θ r ) / 2 π g_x=((x-x_r)\cos\theta_r+(y-y_r)\sin\theta_r)/w_r,g_y=((y-y_r)\cos\theta_r-(x-x_r)\sin\theta_r)/l_r,g_z=(z-z_r)/h_r\\g_w=\log(w/w_r),g_l=\log(l/l_r),g_h=\log(h/h_r),g_\theta=(\theta-\theta_r)/2\pi gx=((xxr)cosθr+(yyr)sinθr)/wr,gy=((yyr)cosθr(xxr)sinθr)/lr,gz=(zzr)/hrgw=log(w/wr),gl=log(l/lr),gh=log(h/hr),gθ=(θθr)/2π与任一真实边界框的IoU大于0.25的RoI被标记为物体,其余为非物体。损失函数与基于锚框的RPN一节类似,只有边界框偏移量被替换为 g , g ∗ g,g^* g,g
  2D投影损失:将3D边界框坐标 b i = ( x i , y i , z i ) b_i=(x_i,y_i,z_i) bi=(xi,yi,zi)投影到2D b i ′ = ( x i ′ , y i ′ ) b'_i=(x'_i,y'_i) bi=(xi,yi),得到2D投影损失: L 2 d   p r o j = 1 N c a m N b o x L r e g ( b i ′ , b i ′ ∗ ) L_{2d\ proj}=\frac{1}{N_{cam}N_{box}}L_{reg}(b'_i,{b'_i}^*) L2d proj=NcamNbox1Lreg(bi,bi)

5. 实验

5.1 训练&测试

  训练:训练时输入场景被随机沿 x , y x,y x,y轴翻转和沿 z z z轴旋转 π / 2 \pi/2 π/2角。此外,场景也会随机沿 z z z轴再旋转一个小角度。对于基于锚框的RPN,每次随机采样256个锚框(正负比为1:1)进行损失计算。
  测试:首先过滤场景外的边界框,然后为每个特征尺度选择2500个提案进行非最大抑制后,选择分数最高的2500个提案。

5.2 消融研究

  主干和颈部:固定主干和颈部后,无需锚框的RPN有更好的性能,因为中心性预测能抑制那些较远的提案,且锚框固定的长宽比和尺寸限制其对尺寸不一物体的检测。
  NeRF采样策略:NeRF的密度场是与视图无关的,而辐射场是与视图方向相关的,有各种编码方式。在补充材料中的实验表明,仅使用密度是最佳策略。
  回归损失:使用IoU损失、DIoU损失以及其作用于带朝向边界框的变体进行实验,表明IoU损失能有更好的性能。

5.3 结果

  实验表明,质量较差的NeRF重建会严重影响边界框预测。
  应用:场景编辑。给定NeRF-RPN输出的提案,可以对NeRF场景进行编辑,如在渲染时设置提案内的密度为0。

补充材料

2. 对NeRF采样策略的消融研究

  为探究NeRF视图相关的辐射信息对检测性能的影响,本文实验了下列采样方式:

  1. 仅使用密度;
  2. 使用固定的18个视图的平均辐射 + 密度;
  3. 使用训练时所有相机视图的平均辐射 + 密度;
  4. 在3的基础上,只选择视锥内包含采样点的训练视图;
  5. 使用最高3阶的球面谐波(SH)系数(SH函数是从球面上的300个方向均匀采样辐射得到的) + 密度。

实验表明,1的性能最优,这表明辐射信息会影响性能。

3. 物体分类

  实验表明,使用物体分类损失会使性能下降。这可能是特征体积网格的分辨率有限,旋转插值会导致高重采样误差。但对于某些需要RoI特征的下游任务而言,物体分类损失仍可能是有用的。

4. 2D投影

  实验表明,3D监督已经提供足够信息,使用2D监督不能提高性能。但当3D监督不存在时,2D投影损失仍可能有用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1031726.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

TouchGFX之画布控件

TouchGFX的画布控件,在使用相对较小的存储空间的同时保持高性能,可提供平滑、抗锯齿效果良好的几何图形绘制。 TouchGFX 设计器中可用的画布控件: LineCircleShapeLine Progress圆形进度条 存储空间分配和使用​ 为了生成反锯齿效果良好的…

「UG/NX」BlockUI 选择小平面区域 Select Facet Region

✨博客主页何曾参静谧的博客📌文章专栏「UG/NX」BlockUI集合📚全部专栏「UG/NX」NX二次开发「UG/NX」BlockUI集合「VS」Visual Studio「QT」QT5程序设计「C/C」C/C程序设计「Win」Windows程序设计「DSA」数据结构与算法「File」数据文件格式 目录 控件说…

深入探究序列化与反序列化:原理、应用和最佳实践

目录 什么是对象的序列化和反序列化序列化步骤反序列化步骤案例演示Java中哪些字段不能序列化序列化与反序列化的重要性序列化与反序列化的应用场景 什么是对象的序列化和反序列化 序列化(Serialization)是指将对象转化为字节流的过程,以便于…

点燃创意,发掘绘图潜能——FireAlpaca for Mac专业绘图软件

无论您是一位艺术家、插画师还是爱好绘图的人,寻找一款功能强大且易于使用的绘图软件都是必不可少的。而FireAlpaca for Mac作为一款专为Mac用户设计的专业绘图软件,将点燃您的创意,帮助您发掘绘图的潜能。 FireAlpaca for Mac拥有丰富的工具…

Linux,计算机网络,数据库

Linux,计算机网络,数据库,操作系统 一、Linux1、linux查看进程2、linux基本命令3、top命令、查看磁盘 二、计算机网络1、HTTP的报文段请求 Repuest响应 Response 2、HTTP用的什么连接3、TCP的三次握手与四次挥手三次握手四次挥手 4、在浏览器…

【RabbitMQ实战】02 生产者和消费者示例

在上一节中,我们使用docker部署了RabbitMQ,这一节我们将写一段生产者和消费者的代码。将用到rabbitmq的原生API来进行生产和发送消息。 一、准备工作 开始前,我们先在RabbitMQ控制台建相好关的数据 本机的RabbitMQ部署机器是192.168.56.201…

竞赛 基于深度学习的动物识别 - 卷积神经网络 机器视觉 图像识别

文章目录 0 前言1 背景2 算法原理2.1 动物识别方法概况2.2 常用的网络模型2.2.1 B-CNN2.2.2 SSD 3 SSD动物目标检测流程4 实现效果5 部分相关代码5.1 数据预处理5.2 构建卷积神经网络5.3 tensorflow计算图可视化5.4 网络模型训练5.5 对猫狗图像进行2分类 6 最后 0 前言 &#…

【操作系统笔记五】内存布局内存映射

虚拟内存布局 虚拟地址空间大小: 32位虚拟地址空间 [0 ~ 2^32 - 1] 总共4GB64位虚拟地址空间 [0 ~ 2^64 - 1] 总共16 777 216TB 不管是运行在用户态还是内核态,都需要使用虚拟地址,这是因为计算机硬件要求的,CPU要经过地址转换得…

观测云产品更新 | 优化日志数据转发、索引绑定、基础设施自定义等

观测云更新 日志 数据转发:新增外部存储转发规则数据查询;支持启用/禁用转发规则;绑定索引:日志易新增标签绑定,从而实现更细颗粒度的数据范围查询授权能力。 基础设施 > 自定义 【默认属性】这一概念更改为【必…

绝佳盘点:2023年最好用的AI机器人

近几年人工智能可以说是以前所未有的速度在发展,越来越多的企业意识到,在运营的过程中学会熟练地应用AI机器人是可以帮助他们很好地提高工作效率的。那么有哪些AI机器人比较好用呢?接下来我会介绍几个个人觉得比较优秀的AI机器人工具&#xf…

【51单片机】6-点亮第一个LED灯

1.单片机编程的一般步骤 1.目标分析 点亮开发板上的LED灯 2.原理图【电路图】分析 1.目标器件(LED)工作原理 2.相关模块电路连接 3.控制线路分析:相关IO端口是哪些? 3.代码编写,编译 4.下载于调试 2.原理图与控制…

杂记 | 使用gitlab-runner将python项目以docker镜像方式流水线部署到服务器(解决部署缓慢和时区不对的问题)

文章目录 01 需求背景1.1 需求1.2 步骤 02 编写BaseDockerfile2.1 编写2.2 说明2.3 执行 03 编写Dockerfile04 编写.gitlab-ci.yml05 项目结构 01 需求背景 1.1 需求 我有一个python项目,该项目可能是一个服务器监控程序,也可能是一个后端程序&#xf…

【开关稳压器】LMR16030SDDA、LMR38010FDDAR,汽车类LMR43610MSC5RPERQ1低 EMI 同步降压稳压器

一、LMR16030SDDA 开关稳压器 IC REG BUCK ADJ 3A 8SOPWR LMR16030 是一款带有集成型高侧 MOSFET 的 60V、3A SIMPLE SWITCHER 降压稳压器。该器件具有4.3V 至 60V 的宽输入范围,适用于从工业到汽车各类应用中非稳压电源的电源调节。该稳压器在睡眠模式下的静态电流…

基于TensorFlow+CNN+协同过滤算法的智能电影推荐系统——深度学习算法应用(含微信小程序、ipynb工程源码)+MovieLens数据集(二)

目录 前言总体设计系统整体结构图系统流程图 运行环境模块实现1. 模型训练1)数据集分析2)数据预处理 相关其它博客工程源代码下载其它资料下载 前言 本项目专注于MovieLens数据集,并采用TensorFlow中的2D文本卷积网络模型。它结合了协同过滤…

h5下载文件,无兼容问题~

最近写了个页面,打开页面出现文件列表,用户可以下载文件。 失败方案 使用a标签进行下载,参考代码如下: 因为有批量下载的需求,这里将xhr请求单独封装到downloadFile.js中 // downloadFile.js const downloadFile …

Flutter超好用的路由库-fluro

文章目录 fluro的介绍fluro简介安装和导入路由配置导航到路由参数传递 fluro的典型使用创建路由管理类代码解释例子小结 初始化路由导航到路由 总结 fluro的介绍 fluro简介 fluro是一个流行的Flutter插件,用于实现高级路由管理。它提供了灵活的路由配置和导航功能…

VR科普研学基地科普开放日普乐蛙VR体验馆沉浸式体验设备

广州科普开放日来啦 2023年9月广州科普开放日来啦,9月16日周六上午9点,广州卓远非常荣幸地迎来了一批前来体验的家庭。 比原定的集合时间提前了近1个小时,已经开始有家长带着小朋友来到了VR科普基地,可见大家对VR科普体验的热情和…

轻量服务器是不是vps ?和vps有什么区别

​  轻量型服务器是介于云服务器和共享型服务器之间的一种解决方案。它提供较为独立的资源分配,但规模较小,适用于中小型网站和应用程序。轻量型服务器的硬件资源来源于大型的公有云集群的虚拟化技术。轻量型服务器的性能和带宽可能会稍逊于云服务器。…

【笨~~~】在python中导入另一个模块的函数时,为什么会运行模块中剩下的部分??顶层?

一个程序员一生中可能会邂逅各种各样的算法,但总有那么几种,是作为一个程序员一定会遇见且大概率需要掌握的算法。今天就来聊聊这些十分重要的“必抓!”算法吧~ Python导入了其他文件中的函数,运行时连着这个文件一起运行了 在py…

椭圆曲线加密算法

椭圆曲线密码学(Elliptic curve cryptography),简称ECC,是一种建立公开密钥加密的算法,也就是非对称加密。类似的还有RSA,ElGamal算法等。ECC被公认为在给定密钥长度下最安全的加密算法。比特币中的公私钥生…