MaptrV2代码阅读

news2025/2/27 7:09:44

一 数据处理(后续补充)

二 模型结构

2.1 Backbone+Neck

  • 这里输入不加时序的单帧图片,一共六张,输入图片大小为 B ∗ 6 ∗ 3 ∗ 480 ∗ 800 ( B 是 b a t c h s i z e ) B*6*3*480*800 (B是batchsize) B63480800Bbatchsize,先走grid_mask数据增强(参考https://blog.csdn.net/u013685264/article/details/122667456),采用基础resnet50作为backbone,得到最后32倍下采样特征 B ∗ 6 ∗ 2048 ∗ 15 ∗ 25 B*6*2048*15*25 B620481525,在进过neck(主要是两个Conv2d 进行降维),得到输出 B ∗ 6 ∗ 256 ∗ 15 ∗ 25 B*6*256*15*25 B62561525

2.2 BEV特征

  • 目前bev特征生成,主流的主要是bevformer和LSS,针对这两种方式,后续补充,生成bev特征 B ∗ 2000 ∗ 256 ( 2000 是对应 200 ∗ 100 B E V 空间大小( h ∗ w )) B*2000*256(2000是对应200*100 BEV空间大小(h*w)) B20002562000是对应200100BEV空间大小(hw)),LSS还会生成对应depth特征 B ∗ 6 ∗ 68 ∗ 15 ∗ 25 B*6*68*15*25 B6681525 用作后续深度监督

2.3 Decoder模块

  • 输入query,采用instance_pts形式,即instance(instance一共有350个,主要是50+300,50是one2one,300是后续one2many多扩展的6倍)和每个instance对应的20个点,分开初始化,最终得到object_query_embeds 7000 ∗ 512 (其中 7000 是对应 350 ∗ 20 , 512 是对应 q u e r y 和 q u e r y − p o s 合到一起的,也就是 q u e r y 和 q u e r y − p o s 特征是 350 ∗ 20 ∗ 256 ) 7000*512(其中7000是对应350*20,512是对应query和query-pos合到一起的,也就是query和query-pos特征是350*20*256) 7000512(其中7000是对应35020512是对应queryquerypos合到一起的,也就是queryquerypos特征是35020256
  • 这里设置了个self_attn_mask,大小是 350 ∗ 350 350*350 350350,就是左上角的 50 ∗ 50 50*50 5050和右下角的 300 ∗ 300 300*300 300300是False,是为了隔开one2one和one2many的query,互相不干扰

2.3.1 decoder过程,主要参考deformable attention

MapTRDecoder(
  (layers): ModuleList(
    (0): DecoupledDetrTransformerDecoderLayer(
      (attentions): ModuleList(
        (0): MultiheadAttention(
          (attn): MultiheadAttention(
            (out_proj): NonDynamicallyQuantizableLinear(in_features=256, out_features=256, bias=True)
          )
          (proj_drop): Dropout(p=0.0, inplace=False)
          (dropout_layer): Dropout(p=0.1, inplace=False)
        )
        (1): MultiheadAttention(
          (attn): MultiheadAttention(
            (out_proj): NonDynamicallyQuantizableLinear(in_features=256, out_features=256, bias=True)
          )
          (proj_drop): Dropout(p=0.0, inplace=False)
          (dropout_layer): Dropout(p=0.1, inplace=False)
        )
        (2): CustomMSDeformableAttention(
          (dropout): Dropout(p=0.1, inplace=False)
          (sampling_offsets): Linear(in_features=256, out_features=64, bias=True)
          (attention_weights): Linear(in_features=256, out_features=32, bias=True)
          (value_proj): Linear(in_features=256, out_features=256, bias=True)
          (output_proj): Linear(in_features=256, out_features=256, bias=True)
        )
      )
      (ffns): ModuleList(
        (0): FFN(
          (activate): ReLU(inplace=True)
          (layers): Sequential(
            (0): Sequential(
              (0): Linear(in_features=256, out_features=512, bias=True)
              (1): ReLU(inplace=True)
              (2): Dropout(p=0.1, inplace=False)
            )
            (1): Linear(in_features=512, out_features=256, bias=True)
            (2): Dropout(p=0.1, inplace=False)
          )
          (dropout_layer): Identity()
        )
      )
      (norms): ModuleList(
        (0): LayerNorm((256,), eps=1e-05, elementwise_affine=True)
        (1): LayerNorm((256,), eps=1e-05, elementwise_affine=True)
        (2): LayerNorm((256,), eps=1e-05, elementwise_affine=True)
        (3): LayerNorm((256,), eps=1e-05, elementwise_affine=True)
      )
    )
    (1): DecoupledDetrTransformerDecoderLayer(
      (attentions): ModuleList(
        (0): MultiheadAttention(
          (attn): MultiheadAttention(
            (out_proj): NonDynamicallyQuantizableLinear(in_features=256, out_features=256, bias=True)
          )
          (proj_drop): Dropout(p=0.0, inplace=False)
          (dropout_layer): Dropout(p=0.1, inplace=False)
        )
        (1): MultiheadAttention(
          (attn): MultiheadAttention(
            (out_proj): NonDynamicallyQuantizableLinear(in_features=256, out_features=256, bias=True)
          )
          (proj_drop): Dropout(p=0.0, inplace=False)
          (dropout_layer): Dropout(p=0.1, inplace=False)
        )
        (2): CustomMSDeformableAttention(
          (dropout): Dropout(p=0.1, inplace=False)
          (sampling_offsets): Linear(in_features=256, out_features=64, bias=True)
          (attention_weights): Linear(in_features=256, out_features=32, bias=True)
          (value_proj): Linear(in_features=256, out_features=256, bias=True)
          (output_proj): Linear(in_features=256, out_features=256, bias=True)
        )
      )
      (ffns): ModuleList(
        (0): FFN(
          (activate): ReLU(inplace=True)
          (layers): Sequential(
            (0): Sequential(
              (0): Linear(in_features=256, out_features=512, bias=True)
              (1): ReLU(inplace=True)
              (2): Dropout(p=0.1, inplace=False)
            )
            (1): Linear(in_features=512, out_features=256, bias=True)
            (2): Dropout(p=0.1, inplace=False)
          )
          (dropout_layer): Identity()
        )
      )
      (norms): ModuleList(
        (0): LayerNorm((256,), eps=1e-05, elementwise_affine=True)
        (1): LayerNorm((256,), eps=1e-05, elementwise_affine=True)
        (2): LayerNorm((256,), eps=1e-05, elementwise_affine=True)
        (3): LayerNorm((256,), eps=1e-05, elementwise_affine=True)
      )
    )
    (2): DecoupledDetrTransformerDecoderLayer(
      (attentions): ModuleList(
        (0): MultiheadAttention(
          (attn): MultiheadAttention(
            (out_proj): NonDynamicallyQuantizableLinear(in_features=256, out_features=256, bias=True)
          )
          (proj_drop): Dropout(p=0.0, inplace=False)
          (dropout_layer): Dropout(p=0.1, inplace=False)
        )
        (1): MultiheadAttention(
          (attn): MultiheadAttention(
            (out_proj): NonDynamicallyQuantizableLinear(in_features=256, out_features=256, bias=True)
          )
          (proj_drop): Dropout(p=0.0, inplace=False)
          (dropout_layer): Dropout(p=0.1, inplace=False)
        )
        (2): CustomMSDeformableAttention(
          (dropout): Dropout(p=0.1, inplace=False)
          (sampling_offsets): Linear(in_features=256, out_features=64, bias=True)
          (attention_weights): Linear(in_features=256, out_features=32, bias=True)
          (value_proj): Linear(in_features=256, out_features=256, bias=True)
          (output_proj): Linear(in_features=256, out_features=256, bias=True)
        )
      )
      (ffns): ModuleList(
        (0): FFN(
          (activate): ReLU(inplace=True)
          (layers): Sequential(
            (0): Sequential(
              (0): Linear(in_features=256, out_features=512, bias=True)
              (1): ReLU(inplace=True)
              (2): Dropout(p=0.1, inplace=False)
            )
            (1): Linear(in_features=512, out_features=256, bias=True)
            (2): Dropout(p=0.1, inplace=False)
          )
          (dropout_layer): Identity()
        )
      )
      (norms): ModuleList(
        (0): LayerNorm((256,), eps=1e-05, elementwise_affine=True)
        (1): LayerNorm((256,), eps=1e-05, elementwise_affine=True)
        (2): LayerNorm((256,), eps=1e-05, elementwise_affine=True)
        (3): LayerNorm((256,), eps=1e-05, elementwise_affine=True)
      )
    )
    (3): DecoupledDetrTransformerDecoderLayer(
      (attentions): ModuleList(
        (0): MultiheadAttention(
          (attn): MultiheadAttention(
            (out_proj): NonDynamicallyQuantizableLinear(in_features=256, out_features=256, bias=True)
          )
          (proj_drop): Dropout(p=0.0, inplace=False)
          (dropout_layer): Dropout(p=0.1, inplace=False)
        )
        (1): MultiheadAttention(
          (attn): MultiheadAttention(
            (out_proj): NonDynamicallyQuantizableLinear(in_features=256, out_features=256, bias=True)
          )
          (proj_drop): Dropout(p=0.0, inplace=False)
          (dropout_layer): Dropout(p=0.1, inplace=False)
        )
        (2): CustomMSDeformableAttention(
          (dropout): Dropout(p=0.1, inplace=False)
          (sampling_offsets): Linear(in_features=256, out_features=64, bias=True)
          (attention_weights): Linear(in_features=256, out_features=32, bias=True)
          (value_proj): Linear(in_features=256, out_features=256, bias=True)
          (output_proj): Linear(in_features=256, out_features=256, bias=True)
        )
      )
      (ffns): ModuleList(
        (0): FFN(
          (activate): ReLU(inplace=True)
          (layers): Sequential(
            (0): Sequential(
              (0): Linear(in_features=256, out_features=512, bias=True)
              (1): ReLU(inplace=True)
              (2): Dropout(p=0.1, inplace=False)
            )
            (1): Linear(in_features=512, out_features=256, bias=True)
            (2): Dropout(p=0.1, inplace=False)
          )
          (dropout_layer): Identity()
        )
      )
      (norms): ModuleList(
        (0): LayerNorm((256,), eps=1e-05, elementwise_affine=True)
        (1): LayerNorm((256,), eps=1e-05, elementwise_affine=True)
        (2): LayerNorm((256,), eps=1e-05, elementwise_affine=True)
        (3): LayerNorm((256,), eps=1e-05, elementwise_affine=True)
      )
    )
    (4): DecoupledDetrTransformerDecoderLayer(
      (attentions): ModuleList(
        (0): MultiheadAttention(
          (attn): MultiheadAttention(
            (out_proj): NonDynamicallyQuantizableLinear(in_features=256, out_features=256, bias=True)
          )
          (proj_drop): Dropout(p=0.0, inplace=False)
          (dropout_layer): Dropout(p=0.1, inplace=False)
        )
        (1): MultiheadAttention(
          (attn): MultiheadAttention(
            (out_proj): NonDynamicallyQuantizableLinear(in_features=256, out_features=256, bias=True)
          )
          (proj_drop): Dropout(p=0.0, inplace=False)
          (dropout_layer): Dropout(p=0.1, inplace=False)
        )
        (2): CustomMSDeformableAttention(
          (dropout): Dropout(p=0.1, inplace=False)
          (sampling_offsets): Linear(in_features=256, out_features=64, bias=True)
          (attention_weights): Linear(in_features=256, out_features=32, bias=True)
          (value_proj): Linear(in_features=256, out_features=256, bias=True)
          (output_proj): Linear(in_features=256, out_features=256, bias=True)
        )
      )
      (ffns): ModuleList(
        (0): FFN(
          (activate): ReLU(inplace=True)
          (layers): Sequential(
            (0): Sequential(
              (0): Linear(in_features=256, out_features=512, bias=True)
              (1): ReLU(inplace=True)
              (2): Dropout(p=0.1, inplace=False)
            )
            (1): Linear(in_features=512, out_features=256, bias=True)
            (2): Dropout(p=0.1, inplace=False)
          )
          (dropout_layer): Identity()
        )
      )
      (norms): ModuleList(
        (0): LayerNorm((256,), eps=1e-05, elementwise_affine=True)
        (1): LayerNorm((256,), eps=1e-05, elementwise_affine=True)
        (2): LayerNorm((256,), eps=1e-05, elementwise_affine=True)
        (3): LayerNorm((256,), eps=1e-05, elementwise_affine=True)
      )
    )
    (5): DecoupledDetrTransformerDecoderLayer(
      (attentions): ModuleList(
        (0): MultiheadAttention(
          (attn): MultiheadAttention(
            (out_proj): NonDynamicallyQuantizableLinear(in_features=256, out_features=256, bias=True)
          )
          (proj_drop): Dropout(p=0.0, inplace=False)
          (dropout_layer): Dropout(p=0.1, inplace=False)
        )
        (1): MultiheadAttention(
          (attn): MultiheadAttention(
            (out_proj): NonDynamicallyQuantizableLinear(in_features=256, out_features=256, bias=True)
          )
          (proj_drop): Dropout(p=0.0, inplace=False)
          (dropout_layer): Dropout(p=0.1, inplace=False)
        )
        (2): CustomMSDeformableAttention(
          (dropout): Dropout(p=0.1, inplace=False)
          (sampling_offsets): Linear(in_features=256, out_features=64, bias=True)
          (attention_weights): Linear(in_features=256, out_features=32, bias=True)
          (value_proj): Linear(in_features=256, out_features=256, bias=True)
          (output_proj): Linear(in_features=256, out_features=256, bias=True)
        )
      )
      (ffns): ModuleList(
        (0): FFN(
          (activate): ReLU(inplace=True)
          (layers): Sequential(
            (0): Sequential(
              (0): Linear(in_features=256, out_features=512, bias=True)
              (1): ReLU(inplace=True)
              (2): Dropout(p=0.1, inplace=False)
            )
            (1): Linear(in_features=512, out_features=256, bias=True)
            (2): Dropout(p=0.1, inplace=False)
          )
          (dropout_layer): Identity()
        )
      )
      (norms): ModuleList(
        (0): LayerNorm((256,), eps=1e-05, elementwise_affine=True)
        (1): LayerNorm((256,), eps=1e-05, elementwise_affine=True)
        (2): LayerNorm((256,), eps=1e-05, elementwise_affine=True)
        (3): LayerNorm((256,), eps=1e-05, elementwise_affine=True)
      )
    )
  )
)
  • 根据query_pos 走一个线性变化,得到reference_points B ∗ 7000 ∗ 2 B*7000*2 B70002,然后走sigmoid,得到初始化init_reference_out B ∗ 7000 ∗ 2 B*7000*2 B70002
  • 输入的img_neck特征,加上cams_embeds 和 level_embeds,得到feat_flatten 6 ∗ 375 ∗ B ∗ 256 ( 375 是 15 ∗ 25 ) 6*375*B*256 (375是15*25) 6375B2563751525
  • 进入decoder过程
    在这里插入图片描述
  • 这里经过6层decoder,每一层有self-attention,layer_norm,self-attention,layer_norm,cross-attention,layer_norm,FFN,layer_norm
  • 第一次self-attention是nn.MultiheadAttention,输入是query和query_pos,这里就用到了前面的 self_attn_mask,在nn.MultiheadAttention模块中,mask=1-attn_mask,对应上面的设置
  • 第二次self-attention,其中attn_mask设置为None
  • cross-attention,采用CustomMSDeformableAttention,输入query,key=None,value是对应的bev_embed;value经过一个Linear,得到最终输入value,query经过Linear生成多头的sampling_offsets B ∗ 7000 ∗ 8 ∗ 1 ∗ 4 ∗ 2 ( 7000 表示是 350 ∗ 20 个实例, 8 是 m u l t h e a d , 1 是只有一个 l e v e l , 4 是生成 4 个点, 2 是对应的 x y 偏移) B*7000*8*1*4*2(7000表示是350*20个实例,8是mult_head,1是只有一个level,4是生成4个点,2是对应的xy偏移) B700081427000表示是35020个实例,8multhead1是只有一个level4是生成4个点,2是对应的xy偏移);query经过Linear生成多头的attention_weights B ∗ 7000 ∗ 8 ∗ 1 ∗ 4 ( 7000 表示是 350 ∗ 20 个实例, 8 是 m u l t h e a d , 1 是只有一个 l e v e l , 4 是生成 4 个点) B*7000*8*1*4(7000表示是350*20个实例,8是mult_head,1是只有一个level,4是生成4个点) B70008147000表示是35020个实例,8multhead1是只有一个level4是生成4个点),在经过softmax;通过reference_points+sampling_offsets/shape,得到最终的sampling_locations,整个过程就是通过reference_ponits,加上4个offsets,得到最终4个点的位置,然后在value上面进行双线性插值得到特征,然后在乘以attention_weights,在求和得到最终output B ∗ 7000 ∗ 256 B*7000*256 B7000256,在经过Linear以及和输入的query做残差连接,得到最终cross-attention输出 7000 ∗ B ∗ 256 7000*B*256 7000B256
  • FFN,主要参考如下
    在这里插入图片描述
    在这里插入图片描述
  • 得到最终output B ∗ 7000 ∗ 256 B*7000*256 B7000256,当成下一层的query输入,output经过reg_branches(Linear+Relu+Linear+Relu+Linear),得到新参考点的偏移,之后与初始输入的reference_points(经过逆sigmoid)相加之后得到new_reference_points,并经过sigmoid当成下一层的inference_points的输入
  • 最终经过6层之后,保留每一层的输出output和inference_points,后面计算损失
  • 对于每一层输出的output B ∗ 7000 ∗ 256 B*7000*256 B7000256,转换成 B ∗ 350 ∗ 20 ∗ 256 B*350*20*256 B35020256,并对第三维求平均,得到 B ∗ 350 ∗ 256 B*350*256 B350256经过cls_branches (Linear+LayerNorm+Relu+Linear+LayerNorm+Relu+Linear),得到最终分类结果 B ∗ 350 ∗ 3 B*350*3 B3503,一共只有3类;代码中会重新生成reference_points与上面生成reference_points相同,代码里面属于重复生成了,可以删除,最终得到点的坐标 B ∗ 7000 ∗ 2 (也就是 B ∗ 350 ∗ 20 ∗ 2 ,一共 350 个 i n s t a n c e ,一个 i n s t a n c e 对应 20 个点坐标) B*7000*2(也就是B*350*20*2,一共350个instance,一个instance对应20个点坐标) B70002(也就是B350202,一共350instance,一个instance对应20个点坐标),然后生成对应的外接矩形框和对应的20个点坐标
  • 这里采用辅助分割,第一个根据bev_embed,通过seg_head (Conv2d+Relu+Conv2d),得到在bev下的语义分割结果 B ∗ 1 ∗ 200 ∗ 100 B*1*200*100 B1200100;第二个根据feat_flatten B ∗ 6 ∗ 256 ∗ 15 ∗ 25 B*6*256*15*25 B62561525,通过pv_seg_head (Conv2d+Relu+Conv2d),得到原始6张pv图下的语义分割结果 B ∗ 6 ∗ 1 ∗ 15 ∗ 25 B*6*1*15*25 B611525

2.4 Loss计算

  • depth loss ,基于LSS计算的,后续补充
  • 对于输出一共350个instance,这里分成50个one2one,和300个one2many,对应one2many的gt_label也是相应复制6份

2.4.1 进行maptr_assigner

  • 这里以one2one计算为例,对于gt处理,目前一共三类,是车道线,边界线和人行横道,对于前面两类会增加正序和逆序,对于人行横道是环形,这里就是循环生成19个实例,对于前面两类不足19个就补-1,最终得到gt_shifts_pts_list N ∗ 19 ∗ 20 ∗ 2 ( N 表示一个输入里面包括 N 个 g t ) N*19*20*2 (N表示一个输入里面包括N个gt) N19202N表示一个输入里面包括Ngt
  • 计算loss,包括cls_loss (focal_loss),box_reg_los (L1 loss),pts_loss(倒角距离),iou_loss(giou loss)
  • 这里对于pts_loss,计算不同的是,会计算这50个实例和这19个新增的gt的loss,然后在这19个选择最小的一个作为最终loss计算
  • 流程就是计算所有loss,根据匈牙利匹配,选取1对1的gt和pred,然后计算最终loss

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

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

相关文章

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;用于发送语音通知…

如何部署 Celestia 节点:运行轻节点和全节点

最近几周&#xff0c;Celestia ($TIA) 凭借其模块化数据可用性的基本概念和突破性功能在加密社区引起了轰动。参与网络的方式多种多样&#xff0c;例如将 TIA 与验证器进行质押或在网络上构建应用程序。 用户还可以通过部署节点与区块链进行交互。本指南将解释如何设置和运行 C…