当前位置: 首页 > news >正文

epic_kitchens_sounds数据集中对segment标签的处理:时间维度和特征维度的转换

epic_kitchens_sounds数据集中对segment标签的处理

epic_kitchens数据集中def __getitem__(self, idx)函数中有以下代码:

#feat_stride:temporal stride of the feats
#num_frames:number of frames for each feat#feats是读入进来的音频特征.npz文件
feats = feats[::self.downsample_rate, :] # 下采样
feat_stride = self.feat_stride * self.downsample_rate # 特征步长
feat_offset = 0.5 * self.num_frames / feat_stride # 特征偏移量if video_item['segments'] is not None:segments = torch.from_numpy(video_item['segments'] * video_item['fps'] / feat_stride - feat_offset)labels = torch.from_numpy(video_item['labels'])else:segments, labels = None, None

解释:

  1. num_frames:一个滑动窗口包含的帧数,即一个特征包含的帧数。
  2. feat_stride:特征步长,就是滑动窗口滑动的步长
  3. video_item['segments']表示的是声音片段的起止时间,单位都是秒。
  4. feat_offset = 0.5 * self.num_frames / feat_stride:这行代码计算的是特征时间窗口的中心偏移量,它的作用是将时间戳从原始帧的起始位置调整到特征窗口的中心位置,以提高时间定位的准确性。举个例子说明:
    • 假设:视频参数:fps=30,segments=2.0s(第2秒), 特征参数:num_frames=16,feat_stride=8

    • 计算帧索引:
      frame_index = 2.0 * 30 = 60(第60帧)

    • 计算 feat_offset:
      feat_offset = 0.5 * 16 / 8 = 1.0

    • 无偏移补偿时:
      raw_feat_index = 60 / 8 = 7.5这意味着第60帧被映射到第7.5个特征点(滑动窗口),但实际第7个特征点覆盖的窗口是:

      • 起始帧:7 * 8 = 56
      • 中心帧:56 + 0.5*16 = 64
      • 结束帧:56 + 16 = 72

      问题:60帧更接近第6个特征点的中心(6*8 + 8 = 56),但直接映射到7.5会导致错位。

    • 补偿偏移后:
      final_feat_index = 7.5 - 1.0 = 6.5
      第6个特征点覆盖 [48, 64) 帧,中心在 48 + 8 = 56 帧。
      第7个特征点覆盖 [56, 72) 帧,中心在 56 + 8 = 64 帧。
      60帧 距离第6个特征点中心(56帧)更近,因此 6.5 是更合理的索引。

  5. 因为video_item['segments']是以秒为单位的,但模型输入的是提取出来的音频特征,所以需要把segments从时间维度转换到特征维度,即segments = torch.from_numpy( video_item['segments'] * video_item['fps'] / feat_stride - feat_offset

相关文章:

  • onResume()和 onPause()的触发条件
  • 一文掌握 LVGL 9 的源码目录结构
  • 【网络入侵检测】基于源码分析Suricata的IP分片重组
  • ArcScroll: 弧形滑动控件
  • 「Mac畅玩AIGC与多模态27」开发篇23 - 多任务摘要合成与提醒工作流示例
  • 大白话解释CPU、NPU和GPU
  • C++(1):整数常量
  • 【C语言】--指针超详解(三)
  • FreeRTOS菜鸟入门(十四)·事件
  • 计算机组成:CU与ALU
  • STL-vector
  • Midjourney-V7:支持参考图片头像或背景生成新保真图
  • 热蛋白质组分析(TPP)技术的优劣势探讨
  • 深入理解 Vue 全局导航守卫:分类、作用与参数详解
  • 资产月报怎么填?资产月报填报指南
  • 报考消防设施操作员需要满足什么条件?
  • RabbitMQ事务机制
  • 鱼眼摄像头(一)多平面格式 单缓冲读取图像并显示
  • robotframe启动ride.py
  • 【NextPilot日志移植】logged_topics.cpp解析
  • 河北邯郸一酒店婚宴发生火灾:众人惊险逃生,酒店未买保险
  • 伤员回归新援融入,海港逆转海牛重回争冠集团
  • 外交部:习近平主席同普京总统达成许多新的重要共识
  • 万玲、胡春平调任江西省鹰潭市副市长
  • 中美“第二阶段”贸易协定是否会在会谈中提出?商务部回应
  • 中国海警依法驱离日非法进入我钓鱼岛领海船只