DiffusionDet:用于物体检测的扩散模型

news2025/2/27 7:31:49

在这里插入图片描述

论文标题:DiffusionDet: Diffusion Model for Object Detection

论文地址:https://arxiv.org/pdf/2211.09788

DiffusionDet:用于物体检测的扩散模型

  • 检测模型发展
    • 物体检测
  • DiffusionDet方法
    • 预备知识
    • DiffusionDet前向扩散过程
    • DiffusionDet反向扩散推理过程
  • 模型架构
    • 图像编码器
    • 检测解码器
  • 实验结果

本文提出了DiffusionDet,这是一个新颖的框架,将目标检测任务转化为从噪声框到目标框的去噪扩散过程

在训练阶段,对象框从真实框扩散到随机分布,并且模型学习逆转这种噪声过程。在推理阶段,模型以渐进的方式将一组随机生成的框细化为输出结果。研究可以实现动态的框数和迭代评估。在标准基准测试上的大量实验表明,与之前的检测器相比,DiffusionDet 取得了优异的性能。

在从 COCO 到 CrowdHuman 的零样本传输设置下,使用更多框和迭代步骤进行评估时,DiffusionDet 实现了 5.3 AP 和 4.8 AP 的增益

代码可在 https://github.com/ShoufaChen/DiffusionDet 获取。

目标检测旨在预测图像中目标对象的一组边界框和相关类别标签。作为一项基本的视觉识别任务,它在实例分割、姿势估计、动作识别、对象跟踪和视觉关系检测等许多相关识别场景中发挥着至关重要的作用。现代目标检测方法经历了从经验对象先验到可学习对象查询的不断演变。

具体来说,大多数检测器通过在经验设计的候选对象上定义代理回归和分类来解决检测任务,例如滑动窗口、区域建议、锚框和参考点。最近,DETR提出了可学习的对象查询,消除了手工设计的组件,建立了端到端的检测管道,吸引了大量关注。

尽管这些方法实现了简洁而有效的设计,但它们仍然依赖于一组固定的可学习查询。一个自然的问题是:是否有一种更简单的方法,甚至不需要可学习查询的替代品?为了解决这一问题,设计了一个新颖的框架,可以直接从一组随机框中检测对象。这些框不包含需要在训练阶段优化的可学习参数,目标是逐渐细化这些框的位置和大小,直到它们完美覆盖目标对象。这种从噪声到框的方法既不需要启发式对象先验,也不需要可学习的查询,进一步简化了对象候选并推动了检测管道的发展。

在这里插入图片描述
噪声到框范式的原理类似于去噪扩散模型中的噪声到图像过程,后者是一类基于似然的模型,通过学习的去噪模型逐渐去除图像中的噪声来生成图像。扩散模型在许多生成任务中取得了巨大成功,并开始在图像分割等感知任务中进行探索。然而,现有技术尚未成功地将其应用于目标检测。

在此基础上,提出了DiffusionDet,它通过将检测作为图像中边界框的位置(中心坐标)和大小(宽度和高度)空间上的生成任务,使用扩散模型来处理目标检测任务。

在训练阶段,将高斯噪声添加到地面实况框以获得噪声框。然后,这些噪声框用于从主干编码器的输出特征图中裁剪感兴趣区域(RoI)的特征,例如ResNet和Swin Transformer。最后,这些RoI特征被发送到检测解码器,该解码器经过训练可以预测无噪声的真实框。通过这个训练目标,DiffusionDet能够从随机框中预测真实框。在推理阶段,DiffusionDet通过反转学习的扩散过程来生成边界框,该过程将噪声先验分布调整为边界框上的学习分布。

DiffusionDet 作为一种概率模型,具有令人着迷的灵活性。训练一次网络,并在推理阶段的不同设置下使用相同的网络参数,包括动态框数和迭代评估。利用随机框作为候选对象,DiffusionDet 的训练和评估阶段得以解耦,可以使用任意数量的随机框来训练和评估模型。此外,受益于扩散模型的迭代去噪特性,DiffusionDet可以迭代地重用整个检测头,进一步提高其性能。

DiffusionDet的灵活性使其在检测不同场景(例如稀疏或拥挤)的对象时具有巨大优势,而无需额外的微调。例如,在CrowdHuman数据集上直接评估COCO预训练模型时,通过调整评估框的数量和迭代步骤,DiffusionDet获得了显著的性能提升。而以前的方法只能获得边际收益,甚至性能下降。此外,在COCO数据集上评估DiffusionDet时,借助ResNet-50主干,使用单个采样步骤和300个随机框实现了45.8 AP,性能显著优于Faster R-CNN和DETR,并与Sparse R-CNN相当。通过增加采样步数和随机框的数量,DiffusionDet进一步提升到46.8 AP。

在这里插入图片描述

检测模型发展

物体检测

现代对象检测方法主要依赖于经验对象先验进行框回归和类别分类,如提案、锚点和点的方法。例如,提案方法、锚点方法和点方法。最近,Carion等人提出的DETR使用了一组固定的可学习查询来检测对象。从那时起,基于查询的检测范式引起了极大的关注,并激发了一系列后续工作。这些方法进一步优化了检测管道,提高了检测精度和效率。在这项工作中,DiffusionDet进一步推动了对象检测的进展,通过引入从噪声到对象框的去噪扩散过程,消除了对固定可学习查询的依赖。

  1. 提案方法(Proposal-based Methods):

基本概念:提案方法通过在图像中生成大量候选框(或提案),然后对这些提案进行分类和边界框回归来检测目标。
工作流程:典型的提案方法如R-CNN系列,首先使用选择性搜索或区域生成网络(RPN)等技术生成大量候选框。然后,这些提案经过卷积神经网络(CNN)进行特征提取,并送入分类器和回归器以识别目标类别和精确定位目标框。

  1. 锚点方法(Anchor-based Methods):

基本概念:锚点方法预先定义一组锚点(或先验框),并在每个锚点上预测目标的类别和边界框。
工作流程:Faster R-CNN是典型的锚点方法,它使用锚点在图像上生成大量候选框。通过卷积神经网络(CNN),每个锚点位置预测目标的类别概率和边界框偏移量。

  1. 点方法(Point-based Methods):

基本概念:点方法直接在图像的每个像素位置上进行预测,而不依赖于预定义的候选框或锚点。
工作流程:典型的点方法如CornerNet和ExtremeNet,通过预测图像中每个像素点是否是目标的关键点(如角点或中心点),然后根据这些点进行目标检测。

  1. 基于可学习查询的方法(Query-based Methods):

基本概念:基于可学习查询的方法,如DETR(Transformers for Detection),使用一组固定的可学习查询来代替传统的候选框或锚点,直接从图像中的特征表示中预测目标的位置和类别。
工作流程:DETR通过Transformer架构,将图像特征映射到查询和键值对上,通过自注意力机制进行全局感知,并直接输出目标框的位置和类别,消除了传统检测方法中的候选框生成和选择过程。

为了更好理解这些方法,可以想象你是一名侦探,正在调查一个大案件,需要找到凶手并收集证据。不同的目标检测方法就像你使用不同的策略来找到罪犯的方式。

  1. 提案方法:这就像你使用一台复杂的搜索引擎,输入关键词后系统会返回一大堆可能相关的线索。然后,你逐个查看这些线索,判断它们是否有用,最终确定哪些线索确实指向了罪犯的位置。
  2. 锚点方法:这更像是在调查开始时,你事先在地图上标出了几个可能的藏匿点。然后,你沿着这些标记的地方逐一寻找,看看哪个位置最有可能藏着罪犯。
  3. 点方法:这就像你从头开始搜索,每走一步都仔细观察周围的每个细节。你注意到每个可能有线索的地方,不依赖于预先设定的搜索点,而是在每个位置都可能找到有用的线索。
  4. 基于可学习查询的方法:这就像你是一位智能侦探,有一套精心设计的问题集,可以直接询问任何人或查阅资料,并根据收到的回答来直接确定罪犯的身份和行踪。这种方法不依赖于提前准备的搜索点或线索,而是通过直接的交流和信息处理来找到答案。

尽管扩散模型在图像生成方面取得了巨大成功,但在判别任务中的潜力尚未充分探索。一些研究尝试将扩散模型应用于图像分割,但目标检测领域的进展相对滞后。分割任务处理方式与图像生成更相似,而目标检测是一个集合预测问题,需要将对象候选分配给地面实况对象。

为了应对这些挑战,DiffusionDet首次采用扩散模型进行目标检测,通过将检测任务重新定义为从噪声框到对象框的生成式去噪过程,克服了之前的方法局限。接下来将详细介绍DiffusionDet的方法技术

DiffusionDet方法

预备知识

设目标检测的学习目标是输入目标对 ( x , b , c ) (x,b,c) (x,b,c),其中 x x x是输入图像, b b b c c c是一组分别是图像中对象的边界框和类别标签 x x x

更具体地说,将集合中的第 i i i框表示为 b i = ( c x i , c y i , w i , h i ) b^i=(c^i_x,c^i_y,w^i,h^i) bi=(cxi,cyi,wi,hi),其中 ( c x i , c y i ) (c^i_x,c^i_y) (cxi,cyi)是边界框的中心坐标, ( w i , h i ) (w^i,h^i) (wi,hi)是该边界框的宽度和高度,

DiffusionDet前向扩散过程

DiffusionDet前向扩散过程就是高斯噪声扩散过程

初始设置

  • 原始边界框 b b b ( x , y , w , h ) (x,y,w,h) (x,y,w,h)表示
  • b = ( x , y , w , h ) b=(x,y,w,h) b=(x,y,w,h)其中 ( x , y ) (x,y) (x,y)是中心坐标, ( w , h ) (w,h) (w,h)是宽度和高度

前向噪声过程

扩散模型的前向噪声过程使用高斯模糊噪声来逐步扰动边界框 b b b

  • 噪声过程定义为:
  • q ( z t ∣ z 0 ) = N ( z t ∣ α ˉ t z 0 , ( 1 − α ˉ t ) I ) q(z_t|z_0) = N(z_t|\bar \alpha_t z_0,(1 - \bar \alpha_t)I) q(ztz0)=N(ztαˉtz0,(1αˉt)I)
  • 其中 z 0 = b , z t z_0=b,z_t z0=b,zt是是经过 t t t步扩散后的边界框, α ˉ t \bar \alpha_t αˉt是递归因子。
  • α ˉ t \bar \alpha_t αˉt计算为 α ˉ t = ∏ s = 0 t α s \bar \alpha_t=\prod_{s=0}^t\alpha_s αˉt=s=0tαs,其中 α s \alpha_s αs是逐步添加的噪声方差。
  • 随机噪声生成:在每个时间步 t t t,从均值为 0、标准差为 σ \sigma σ的高斯分布 N ( 0 , σ 2 I ) N(0,\sigma^2I) N(0,σ2I)中生成随机噪声 ϵ t \epsilon_t ϵt,其中 ϵ t \epsilon_t ϵt是形状为 [ B , N , 4 ] [B,N,4] [B,N,4]的张量, B B B是批量大小, N N N是检测框的数量
  • 使用递归因子 α t \alpha_t αt控制噪声的扰动强度,逐步更新检测框 p b pb pb。递归因子 α t \alpha_t αt是累积乘积 ∏ i = 1 t α i \prod^t_{i=1}\alpha_i i=1tαi,用于逐步减小扰动强度。
  • 高斯模糊噪声引入:将高斯噪声 ϵ t \epsilon_t ϵt乘以 1 − α c u m p r o d ( t ) \sqrt{1-\alpha_{cumprod(t)}} 1αcumprod(t) 并加到通过递归因子缩放后的真实框 p b pb pb上,得到扰动后的检测框 p b pb pb

p b t b , i = α c u m p r o d ( t ) ⋅ p b b , i + 1 − α c u m p r o d ( t ) ⋅ ϵ b , i , t pb_{t_{b,i}} = \sqrt{\alpha_{cumprod(t)}} ·pb_{b,i} + \sqrt{1-\alpha_{cumprod(t)}} ·\epsilon_{b,i,t} pbtb,i=αcumprod(t) pbb,i+1αcumprod(t) ϵb,i,t
这里 p b b , i = ( x b , i , y b , i , w b , i , h b , i ) pb_{b,i}=(x_{b,i},y_{b,i},w_{b,i},h_{b,i}) pbb,i=(xb,i,yb,i,wb,i,hb,i)表示批次 b b b中的第 i i i个检测框。
ϵ b , i , t = ( ϵ b , i , t x , ϵ b , i , t y , ϵ b , i , t w , ϵ b , i , t h ) \epsilon_{b,i,t}=(\epsilon^x_{b,i,t},\epsilon^y_{b,i,t},\epsilon^w_{b,i,t},\epsilon^h_{b,i,t}) ϵb,i,t=(ϵb,i,tx,ϵb,i,ty,ϵb,i,tw,ϵb,i,th)是从高斯分布中采样的噪声。

大家还记得扩散模型推导最终式子吗:
在这里插入图片描述
不记得的可以参考我写的这篇文章:Diffusion Model算法

这里看DiffusionDet前向扩散公式是不是和扩散模型推导式子一模一样

模型训练和损失函数

在训练期间,使用神经网络 f θ ( z t , t , x ) f_\theta(z_t,t,x) fθ(zt,t,x),通过最小化 ℓ 2 \ell_2 2损失来根据扰动后的边界框 z t z_t zt预测原始边界框 b b b

L t r a i n = 1 2 ∣ ∣ f θ ( z t , t , x ) − b ∣ ∣ 2 2 \mathcal{L}_{train}=\frac{1}{2}||f_\theta(z_t,t,x)-b||^2_2 Ltrain=21∣∣fθ(zt,t,x)b22

这里, x x x是相应的图像

DiffusionDet 训练代码如下

def train_loss(images, gt_boxes):
	"""
	images: [B, H, W, 3]
	gt_boxes: [B, *, 4]
	# B: batch
	# N: number of proposal boxes
	"""
	# Encode image features
	feats = image_encoder(images)
	# Pad gt_boxes to N
	pb = pad_boxes(gt_boxes) # padded boxes: [B, N, 4]
	# Signal scaling
	pb = (pb * 2 - 1) * scale
	# Corrupt gt_boxes
	t = randint(0, T) # time step
	eps = normal(mean=0, std=1) # noise: [B, N, 4]
	pb_crpt = sqrt( alpha_cumprod(t)) * pb +
	sqrt(1 - alpha_cumprod(t)) * eps
	# Predict
	pb_pred = detection_decoder(pb_crpt, feats, t)
	# Set prediction loss
	loss = set_prediction_loss(pb_pred, gt_boxes)
	return loss

DiffusionDet反向扩散推理过程

推理阶段的重建过程

在推理阶段,使用训练好的模型 f θ f_\theta fθ和更新规则,以迭代方式从噪声框 z t z_t zt重建数据样本 b b b

z T → z T − Δ → … → b z_T→z_{T−Δ}→…→b zTzTΔb

这种方法利用高斯模糊噪声扩散技术,逐步处理边界框 b b b,并通过神经网络模型重建原始的边界框数据。这种方法可以提高对象检测任务的鲁棒性和性能,尤其在处理噪声数据和不确定性方面表现出色。

DiffusionDet的推理过程是从噪声到目标框的去噪采样过程。从高斯分布中采样的框开始,模型逐步完善其预测,如算法 所示。

def infer(images, steps, T):
	"""
	images: [B, H, W, 3]
	# steps: number of sample steps
	# T: number of time steps
	"""
	# Encode image features
	feats = image_encoder(images)
	# noisy boxes: [B, N, 4]
	pb_t = normal(mean=0, std=1)
	# uniform sample step size
	times = reversed(linespace(-1, T, steps))
	# [(T-1, T-2), (T-2, T-3), ..., (1, 0), (0, -1)]
	time_pairs = list(zip(times[:-1], times[1:])
	for t_now, t_next in zip(time_pairs):
	# Predict pb_0 from pb_t
	pb_pred = detection_decoder(pb_t, feats, t_now)
	# Estimate pb_t at t_next
	pb_t = ddim_step(pb_t, pb_pred, t_now, t_next)
	# Box renewal
	pb_t = box_renewal(pb_t)
	return pb_pred

模型架构

由于扩散模型需要迭代生成数据样本,在推理阶段需要多次运行模型 f θ f_\theta fθ。然而,直接在每个迭代步骤中对原始图像应用 f θ f_\theta fθ在计算上是不可行的。(类似于扩散模型学习一个潜在的空间向量,就是为了减少计算复杂度和内存需求问题)

因此,作者建议将整个模型分为两部分:图像编码器和检测解码器。图像编码器仅运行一次,从原始输入图像 x x x中提取深度特征表示,而检测解码器则使用这些特征作为条件,而不是直接使用原始图像,逐步细化从噪声框 z t z_t zt 中得出的框预测。

在这里插入图片描述

图像编码器

图像编码器接收原始图像作为输入,并提取其高级特征,为后续的检测解码器做准备。采用了卷积神经网络,例如 ResNet ,以及基于 Transformer 的模型如 Swin来实现DiffusionDet。特征金字塔网络被用于生成 ResNet 和 Swin 主干网的多尺度特征图。

检测解码器

借鉴 Sparse R-CNN的设计,检测解码器接收一组检测框作为输入,从图像编码器生成的特征图中裁剪感兴趣区域(RoI)特征,并将这些 RoI 特征送入检测头以获得框的回归和分类结果。

对于 DiffusionDet,在训练阶段,这些检测框会受到真实框的干扰,并且在评估阶段则直接从高斯分布中采样。

检测解码器由 6 个级联阶段组成(参见上图(b)),与 Sparse R-CNN 中的解码器有几点不同:
(1)DiffusionDet 的起始点是随机框,而 Sparse R-CNN 在推理中使用一组固定的学习框;
(2)Sparse R-CNN 将检测框及其对应的检测特征作为输入对,而 DiffusionDet 只需检测框;
(3)DiffusionDet 可以在评估过程中以迭代方式重复使用检测头,参数在不同步骤间共享,并通过时间步嵌入指定每步骤的扩散过程,这称为迭代评估,而 Sparse R-CNN 则在前向传递中仅使用一次检测解码器。

实验结果

这个表格总结了在COCO 2017验证集上不同物体检测方法的性能比较。AP代表框平均精度,AP50和AP75分别表示IoU阈值为0.5和0.75时的框平均精度,APr、APs和APm分别表示小、中和大尺度物体的框平均精度。

在这里插入图片描述

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

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

相关文章

MaptrV2代码阅读

一 数据处理(后续补充) 二 模型结构 2.1 BackboneNeck 这里输入不加时序的单帧图片,一共六张,输入图片大小为 B ∗ 6 ∗ 3 ∗ 480 ∗ 800 ( B 是 b a t c h s i z e ) B*6*3*480*800 (B是bat…

java中的输入与输出(I/O)

Java I/O(输入/输出)是Java程序与外部世界进行交互的重要机制,它允许程序读取和写入数据到各种类型的源,如文件、网络套接字、管道、内存缓冲区等。Java I/O API主要位于java.io包中,提供了丰富的类和接口来处理不同类…

ipad协议已更新

mmtls 24算法,by golang 其他/v1/other POST/v1/other/GetPeopleNearby 查看附近的人 POST/v1/other/GetQrCode 获取二维码 同步消息/v1/ws GET/v1/ws/GetSyncMsg 同步消息,ws协议 消息/v1/message POST/v1/message/AddMessageMgr 添加要发送…

知识表示与推理方法前沿文献报告

✅作业要求: 练习目标:以公开发表的英文学术文献如会议和期刊论文为依据,报告知识表示与推理的前沿研究进展 作业形式: 8-10页的调研报告,以Word或者PDF为文件格式,文件名: 学号 姓名 krdocx/PDF作业完成内容: 1.题目: 文献报告-文…

车道偏离预警系统技术规范(简化版)

车道偏离预警系统技术规范(简化版) 1 系统概述2 预警区域3 功能条件4 显示需求5 指标需求 1 系统概述 车道偏离预警系统工作在中高速驾驶的情况下,当驾驶员因注意力不集中导致车辆偏离本车道时,系统通过光学和声学信号对驾驶员进行…

vue+elementUI实现在表格中添加输入框并校验的功能

背景: vue2elmui 需求: 需要在一个table中添加若干个输入框,并且在提交时需要添加校验 思路: 当需要校验的时候可以考虑添加form表单来触发校验,因此需要在table外面套一层form表单,表单的属性就是ref…

6月17日15点丨解锁大消费品行业收入管理秘籍

在数字化浪潮席卷全球的今天,企业对于收入管理的精细化和智能化需求日益凸显。收入管理作为企业运营的核心环节,对企业的现金流、利润和发展战略至关重要。 在消费品行业,往往拥有大量的销售数据和客户信息,但这些数据往往分散在多个系统和部…

简单了解MySql以及一些简单的应用MySql

MySql基础篇 1、数据模型概述 关系型数据库 概念:建立在关系模型基础上,由多张相互连接的二维表组成的数据库。 特点: 使用表存储数据,格式统一,便于维护使用SQL语言操作,标准统一,使用方便 数…

基于WPF技术的换热站智能监控系统08--实现右上模式控制

1、区域划分 2、UI设计 3、样式及触发器 4、运行效果 走过路过不要错过,点赞关注收藏又圈粉,共同致富,为财务自由作出贡献

【leetcode--单词规律】

题目要求: 跟上一个字符串的思路一致,只是要进行单词的拆分,用.split()函数即可。 class Solution:def wordPattern(self, pattern: str, s: str) -> bool:word s.split()if(len(pattern) ! len(word)):return Falsereturn len(set(patt…

TCP/IP协议,三次握手,四次挥手

IP - 网际协议 IP 负责计算机之间的通信。 IP 负责在因特网上发送和接收数据包。 HTTP - 超文本传输协议 HTTP 负责 web 服务器与 web 浏览器之间的通信。 HTTP 用于从 web 客户端(浏览器)向 web 服务器发送请求,并从 web 服务器向 web …

btrace:binder_transaction+eBPF+Golang实现通用的Android APP动态行为追踪工具

一、简介: 在进行Android恶意APP检测时,需要进行自动化的行为分析,一般至少包括行为采集和行为分析两个模块。其中,行为分析有基于规则、基于机器学习、基于深度学习甚至基于大模型的方案,各有各的优缺点,不…

上传文件生成聊天机器人,实现客服、办公自动化智能体 | Chatopera

从谈论聊天机器人,到谈论智能体,是目前人工智能最炙手可热的话题,这两年最大的变化是大语言模型的应用。聊天机器人曾经很难定制,往往局限于个别行业,同时也只有行业内的领导者、头部企业能定制。比如银行、金融证券、…

火绒安全删除explorer.exe文件造成windows系统异常的问题

问题 过程是这样的,电脑在使用过程中突然就变成了黑色的,任务栏、桌面等都消失了,只有部分程序的窗口。具体如下: 因为,在变化的时候,我有瞟到一眼有个火绒的气泡消息,就感觉是火绒错误的删除…

详解函数动态调用的作用——call

动态调用的作用 类似于其他语言的反射能够开发框架性代码 Call调用语法 (bool success, bytes data) <address>.call(bytes calldata)call是address的方法call返回值(bool success, bytes data)忽视返回值success&#xff0c;会造成严重问题 calldata的结构 call的…

JasperReport-使用Jasper Studio中的table组件制作表格模板

背景&#xff1a; JasperReport 已知调研出的最适合JAVA开发者使用的一款报表模板制作&#xff0c;报表文件生成或导出PDF\Excel\html的最佳框架&#xff08;可以免费使用&#xff09;。 一、Jasper制作表格模板 1.1、制作模板文件 &#xff08;1&#xff09;创建参数 首先…

Ollama+Open WebUI本地部署Llama3 8b(附踩坑细节)

先展示一下最终结果&#xff0c;如下图所示&#xff1a; 1. 添加环境变量 在下载 ollama 之前&#xff0c;先去配置环境变量&#xff0c;确保模型下载到我们想要的地方 win10 和 win11 输入path或者环境变量&#xff1a; 增加系统环境变量 变量名不可更改&#xff0c;必须是O…

Superset 二次开发之Git篇 git cherry-pick

Cherry-Pick 命令是 Git 中的一种功能&#xff0c;用于将特定的提交&#xff08;commit&#xff09;从一个分支应用到另一个分支。它允许你选择性地应用某些提交&#xff0c;而不是合并整个分支。Cherry-Pick 非常适合在需要将特定更改移植到其他分支时使用&#xff0c;例如从开…

基于PointNet / PointNet++深度学习模型的激光点云语义分割

一、场景要素语义分割部分的文献阅读笔记 1.1 PointNet PointNet网络模型开创性地实现了直接将点云数据作为输入的高效深度学习方法&#xff08;端到端学习&#xff09;。最大池化层、全局信息聚合结构以及联合对齐结构是该网络模型的三大关键模块&#xff0c;最大池化层解决了…

SpringBoot 实现 阿里云语音通知(SingleCallByTts)

目录 一、准备工作1.开通 阿里云语音服务2.申请企业资质3.创建语音通知模板&#xff0c;审核通过4.调用API接口---SingleCallByTts5.调试API接口---SingleCallByTts 二、代码实现1.导入依赖 com.aliyun:aliyun-java-sdk-dyvmsapi:3.0.22.创建工具类&#xff0c;用于发送语音通知…