ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Magenta 模型库全景:18 个音乐、艺术与音频生成模型的架构与实战指南

2026/10/1 7:33:40 拓冰建站 浏览量
Magenta 模型库全景:18 个音乐、艺术与音频生成模型的架构与实战指南 人工智能深度学习音频媒体生成计算机视觉【免费下载链接】magentaMagenta: Music and Art Generation with Machine Intelligence项目地址https://gitcode.com/gh_mirrors/ma/magenta点击查看免费下载本指南以 magenta/models/README.md 为骨架系统梳理 Magenta 项目模型库中全部 18 个机器学习模型从基于 LSTM 的旋律/鼓点/复调生成到变分自编码器、卷积网络、WaveNet 自编码器与 Transformer再到图像风格迁移与矢量图形生成。读完本文你将掌握每个模型的核心思想、论文出处、仓库入口文件以及从预训练模型推理到自行训练的关键命令能够在实际项目中快速定位并上手相应模型。仓库状态与模型库定位magenta/models/目录是 Magenta 音乐与艺术生成项目的模型中枢。需要先说明的是magenta/models/README.md 在文档开头明确标注了该仓库的状态Status此仓库目前已不活跃主要作为若干论文的补充材料存在Google 已转向为每个新项目使用独立仓库例如 MT3、Music Transformer 等后续工作均迁移至独立仓库。尽管如此该目录仍然是了解 Magenta 经典模型的最佳入口。目录中共包含 18 个模型覆盖四条技术主线技术主线模型序列音乐生成RNN 语言建模Melody RNN、Drums RNN、Improv RNN、Performance RNN、Polyphony RNN、Pianoroll RNN-NADE潜在空间与表示学习Music VAE含 GrooVAE、Piano Genie、Sketch RNN卷积、Transformer 与强化学习Coconet、Score2PerfMusic Transformer、RL Tuner音频合成与转录NSynth、GANSynth、Onsets and Frames图像风格迁移Image Stylization、Arbitrary Image Stylization矢量图形生成SVG VAE每个模型目录中都包含完整的README.md、训练/生成/数据集脚本与测试文件下文将按技术主线逐一展开。序列音乐生成RNN 语言建模家族这一族模型共享同一范式把音乐事件序列当作语言用 LSTM 做概率语言建模逐事件采样生成。它们也都遵循同一条数据处理流水线MIDI/MusicXML → NoteSequence → SequenceExample → 训练/评估 → 生成 → 打包 Bundle。Melody RNN单旋律生成基线Melody RNN 将语言建模应用于旋律生成。其核心源码位于 melody_rnn_model.py配置定义在 melody_rnn_config_flags.py文档共定义 4 种配置basic_rnn基线配置使用基本 one-hot 编码将旋律输入 LSTM训练时所有样本统一移调到 MIDI 音高范围 [48, 84]输出也限定在该范围。mono_rnn同为 one-hot 基线但可以使用全部 128 个 MIDI 音高不缩窄音域。lookback_rnn引入自定义输入与标签。自定义输入帮助模型更容易识别跨越 1 小节和 2 小节的模式以及事件在小节内的位置自定义标签则允许模型直接重复 1 或 2 小节前的事件减轻 RNN 细胞状态需要记忆的信息量从而让生成的旋律漫游更少、音乐结构感更强。具体编码逻辑可查看note_seq中events_to_input与events_to_label的实现。attention_rnn引入注意力机制使模型无需把历史信息全部塞进 RNN 细胞状态即可访问较远的过去更容易学习长程依赖生成具有更长拱形主题的旋律。attn_length超参数控制注意力回顾的步数默认 40 步即 2.5 小节。用预训练模型生成旋律BUNDLE_PATHabsolute path of .mag file CONFIGone of basic_rnn, lookback_rnn, or attention_rnn, matching the bundle melody_rnn_generate \ --config${CONFIG} \ --bundle_file${BUNDLE_PATH} \ --output_dir/tmp/melody_rnn/generated \ --num_outputs10 \ --num_steps128 \ --primer_melody[60]--primer_melody接受 Python 列表的字符串表示数值遵循note_seq.Melody格式-2表示无事件、-1表示音符结束事件、0~127表示对应 MIDI 音高的音符开始事件。例如--primer_melody[60, -2, 60, -2, 67, -2, 67, -2]会用《小星星》的前四个音作为种子也可以改用--primer_midi直接以 MIDI 文件中的旋律作种子仓库自带示例文件 primer.mid。若不指定任何 primer模型会从音符范围内随机选一个起始音。自行训练分四步先用 convert_dir_to_note_sequences.py 将 MIDI 集合转成 NoteSequence 的 TFRecord详见 scripts/README.md再抽取旋律生成训练/评估两组 SequenceExamplemelody_rnn_create_dataset \ --configone of basic_rnn, mono_rnn, lookback_rnn, or attention_rnn \ --input/tmp/notesequences.tfrecord \ --output_dir/tmp/melody_rnn/sequence_examples \ --eval_ratio0.10--eval_ratio0.10表示 10% 的旋律进入评估集、90% 进入训练集。然后训练默认 2 层 × 128 单元文档示例调小到batch_size64,rnn_layer_sizes[64,64]以降低显存占用、加速训练melody_rnn_train \ --configattention_rnn \ --run_dir/tmp/melody_rnn/logdir/run1 \ --sequence_example_file/tmp/melody_rnn/sequence_examples/training_melodies.tfrecord \ --hparamsbatch_size64,rnn_layer_sizes[64,64] \ --num_training_steps20000并行评估只需追加--eval并指向评估集文件。训练中可用tensorboard --logdir/tmp/melody_rnn/logdir查看曲线。训练完成后即可按前述方式用melody_rnn_generate --run_dir...从最新 checkpoint 生成旋律其中--num_steps128表示 128 个十六分音符步长即 8 小节。Drums RNN鼓点序列生成Drums RNN 将语言建模应用于鼓轨生成。鼓轨的复调体现在多个鼓可同时敲响其处理方式是a) 将所有 MIDI 鼓映射到较少的鼓类别b) 把每个时间步表示为一个代表敲击了哪些鼓类别集合的单一值。实现见 drums_rnn_model.py 与 drums_rnn_sequence_generator.py。两种配置one_drum所有鼓映射为单一鼓类每个时间步用二进制编码0静音1至少一个鼓敲击。drum_kit映射为 9 件套鼓组底鼓、军鼓、闭/开镲、三个通鼓、碎音镲与叮叮镲鼓集合编码为长度 512 的 one-hot 向量其中 9 位对应 9 件鼓输入还附加二进制计数器。生成与训练命令与 Melody RNN 几乎一致区别在于种子参数--primer_drums接受元组列表如--primer_drums[(36, 42), (), (42,)]表示底鼓踩镲一步、休止一步、仅踩镲一步不指定时默认以单步底鼓[(36,)]作种子。注意 Drums RNN 训练时--hparams的默认结构是 3 层 × 256 单元文档示例同样调小为[64,64]以加速。Improv RNN带和弦约束的旋律生成Improv RNN 生成方式与 Melody RNN 相同但以底层和弦进行为条件每个生成步同时把当前和弦编码为向量作为输入。它不训练于 MIDI而是训练于 MusicXML 格式的功能谱lead sheet。三种配置basic_improv类似 basic Melody RNN但附加当前和弦的 one-hot 编码48 个三和弦12 个根音音级 × 大小/增/减。attention_improv类似 attention Melody RNN同样附加 48 三和弦 one-hot 编码。chord_pitches_improv不再用 one-hot 三和弦而是拼接三个长度 12 的向量——和弦根音音级的 one-hot 编码、各音级存在与否的二进制向量、以及和弦低音音级 one-hot 编码用于 C/E 这类斜线和弦。生成时必须提供--backing_chords空格分隔的和弦串与可选--render_chords把和弦作为音符渲染进 MIDI。Magenta 理解大多数基本和弦类型如A13、Cdim、F#m7b5--steps_per_chord控制每个和弦的持续步数默认 16 步即一小节improv_rnn_generate \ --config${CONFIG} \ --bundle_file${BUNDLE_PATH} \ --output_dir/tmp/improv_rnn/generated \ --num_outputs10 \ --primer_melody[60] \ --backing_chordsC G Am F C G Am F \ --render_chordsPerformance RNN带力度与表情时值的演奏生成Performance RNN 建模带力度与表现性时值的复调演奏事件编码与 Polyphony RNN 类似但事件类型不同NOTE_ON(pitch)、NOTE_OFF(pitch)、TIME_SHIFT(amount)以 10ms 为增量前进最多 1 秒、VELOCITY(value)可量化到少于 127 个 MIDI 力度档。因此它能生成比固定节奏网格模型更自然的时值与力度。生成时可能出现的两类异常行为文档已说明无对应 NOTE_ON 的 NOTE_OFF 会被忽略无后续 NOTE_OFF 的 NOTE_ON 会在 5 秒后被强制结束。预训练模型与配置定义在 performance_model.py共 6 个performance忽略力度只建模表情时值、performance_with_dynamics力度量化 32 档、performance_with_dynamics_and_modulo_encoding使用将事件值映射到单位圆上的模编码、以及 3 个条件模型按音符密度、音级分布或两者同时条件化。条件模型生成时可用--notes_per_second目标每秒音符数与--pitch_class_histogram12 值列表表示各音级相对频率例如[2, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1]偏向 C 大调音阶引导输出但这些控制并不被严格强制。--num_steps以 10ms 为一步3000 步 30 秒。Polyphony RNN复调音乐生成Polyphony RNN 用 LSTM 做复调音乐语言建模灵感来自 BachBot 架构。它把复调建模为带特殊符号START、STEP_END、END的单事件流步内音符按音高降序排列。以默认的每四分音符 4 步量化分辨率为例一个四分音符时值的 C 大三和弦会编码为START → NEW_NOTE 67/64/60 → STEP_END →CONTINUED_NOTE 重复 3 次各配 STEP_END→ END。实现见 polyphony_model.py 与编码器 polyphony_encoder_decoder.py。生成选项独具特色--condition_on_primer生成前是否先把种子喂给 RNN与--inject_primer_during_generation是否把种子注入到生成序列中。文档给出两个典型用法用--primer_pitches[67,64,60]以 C 大三和弦确立调性配合--condition_on_primertrue或对《小星星》旋律做自动和声——--primer_melody[60, -2, -2, -2, ...]配合--condition_on_primerfalse与--inject_primer_during_generationtrue因为模型在巴赫众赞歌上训练时几乎没见过单声部旋律不宜对其条件化。Pianoroll RNN-NADE钢琴卷帘复调生成Pianoroll RNN-NADE 将 NoteSequence 表示为钢琴卷帘pianoroll——以步为行、音高为列的二进制矩阵1 表示该音高在该时刻激活。由于每个时间步需输出多个音高无法使用 softmax它改用 NADE神经自回归分布估计器在给定 RNN 状态的前提下采样多个输出即 RNN-NADE 架构相关实现可参考 nade.py。生成种子支持--primer_pitches起始和弦与--primer_pianorollnote_seq.PianorollSequence事件值即每步激活音高的元组列表如[(55,), (54,), (55, 53), (50,), (62, 52), (), (63, 55)]文档还给出了用两小节《小星星》二声部对位作种子的完整示例配合--qpm90。Piano Genie低维离散钢琴表示Piano Genie 学习钢琴音乐的低维离散表示编码器 RNN 把 88 键钢琴序列压缩为少数几个按钮如 8 个解码器 RNN 再把简单序列映射回钢琴空间从而构成一个控制整架钢琴的极简音乐界面。训练与评估命令位于 train.py 与 eval.pypython magenta/models/piano_genie/train.py \ --dataset_fp/tmp/piano_genie/chopin_train.tfrecord \ --train_dir/tmp/piano_genie/training_run潜在空间与表示学习VAE 家族Music VAE分层循环变分自编码器Music VAE 学习音乐序列的潜在空间提供三种交互式音乐创作模式从先验分布随机采样、序列间插值、通过属性向量或潜在约束模型操纵已有序列。短序列如 2 小节 loop使用双向 LSTM 编码器 LSTM 解码器长序列使用新颖的分层 LSTM 解码器以学习更长程结构还可在分层解码器最低层嵌入上训练多个解码器来建模乐器间的相互依赖。旋律/贝斯与鼓的表示分别沿用 Melody RNN 与 Drums RNN。配置定义于 configs.py。GrooVAE是 MusicVAE 的变体用于生成和控制有表现力的鼓演奏使用data.py中GrooveConverter实现的新表示可训练于 Groove MIDI 数据集。预训练模型覆盖2 小节旋律cat-mel_2bar_big、16 小节旋律hierdec-mel_16bar、16 小节三人组trios鼓旋律贝斯hierdec-trio_16bar、2 小节鼓cat-drums_2bar_small分.lokl低 KL 与.hikl高 KL 两个版本分别偏向更真实的采样与更好的重构和插值、61 类的nade-drums_2bar_full以及 4 个 GrooVAE 模型groovae_4bar、groovae_2bar_humanize、groovae_2bar_tap_fixed_velocity、groovae_2bar_add_closed_hh、groovae_2bar_hits_control。官方同时提供 Colab Notebook 与 JavaScript APIMusicVAE.js已被 Beat Blender、Melody Mixer、Latent Loops 等应用采用。采样--modesample解码潜在空间中的随机点music_vae_generate \ --configcat-mel_2bar_big \ --checkpoint_file/path/to/music_vae/checkpoints/cat-mel_2bar_big.tar \ --modesample \ --num_outputs5 \ --output_dir/tmp/music_vae/generated插值--modeinterpolate需要两个 MIDI 文件num_outputs指定潜在空间中连接两输入路径上的解码点数含端点。各模型对输入有约束mel_2bar 模型要求输入恰好 2 小节且为单声部非鼓序列trio_16bar 要求 16 小节且含 3 个乐器按 program number 区分鼓、钢琴或吉他、贝斯。若输入不匹配约束脚本会尝试抽取有效子序列写入输出目录供你挑选后再插值。自行训练先按 scripts/README.md 生成 NoteSequence TFRecord大数据集建议用 preprocess_tfrecord.py 离线预处理否则训练时在线预处理会成为瓶颈超大数据集可考虑 Dataflow 分布式运行再选 configs.py 中预定义配置并执行训练music_vae_train \ --configcat-mel_2bar_small \ --run_dir/tmp/music_vae/ \ --modetrain \ --examples_path/tmp/music_vae/mel_train_examples.tfrecord也可直接用 TFDS 数据集例如用 Groove 数据集训练 humanize GrooVAE--tfds_namegroove/2bar-midionly。文档特别提醒两个对结果影响极大的超参数free_bits与max_beta。减小 KL 损失作用增大free_bits或减小max_beta→ 重构更好但随机采样可能更差增大 KL 作用则相反。默认配置是在采样与重构之间求平衡但最佳取值依赖数据集通常需要调整。评估用--modeeval配 heldout 数据集以计算准确率等指标、防止过拟合。Sketch RNN矢量草图生成Sketch RNN 是序列到序列的变分自编码器双向 RNN 编码器 自回归混合密度 RNN 解码器用于生成矢量草图论文《Teaching Machines to Draw》/《A Neural Representation of Sketch Drawings》。主要超参数enc_model/dec_modellstm、layer_norm 或 hyper、enc_size/dec_size、潜在向量维度z_size推荐 32/64/128、KL 权重kl_weight与容差kl_toleranceKL 损失低于该值后停止优化该项。对小数据集文档建议使用循环 dropoutuse_recurrent_dropoutTruerecurrent_dropout_prob通常 65%~90%与两种数据增强random_scale_factor随机缩放与augment_stroke_prob线段内随机丢点对矢量图特有且非常有效。训练命令sketch_rnn_train --log_rootcheckpoint_path --data_dirdataset_path --hparamsdata_set[dataset_filename.npz]完整默认超参表文档提供num_steps10000000、save_every500、dec_rnn_size512、enc_rnn_size256、z_size128、kl_weight0.5、kl_weight_start0.01、kl_tolerance0.2、batch_size100、grad_clip1.0、num_mixture20、learning_rate0.001、decay_rate0.9999、kl_decay_rate0.99995、min_learning_rate0.00001、conditionalTrue等。数据格式为 stroke-3Δx、Δy 与笔是否离纸的二进制值默认数据集为aaron_sheep.npz也支持 Google QuickDraw 的cat.npz等大规模数据集。卷积、Transformer 与强化学习模型Coconet和声填充的卷积网络CoconetCounterpoint by Convolution的核心思想人类作曲并非线性从前往后而是非线性地到处涂写、反复修改。Coconet 训练卷积神经网络补全部分乐谱并用分块 Gibbs 采样模拟重写过程模型与生成过程都不绑定特定的因果方向。该模型是 orderless NADE 的一个实例论文发现 Gibbs 采样显著优于祖先采样部分条件分布建模不佳即使是廉价的近似分块 GibbsYao 2014也以对数似然与人工评估双重标准胜过祖先采样。仓库提供 4 个模板脚本均在coconet目录内运行sample_bazel.sh path_to_checkpoint_dir从预训练模型采样、train_bazel.sh训练、evalmodel_bazel.sh path_to_checkpoint_dir评估模型、evalsample_bazel.sh path_to_checkpoint_dir评估生成的样本。预训练于 J.S. Bach 众赞歌的模型以 checkpoint 目录形式提供其中checkpoint文件需包含model_checkpoint_path: best_model.ckpt指向best_model.ckptconfig文件记录该模型的超参数。训练时需下载 JSB Chorale 数据集中的Jsb16thSeparated.npz并在train_bazel.sh中配置logdir、data_dir与dataset设为Jsb16thSeparated。若遇到ValueError: Cannot feed value of shape ...通常意味着用了错误的数据集。Score2Perf 与 Music Transformer基于 Tensor2Tensor 的 Transformer 音乐生成Score2Perf 是一组 Tensor2Tensor problem用于无条件或以乐谱为条件地生成音乐演奏也是 Music Transformer 模型论文 arXiv:1809.04281的主要入口。安装需额外支持 Beampip install -e .[beam]。训练分两步数据生成用t2t_datagen下载并预处理源数据集文档建议用 Cloud Dataflow 等 Beam 平台本地跑会很慢因为 NoteSequence 预处理开销大。示例 problem 为score2perf_maestro_language_uncropped_aug产出约 1GB 的-{train|dev|test}.tfrecord-?????-of-?????分片文件。训练t2t_trainer配合--hparams_setscore2perf_transformer_base、--modeltransformer常用 hparams 如label_smoothing0.0,max_length0,max_target_seq_length2048--train_steps1000000。采样用交互式t2t_decoder --decode_interactive解码 hparams 如alpha0,beam_size1,extra_length2048配合--hparamssampling_methodrandom生成的 MIDI 文件输出到 /tmp。相关实现见 score2perf.py、score2perf_hparams.py 与 transformer_autoencoder.py。RL Tuner用强化学习调校 Note RNNRL Tuner 实现论文《Tuning Recurrent Neural Networks with Reinforcement Learning》中的思想先有预测单声部旋律下一音符的 Note RNN再用强化学习增强它。核心类RLTuner实现 DQNQ 网络学习在当前状态已作曲的旋律下采取动作演奏音符的奖励价值奖励来自两处——一组音乐理论奖励函数以及训练好的 Note RNN 给出的p(a|s)数据中学到的下一音符概率。NoteRNNLoader加载三份 Note RNN 副本两份初始化 Q-network 与 Target-Q-network第三份作为 Reward RNN 且权重固定不更新。代码结构见 rl_tuner.py构造函数加载网络 →build_graph定义图 →train循环执行action/collect_reward/store→training_step采样经验缓冲做梯度更新 →evaluate_model定期评估 →save_model_and_figs保存 checkpoint 与奖励曲线图 →generate_music_sequence生成旋律设visualize_probsTrue可绘制音符概率随时间变化。除标准 Q 学习外还支持 Psi learning 与 G learning由algorithm超参数选择。rl_tuner_train默认自动下载论文所用 checkpoint也可用note_rnn_checkpoint_dir/note_rnn_hparams/note_rnn_checkpoint_file指定自己的模型并支持调校 Magenta 的basic_rnn配合 unpack_bundle.py 从预训练 bundle 中解出 checkpoint。音频合成与转录模型NSynthWaveNet 自编码器神经音频合成NSynth 是一个基于 WaveNet 的自编码器。背景WaveNet 是深自回归膨胀卷积网络逐样本建模声音但上下文仅限约几千样本约半秒长期结构需要外部信号引导此前工作用语言学嵌入做 TTS 条件化。NSynth 的解法是去掉外部特征条件化让 WaveNet 式自编码器学习自己的时间嵌入。仓库含两个模型基线谱自编码器baseline/目录fft_size 1024、hop_size 256 的频谱幅度 MSE 损失Griffin-Lim 重建与WaveNet 自编码器wavenet/目录训练于 mu-law 编码的 6144 样本波形块学习 16 维嵌入并按时域 512 倍下采样。最直接的用法是从 .wav 生成声音解码器工作在 16kHzsample_length需足够大nsynth_generate \ --checkpoint_path/path/wavenet-ckpt/model.ckpt-200000 \ --source_path/path \ --save_path/path \ --batch_size4也可先用nsynth_save_embeddingsWaveNet或python magenta/models/nsynth/baseline/save_embeddings.py基线保存每个 .wav 的 .npy 嵌入修改嵌入如插值后再用nsynth_generate --encodingstrue合成新声音。训练命令为python magenta/models/nsynth/baseline/train.py与python magenta/models/nsynth/wavenet/train.py均需 NSynth 数据集文档说明 WaveNet 训练还要求 TensorFlow 1.1.0-rc1 及以上两种模型训练开销都非常大官方为透明性才附带训练代码。GANSynthGAN 音频合成GANSynth 在模型索引中被定位为用生成对抗网络合成音频的算法。仓库实现集中在 gansynth/lib/ 目录networks.py生成器/判别器网络、spectral_ops.py与specgrams_helper.py频谱处理、layers.py、data_helpers.py等入口脚本为 gansynth_generate.py 与 gansynth_train.py配置示例见 configs/mel_prog_hires.py。从目录结构看其工作管线包含数据归一化data_normalizer.py、频谱变换与训练/生成工具属于 MelGAN 式的频谱域 GAN 合成方案。Onsets and Frames钢琴与鼓自动转录Onsets and Frames 是论文《Onsets and Frames: Dual-Objective Piano Transcription》所述的双目标钢琴转录模型含力度估计后续扩展至鼓转录。该模型目录同样标注为不活跃仓库官方当前转录工作已迁移至 MT3。最便捷的体验方式是浏览器应用 Piano Scribe 与 Colab Notebook本地转录则用onsets_frames_transcription_transcribe脚本MODEL_DIRpath to directory containing checkpoint onsets_frames_transcription_transcribe \ --model_dir${MODEL_DIR} \ piano_recording1.wav, piano_recording2.wav, ...鼓转录需加--configdrums并使用 E-GMD 数据集训练的 checkpoint。自行训练需先建立开发环境并安装 Beampip install -e .[beam]。默认使用 MAESTRO 数据集数据集创建工具基于 Apache Beam可用 Cloud Dataflow 运行产出约 19GB 的训练文件训练样本为 20 秒音频/MIDI 片段验证与测试样本为整曲也可直接下载预生成的 TFRecord。可选 MAPS 数据集onsets_frames_transcription_create_dataset_maps与自定义数据集onsets_frames_transcription_create_tfrecords之后需在configs.py中注册新数据集。训练时若transform_audiohparam 为真默认系统需安装 sox 二进制onsets_frames_transcription_train \ --examples_path${TRAIN_EXAMPLES} \ --model_dir${RUN_DIR} \ --modetrain评估用onsets_frames_transcription_infer --eval_loop示例 hparams 含use_cudnnfalse。drums配置支持 TPU 训练用ctpu up建 TPU VM训练时加--use_tpu --preprocess_examplesfalse --hparamsbatch_size64 --tpu_cluster${CLUSTER}。相关实现模型定义 model.py 与 model_tpu.py、频谱输入 melspec_input.py、指标 metrics.py。目录还包含实时转录子模块realtime/音频录制与 TFLite 模型推理。图像风格迁移模型Image Stylization多风格拼贴生成器Image Stylization 实现论文《A Learned Representation for Artistic Style》Multistyle Pastiche Generator风格迁移即生成一幅同时拥有内容图c的内容与风格图s的风格的拼贴图p。用预训练模型Monet 模型 10 种风格、Varied 模型 32 种风格进行变换image_stylization_transform \ --num_stylesNUMBER_OF_STYLES \ --checkpoint/path/to/model.ckpt \ --input_image/path/to/image.jpg \ --which_styles[0,1,2,5,14] \ --output_dir/tmp/image_stylization/output \ --output_basenamestylizedwhich_styles还可传字典以线性组合多个风格未指定的风格权重为 0权重不做归一化例如{0:0.1,1:0.1,...,9:0.1}得到所有 Monet 风格的平均。自行训练需要风格图像目录、VGG-16 checkpoint 与 ImageNet 数据集先image_stylization_create_dataset生成风格 TFRecord再image_stylization_train训练、image_stylization_evaluate评估可加--style_grid、image_stylization_finetune微调。核心实现见 model.py、vgg.py 与 learning.py。Arbitrary Image Stylization任意风格快速风格迁移Arbitrary Image Stylization 是本索引中最复杂的图像模型。背景早期风格迁移论文 arXiv:1508.06576是慢速优化算法后续工作实现了实时快速风格迁移但只支持单一或有限风格集。该项目开源的系统可对任意绘画风格做快速风格迁移且由于学到了风格表示还能任意组合风格、以及通过身份插值identity interpolation调节风格强度论文《Exploring the structure of a real-time, arbitrary neural artistic stylization network》。用预训练模型风格化checkpoint 训练于 PBN 与 DTD 图像arbitrary_image_stylization_with_weights \ --checkpoint/path/to/arbitrary_style_transfer/model.ckpt \ --output_dir/path/to/output_dir \ --style_images_pathsimages/style_images/*.jpg \ --content_images_pathsimages/content_images/*.jpg \ --image_size256 \ --content_square_cropFalse \ --style_image_size256 \ --style_square_cropFalse \ --logtostderr仓库自带内容图如golden_gate_sq.jpg与风格图如clouds-over-bor-1940_sq.jpg可直接体验stylized_images/ 中保存了真实运行结果示例。身份插值--interpolation_weights[0.0,0.2,0.4,0.6,0.8,1.0]中 0.0 对应保留内容原貌、1.0 对应完全风格化stylized_images_interpolation/ 目录保存了自由女神像与 Colva Beach 随权重递增的插值示例。自行训练需准备风格图像目录PBN 与 DTD 数据集、ImageNet 数据集、VGG-16 与 Inception-v3 checkpoint以及 TF-slim 库。流程为image_stylization_create_dataset生成风格 TFRecord可选--compute_gram_matricesFalse→arbitrary_image_stylization_train训练小数据集示例--content_weights{vgg_16/conv3:2.0} --random_style_image_sizeFalse --augment_style_imagesFalse --center_cropTrue大数据集则开启--random_style_image_sizeTrue --augment_style_imagesTrue做风格图像增广→arbitrary_image_stylization_evaluate评估可CUDA_VISIBLE_DEVICES让评估跑在 CPU。文档还说明DTD cobwebbed 类别仅 120 张图训练只需几小时适合验证流程。另有移动端路线arbitrary_image_stylization_distill_mobilenet用 MobileNetV2 蒸馏 InceptionV3 风格预测网络arbitrary_image_stylization_train_mobile训练移动版arbitrary_image_stylization_convert_tflite转换为 6 个 TFLite 模型style_predict/style_transform各含 float32、int8 权重量化、全 int8 量化三个版本。矢量图形生成SVG VAESVG VAE 是一个 Tensor2Tensor problem用于生成字体 SVG论文《A Learned Representation for Scalable Vector Graphics》。仓库中的核心 problem 定义在 glyphazzn.py数据生成用 datagen_beam.pyBeam 管道可在 Dataflow 集群运行模型包括svg_decoder与image_vae两种。数据集构建流程收集glyphazzn_urls.txt中的字体 → 用 fontforge 转成含uni、width、vwidth、sfd、id、binary_fp字段的 parquetio 数据库 →datagen_beam.par产出 TFRecord 数据集与统计文件含路径向量化的均值/标准差用于训练时归一化输入→ 在 glyphazzn.py 顶部配置RAW_STAT_FILE/RAW_DATA_FILES后运行t2t_datagen --problem glyph_azzn_problem→ 再用t2t_trainer训练 VAEsvg_decoder需以vae_ckpt_dir、vae_data_dir指定 image_vae checkpoint 作条件。从预训练模型采样则通过官方 Colab设置problemglyph_azzn_problem、model_namesvg_decoder或image_vae与对应 hparam 即可。通用机制Bundle 打包与共享生成器几乎所有生成脚本都支持将 checkpoint、metagraph 与模型元数据打包为单一.magbundle 文件便于分发与复用。机制由 sequence_generator.py 中的create_bundle_file方法提供各生成脚本通过--save_generator_bundle标志调用。以 Melody RNN 为例melody_rnn_generate \ --configattention_rnn \ --run_dir/tmp/melody_rnn/logdir/run1 \ --hparamsbatch_size64,rnn_layer_sizes[64,64] \ --bundle_file/tmp/attention_rnn.mag \ --save_generator_bundle相关的共享基础设施还包括 events_rnn_model.py事件序列 RNN 的通用模型骨架与 sequence_generator_bundle.pybundle 读写。小结与选型建议回顾整个模型库选型可遵循以下思路旋律/鼓点/即兴/复调/演奏等符号音乐生成首选 RNN 家族从basic_rnn起步需要长程结构换attention_rnn复调选polyphony_rnn或pianoroll_rnn_nade要表情时值选performance_rnn要和弦条件化选improv_rnn需要潜在空间操作采样/插值/属性操纵选 Music VAE 或 Sketch RNN音频域合成与转录分别对应 NSynth/GANSynth 与 Onsets and Frames乐谱补全用 Coconet长序列高性能生成用 Score2Perf/Music Transformer图像风格迁移则在固定风格集Image Stylization与任意风格Arbitrary Image Stylization之间按需选择。所有模型均遵循环境搭建 → 数据准备NoteSequence/SequenceExample→ 训练评估 → 生成/bundle的统一流程magenta/models/README.md及各个子目录 README 就是最权威的入口文档。赞分享人工智能深度学习音频媒体生成计算机视觉【免费下载链接】magentaMagenta: Music and Art Generation with Machine Intelligence项目地址https://gitcode.com/gh_mirrors/ma/magenta点击查看免费下载相关推荐3分钟上手fastapi-scaff快速创建你的第一个FastAPI应用3分钟上手fastapi scaff快速创建你的第一个FastAPI应用 fastapi scaff是一款强大的FastAPI脚手架工具能帮助开发者一键生成开发工具CLI代码生成后端零基础玩转AI音乐创作Magenta核心模型架构与实战指南零基础玩转AI音乐创作Magenta核心模型架构与实战指南 Magenta作为Google Brain团队发起的开源项目正通过机器学习技术重新定义艺术创作的人工智能深度学习音频媒体生成计算机视觉WanGP 精选模型全景指南视频、图像、语音与音乐模型的一站式选型与实战配置WanGP 精选模型全景指南视频、图像、语音与音乐模型的一站式选型与实战配置 本文以 docs/OVERVIEW.md https://link.gitcod人工智能AI 应用媒体生成本地部署上一篇GravitySnapHelper 使用指南下一篇告别OOP痛病EOLANG如何用φ演算重塑面向对象编程范式创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考