RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1583929
Accepted
meow meow
meow meow
Asked:2024-06-14 19:53:59 +0000 UTC2024-06-14 19:53:59 +0000 UTC 2024-06-14 19:53:59 +0000 UTC

如何创建神经网络模型来根据 MMD 格式的音乐生成舞蹈动作

  • 772
比赛还有13个小时就结束了。回答这个问题,可以获得 +300声望点的奖励。喵喵想让更多人关注这个问题:
包含最有用信息的答案虽然不是解决方案,但已足够

我正在开展一个项目,需要创建一个神经网络模型来根据音乐生成舞蹈动作。我努力实现与此视频类似的结果:https://youtu.be/FrA7f5F9TsI

运动文件(.vmd 或 MMD 格式)包含有关身体(骨骼)弯曲的数据。每个骨骼在空间中有3个旋转值(x,y,z)。一个MMD文件一秒包含30帧,每一帧记录所有骰子的值

在此输入图像描述


为了减少数据量,我采取了以下步骤:

  • 将音频增加到一整秒 (159.8 -> 160.0)。这样,当去除粉笔频谱图时,步骤在一秒钟内就可以得到清晰的数据。 MMD中也一样。通过在末尾设置空值来扩展
  • 将 MMD 骨骼的数量从 100 块减少到 25 块,留下那些产生 90% 运动的骨骼
  • 将帧速率从 30 降低至 10。
  • 我只使用一个字符
  • 这就是所有限制之后的样子
  • 声音的。我使用范围从 0 到 5000 Hz 的有限粉笔频谱图。参数:n_mels = 200,n_fft = 4096,hop_length = 735000(每1秒3步)(长度160秒= 480步)

为神经网络生成数据:

为了生成数据,我将训练文件的所有迭代划分为几秒,以便它们适合内存并可以在显卡上同时处理 (4070)

  • 频谱图标准化从 0 到 1。MMD 标准化从 -1 到 1(根据其特征进行调整)

  • 我可以在输入中输入粉笔频谱图的任何部分(例如,过去 2 秒、当前 1 秒和未来 5 秒)。我还可以输入过去几秒的MMD(例如0或3)和任何其他信息(将过去的MMD添加到输入的想法是这样在生成新迭代时,它有一个连接与过去的结果,所以是密不可分的)

  • 在输出中,我输入当前处理的第二个 MMD。这就是我想要得到的


我尝试过LSTM和Attention等模型的各种组合,但模型总是无法学习。可以找到我训练的最新设置和数据。参数 - 1 秒之前的频谱图,1 当前的频谱图;前 1 秒 mmd。在输出中,1 秒是当前秒。 MMD 和音频源 - 如视频中所示

我拥有所有必要的数据,但我无法让模型发挥作用。对于改进模型或学习过程的任何想法和建议,我将不胜感激

python
  • 1 1 个回答
  • 91 Views

1 个回答

  • Voted
  1. Best Answer
    GravyTalk
    2024-06-23T04:56:31Z2024-06-23T04:56:31Z

    您的目标:

    我正在开展一个项目,需要创建一个神经网络模型来根据音乐生成舞蹈动作。

    问题:

    我尝试过LSTM和Attention等模型的各种组合,但模型总是无法学习。

    我怎么理解这个问题

    根据您的情况,我可以假设您可能根本没有足够的数据来训练召回架构。如果您使用任何自定义架构,最好将其替换为预训练网络的选项,以便您有机会重新训练网络而不是训练它。

    一般来说,如果您提供可用于评估网络是否训练过度或训练不足的训练图,则很难评估学习问题的情况。

    同样,LSTM 和 GRU 旨在预测数据序列(或根据手头的任务对它们进行分类)。就您的目的而言,生成任务(而不是预测任务)是清晰可见的。

    抒情题外话

    如果您考虑一下广受好评的图像生成器,例如 Stable Diffusion 或新推出的 SORA(视频生成器),它们很大程度上基于 Unet 方法(久经考验的架构,赢得了 Kaggle 上的医学图像分割竞赛,并开始获得认可)流行度)是基于这些发电机的主要运行原理。图像使用特征(视觉块)进行编码,然后将其解码回图像。因此,它们唯一的不同之处在于隐藏空间发生的情况,即学习过程中的这些视觉斑块。

    生成器分为两个组件,其中一个组件进行生成,第二个组件检查数据与实际数据(训练集)的比较情况。第二部分通常是标准编码器分类器。由于误差的减少(通常的损失,如交叉熵),生成器每次迭代后生成的噪声开始越来越类似于我们的图像。

    在复杂的架构(稳定扩散)中,存在用于生成的文本提示,附加的编码文本(NLP)被混合到隐藏的噪声空间中。或者他们使用其他技术,例如注意力机制,不生成纯粹的噪声,而是向训练图像添加噪声(扩散),并通过训练网络来清除这种噪声(类似于自动编码器方法)。

    当然,GAN 不仅可以用于图像环境,还可以用于任何数值数据(这就是神经网络的美妙之处)。

    我提供什么

    尽管如此,对于这种情况,从生成坐标角度开始使用 GAN 架构是合适的,这些坐标将被转换为方便您使用的格式 (vmd MMD)。

    也就是说,您使用生成器生成噪声张量。然后使用卷积层 (CNN) 对噪声进行编码,从而获得模型(女孩)的隐藏运动空间。在此过程中,您对粉笔频谱图进行编码,从中提取补丁,在训练过程中将其与噪声混合,因此您需要考虑音频成分(一些与节奏相关的符号,这会影响您的运动类型)然后,您使用编码器分类器的第二部分评估生成的数据是否符合您作为示例准备的舞蹈(带有运动坐标的相同 mvd 文件)。您也不必生成零噪声,而是获取训练坐标并为其添加噪声。

    无论如何,无论你做什么来解决这样一个具体的问题,你都将需要更大的数据量(现在我的意思不是拉伸你的数据,而是增加多样性,即更多类型的舞蹈、音频伴奏) ),因为所有这些方法都非常耗电。查看 AIST++ 数据集

    • 2

相关问题

  • 是否可以以某种方式自定义 QTabWidget?

  • telebot.anihelper.ApiException 错误

  • Python。检查一个数字是否是 3 的幂。输出 无

  • 解析多个响应

  • 交换两个数组的元素,以便它们的新内容也反转

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5