Doubiiu / DynamiCrafter

[ECCV 2024] DynamiCrafter: Animating Open-domain Images with Video Diffusion Priors
Apache License 2.0
2.06k stars 161 forks source link

Optimize some code #94

Closed dailingx closed 3 weeks ago

dailingx commented 3 weeks ago

During the in-depth usage, I discovered some code that could be optimized to further improve the user experience, including the following aspects:

  1. In webvid.py, when using pandas to read a CSV file, pandas attempts to infer the data types of each column by default. If the data in a column looks like an integer, pandas will parse it into an integer type. This means that if the page_dir in the training dataset is named with a purely numerical composition and includes leading zeros, such as 00001, when reading this directory from the CSV, it might remove the leading zeros and parse it as the integer 1. This could lead to errors:
    Load video failed! path = /root/test/DynamiCrafter/data/videos/1/1940752_1024_576_512_512.mp4
    [15:40:52] /github/workspace/src/video/video_reader.cc:83: ERROR opening: /root/test/DynamiCrafter/data/videos/1/1940752_1024_576_512_512.mp4, No such file or directory

    which is an error I have encountered during execution. So, I specified the dtype parameter as str, which leads pandas to treat all columns as strings. This parameter can effectively prevent the occurrence of the aforementioned error.

  2. In inference.py, I ensured that if the seed parameter receives a negative number, it will generate a random seed value.
  3. In the Gradio UI, the seed has been modified to generate randomly. I believe this will be user-friendly and convenient, similar to how stable-diffusion-webui operates.