hpcaitech / Open-Sora

Open-Sora: Democratizing Efficient Video Production for All

Home Page:https://hpcaitech.github.io/Open-Sora/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

使用HD-VG-130M数据集训练的模型效果非常不好

kawayi12318 opened this issue · comments

hd-vg-74000.mp4

以上是我使用少量数据集训练的模型 生成的视频
我想知道是因为数据太少么

根据你生成的视频效果(基本全是噪声),虽然不知道你具体的训练步数和数据量,我认为问题可能在于:

  1. 你没有使用 PixArt-alpha 的图像模型进行初始化权重。使用预训练好的图像模型初始化权重,能够加速学习过程。
  2. 如果你想从头训练,那可能是你训练的步数太少了。一般 10k 能够见到效果。

根据你生成的视频效果(基本全是噪声),虽然不知道你具体的训练步数和数据量,我认为问题可能在于:

  1. 你没有使用 PixArt-alpha 的图像模型进行初始化权重。使用预训练好的图像模型初始化权重,能够加速学习过程。
  2. 如果你想从头训练,那可能是你训练的步数太少了。一般 10k 能够见到效果。

我看到open-sora的global_step计算公式为:global_step = epoch * num_steps_per_epoch + step
这个num_steps_per_epoch 值会受到batch_size影响
请问你说的在10k step左右可以见到效果 是在batch_size值是多少的情况下

@kawayi12318 请问怎么使用yt-dlp命令下载HD-VG-130M数据集

@kawayi12318 请问怎么使用yt-dlp命令下载HD-VG-130M数据集

@songyang86 我在谷歌云盘中下载的HD-VG-130M 使用的是metafiles目录下的hdvg_0.json 然后用云盘中附带的cut_videos_hdvg.py脚本就可以 不过你可能需要更改一下脚本中方法extract_all_clip中的内容

@kawayi12318 请问怎么修改extract_all_clip这个方法,我不清楚怎么用youtube-dl下载,谢谢

@kawayi12318 请问怎么修改extract_all_clip这个方法,我不清楚怎么用youtube-dl下载,谢谢

@songyang86 你可以直接使用我的脚本:
cut_videos_hdvg - 副本.txt
我不会在讨论中上传python脚本 所以我更改了后缀 你在使用时需要将后缀改为**.py** 并放到**data/HD-VG-130M/**下 它会在open-sora中生成一份csv文件

@kawayi12318 你好,我运行你的程序,报这个错误:
FileNotFoundError: [Errno 2] No such file or directory: 'yt-dlp -f "bv[ext=mp4]+ba[ext=m4a]" --embed-metadata --merge-output-format mp4 -o "/home/song/diffusion/Open-Sora-main/HDdata/download_videos/----meyKR48.mp4" https://www.youtube.com/watch?v=----meyKR48 '

@kawayi12318 你好,我运行你的程序,报这个错误: FileNotFoundError: [Errno 2] No such file or directory: 'yt-dlp -f "bv[ext=mp4]+ba[ext=m4a]" --embed-metadata --merge-output-format mp4 -o "/home/song/diffusion/Open-Sora-main/HDdata/download_videos/----meyKR48.mp4" https://www.youtube.com/watch?v=----meyKR48 '

你有装ffmpeg和yt-dlp吗

@kawayi12318 我已经安装了,还是同样的错误,VPN我是打开的
Screenshot from 2024-04-18 17-32-55

@kawayi12318 我已经安装了,还是同样的错误,VPN我是打开的 Screenshot from 2024-04-18 17-32-55

yt-dlp 不是youtube-dl

@kawayi12318 我安装了yt-dlp,还是报一样的错误
Screenshot from 2024-04-18 17-46-24

@kawayi12318 麻烦你了,我实在不知道错在哪里,谢谢
Screenshot from 2024-04-18 17-52-23

@kawayi12318 麻烦你了,我实在不知道错在哪里,谢谢 Screenshot from 2024-04-18 17-52-23

我也没看出来 你有更完整的日志记录吗?

@kawayi12318 麻烦你了,我实在不知道错在哪里,谢谢 Screenshot from 2024-04-18 17-52-23

我认为应该是你的ffmpeg或者yt-dlp没有安装好 你可以搜一下安装教程

@kawayi12318 我的目录上有这个download文件夹,我在终端单独运行 yt-dlp -f "bv[ext=mp4]+ba[ext=m4a]" --embed-metadata --merge-output-format mp4 -o "./download_videos/----meyKR48.mp4" https://www.youtube.com/watch?v=----meyKR48 这个命令是可以正常下载视频的,很奇怪。你这个文件是在windows上还是ubuntu上运行的
Screenshot from 2024-04-18 18-04-55

@kawayi12318 我的目录上有这个download文件夹,我在终端单独运行 yt-dlp -f "bv[ext=mp4]+ba[ext=m4a]" --embed-metadata --merge-output-format mp4 -o "./download_videos/----meyKR48.mp4" https://www.youtube.com/watch?v=----meyKR48 这个命令是可以正常下载视频的,很奇怪。你这个文件是在windows上还是ubuntu上运行的 Screenshot from 2024-04-18 18-04-55

windows

@kawayi12318 可以了,要把shell设置为True。非常感谢你的帮助

@kawayi12318 可以了,要把shell设置为True。非常感谢你的帮助

@songyang86 我在代码中有设置下载视频数量 在171-172行
if i >= 1000: break
如果你需要下载全部的视频 你需要注释掉这两行

@kawayi12318 你的这段程序有点问题:
1

下载程序里面的 video_id此时是----meyKR48,但实际下载的时候估计是分片下载,所以保存的视频是video_id加上一个随机编码对视频进行的命名。所以 程序的 if not os.path.exists(video_temp_path) 永远是True,导致保存的csv文件是空的
2

不知道你下载的时候是否有这个问题?

@kawayi12318 你的这段程序有点问题: 1

下载程序里面的 video_id此时是----meyKR48,但实际下载的时候估计是分片下载,所以保存的视频是video_id加上一个随机编码对视频进行的命名。所以 程序的 if not os.path.exists(video_temp_path) 永远是True,导致保存的csv文件是空的 2

不知道你下载的时候是否有这个问题?

.m4a是音频文件 .mp4是视频文件 在下载完成后会合并 最终保存的是----meyKR48.mp4
我在下载时并不会出现if not os.path.exists(video_temp_path) 判断为True的情况

@kawayi12318
4

我这样改有问题吗?我目前现在下载10个video_id做测试,但最终发现download_videos文件夹里面没有合成最终的视频

@kawayi12318 cnt我设置成2,程序运行完是这样的:
5

@kawayi12318 4

我这样改有问题吗?我目前现在下载10个video_id做测试,但最终发现download_videos文件夹里面没有合成最终的视频

首先 如果你需要限制下载视频的数量 你只需要更改为i >= 10 并不需要添加额外判断cut < 10 例如
image

其次你的代码看起来并没有什么问题 你是怎么运行它的呢

@songyang86
另外你还需要在脚本中添加以下代码
os.environ["http_proxy"] = "http://127.0.0.1:9999" os.environ["https_proxy"] = "http://127.0.0.1:9999" os.environ["OPENCV_FFMPEG_READ_ATTEMPTS"] = '4096'

9999对应的是你vpn的端口号

@songyang86
首先我的目录结构为:
image

在运行脚本对两个视频做处理后为:
image

download-videos目录下为合并完成的视频:
image

video-clips目录下为切分好后的视频片段:
image

@kawayi12318 我知道问题了,我目前是在windows上用pycharm运行的,可以直接运行你的程序,但无法合成。昨天是在ubuntu上运行的,一直报错,后来发现要将shell设置为True才能正常运行。我看了,在ubuntu上是可以正常合成的,感谢

@kawayi12318 我知道问题了,我目前是在windows上用pycharm运行的,可以直接运行你的程序,但无法合成。昨天是在ubuntu上运行的,一直报错,后来发现要将shell设置为True才能正常运行。我看了,在ubuntu上是可以正常合成的,感谢

可能你需要在windows上把shell设置为False

@kawayi12318 windows上shell为False,可以正常下载,但无法合成