|
# CogVideoX-Fun |
|
|
|
๐ Welcome! |
|
|
|
[![Hugging Face Spaces](https://img.shields.io/badge/%F0%9F%A4%97%20Hugging%20Face-Spaces-yellow)](https://huggingface.co/spaces/alibaba-pai/CogVideoX-Fun-5b) |
|
|
|
English | [็ฎไฝไธญๆ](./README.md) |
|
|
|
# Table of Contents |
|
- [Table of Contents](#table-of-contents) |
|
- [Introduction](#introduction) |
|
- [Quick Start](#quick-start) |
|
- [Video Result](#video-result) |
|
- [How to use](#how-to-use) |
|
- [Model zoo](#model-zoo) |
|
- [TODO List](#todo-list) |
|
- [Reference](#reference) |
|
- [License](#license) |
|
|
|
# Introduction |
|
CogVideoX-Fun is a modified pipeline based on the CogVideoX structure, designed to provide more flexibility in generation. It can be used to create AI images and videos, as well as to train baseline models and Lora models for Diffusion Transformer. We support predictions directly from the already trained CogVideoX-Fun model, allowing the generation of videos at different resolutions, approximately 6 seconds long with 8 fps (1 to 49 frames). Users can also train their own baseline models and Lora models to achieve certain style transformations. |
|
|
|
We will support quick pull-ups from different platforms, refer to [Quick Start](#quick-start). |
|
|
|
What's New: |
|
- Retrain the i2v model and add noise to increase the motion amplitude of the video. Upload the control model training code and control model. [ 2024.09.29 ] |
|
- Create code! Now supporting Windows and Linux. Supports 2b and 5b models. Supports video generation at any resolution from 256x256x49 to 1024x1024x49. [ 2024.09.18 ] |
|
|
|
Function๏ผ |
|
- [Data Preprocessing](#data-preprocess) |
|
- [Train DiT](#dit-train) |
|
- [Video Generation](#video-gen) |
|
|
|
Our UI interface is as follows: |
|
![ui](https://pai-aigc-photog.oss-cn-hangzhou.aliyuncs.com/cogvideox_fun/asset/v1/ui.jpg) |
|
|
|
# Quick Start |
|
### 1. Cloud usage: AliyunDSW/Docker |
|
#### a. From AliyunDSW |
|
DSW has free GPU time, which can be applied once by a user and is valid for 3 months after applying. |
|
|
|
Aliyun provide free GPU time in [Freetier](https://free.aliyun.com/?product=9602825&crowd=enterprise&spm=5176.28055625.J_5831864660.1.e939154aRgha4e&scm=20140722.M_9974135.P_110.MO_1806-ID_9974135-MID_9974135-CID_30683-ST_8512-V_1), get it and use in Aliyun PAI-DSW to start CogVideoX-Fun within 5min! |
|
|
|
[![DSW Notebook](https://pai-aigc-photog.oss-cn-hangzhou.aliyuncs.com/easyanimate/asset/dsw.png)](https://gallery.pai-ml.com/#/preview/deepLearning/cv/cogvideox_fun) |
|
|
|
#### b. From ComfyUI |
|
Our ComfyUI is as follows, please refer to [ComfyUI README](comfyui/README.md) for details. |
|
![workflow graph](https://pai-aigc-photog.oss-cn-hangzhou.aliyuncs.com/cogvideox_fun/asset/v1/cogvideoxfunv1_workflow_i2v.jpg) |
|
|
|
#### c. From docker |
|
If you are using docker, please make sure that the graphics card driver and CUDA environment have been installed correctly in your machine. |
|
|
|
Then execute the following commands in this way: |
|
|
|
``` |
|
# pull image |
|
docker pull mybigpai-public-registry.cn-beijing.cr.aliyuncs.com/easycv/torch_cuda:cogvideox_fun |
|
|
|
# enter image |
|
docker run -it -p 7860:7860 --network host --gpus all --security-opt seccomp:unconfined --shm-size 200g mybigpai-public-registry.cn-beijing.cr.aliyuncs.com/easycv/torch_cuda:cogvideox_fun |
|
|
|
# clone code |
|
git clone https://github.com/aigc-apps/CogVideoX-Fun.git |
|
|
|
# enter CogVideoX-Fun's dir |
|
cd CogVideoX-Fun |
|
|
|
# download weights |
|
mkdir models/Diffusion_Transformer |
|
mkdir models/Personalized_Model |
|
|
|
wget https://pai-aigc-photog.oss-cn-hangzhou.aliyuncs.com/cogvideox_fun/Diffusion_Transformer/CogVideoX-Fun-V1.1-2b-InP.tar.gz -O models/Diffusion_Transformer/CogVideoX-Fun-V1.1-2b-InP.tar.gz |
|
|
|
cd models/Diffusion_Transformer/ |
|
tar -xvf CogVideoX-Fun-V1.1-2b-InP.tar.gz |
|
cd ../../ |
|
``` |
|
|
|
### 2. Local install: Environment Check/Downloading/Installation |
|
#### a. Environment Check |
|
We have verified CogVideoX-Fun execution on the following environment: |
|
|
|
The detailed of Windows: |
|
- OS: Windows 10 |
|
- python: python3.10 & python3.11 |
|
- pytorch: torch2.2.0 |
|
- CUDA: 11.8 & 12.1 |
|
- CUDNN: 8+ |
|
- GPU๏ผ Nvidia-3060 12G & Nvidia-3090 24G |
|
|
|
The detailed of Linux: |
|
- OS: Ubuntu 20.04, CentOS |
|
- python: python3.10 & python3.11 |
|
- pytorch: torch2.2.0 |
|
- CUDA: 11.8 & 12.1 |
|
- CUDNN: 8+ |
|
- GPU๏ผNvidia-V100 16G & Nvidia-A10 24G & Nvidia-A100 40G & Nvidia-A100 80G |
|
|
|
We need about 60GB available on disk (for saving weights), please check! |
|
|
|
#### b. Weights |
|
We'd better place the [weights](#model-zoo) along the specified path: |
|
|
|
``` |
|
๐ฆ models/ |
|
โโโ ๐ Diffusion_Transformer/ |
|
โ โโโ ๐ CogVideoX-Fun-V1.1-2b-InP/ |
|
โ โโโ ๐ CogVideoX-Fun-V1.1-5b-InP/ |
|
โโโ ๐ Personalized_Model/ |
|
โ โโโ your trained trainformer model / your trained lora model (for UI load) |
|
``` |
|
|
|
# Video Result |
|
The results displayed are all based on image. |
|
|
|
### CogVideoX-Fun-V1.1-5B |
|
|
|
Resolution-1024 |
|
|
|
<table border="0" style="width: 100%; text-align: left; margin-top: 20px;"> |
|
<tr> |
|
<td> |
|
<video src="https://github.com/user-attachments/assets/34e7ec8f-293e-4655-bb14-5e1ee476f788" width="100%" controls autoplay loop></video> |
|
</td> |
|
<td> |
|
<video src="https://github.com/user-attachments/assets/7809c64f-eb8c-48a9-8bdc-ca9261fd5434" width="100%" controls autoplay loop></video> |
|
</td> |
|
<td> |
|
<video src="https://github.com/user-attachments/assets/8e76aaa4-c602-44ac-bcb4-8b24b72c386c" width="100%" controls autoplay loop></video> |
|
</td> |
|
<td> |
|
<video src="https://github.com/user-attachments/assets/19dba894-7c35-4f25-b15c-384167ab3b03" width="100%" controls autoplay loop></video> |
|
</td> |
|
</tr> |
|
</table> |
|
|
|
|
|
Resolution-768 |
|
|
|
<table border="0" style="width: 100%; text-align: left; margin-top: 20px;"> |
|
<tr> |
|
<td> |
|
<video src="https://github.com/user-attachments/assets/0bc339b9-455b-44fd-8917-80272d702737" width="100%" controls autoplay loop></video> |
|
</td> |
|
<td> |
|
<video src="https://github.com/user-attachments/assets/70a043b9-6721-4bd9-be47-78b7ec5c27e9" width="100%" controls autoplay loop></video> |
|
</td> |
|
<td> |
|
<video src="https://github.com/user-attachments/assets/d5dd6c09-14f3-40f8-8b6d-91e26519b8ac" width="100%" controls autoplay loop></video> |
|
</td> |
|
<td> |
|
<video src="https://github.com/user-attachments/assets/9327e8bc-4f17-46b0-b50d-38c250a9483a" width="100%" controls autoplay loop></video> |
|
</td> |
|
</tr> |
|
</table> |
|
|
|
Resolution-512 |
|
|
|
<table border="0" style="width: 100%; text-align: left; margin-top: 20px;"> |
|
<tr> |
|
<td> |
|
<video src="https://github.com/user-attachments/assets/ef407030-8062-454d-aba3-131c21e6b58c" width="100%" controls autoplay loop></video> |
|
</td> |
|
<td> |
|
<video src="https://github.com/user-attachments/assets/7610f49e-38b6-4214-aa48-723ae4d1b07e" width="100%" controls autoplay loop></video> |
|
</td> |
|
<td> |
|
<video src="https://github.com/user-attachments/assets/1fff0567-1e15-415c-941e-53ee8ae2c841" width="100%" controls autoplay loop></video> |
|
</td> |
|
<td> |
|
<video src="https://github.com/user-attachments/assets/bcec48da-b91b-43a0-9d50-cf026e00fa4f" width="100%" controls autoplay loop></video> |
|
</td> |
|
</tr> |
|
</table> |
|
|
|
### CogVideoX-Fun-V1.1-5B-Pose |
|
|
|
<table border="0" style="width: 100%; text-align: left; margin-top: 20px;"> |
|
<tr> |
|
<td> |
|
Resolution-512 |
|
</td> |
|
<td> |
|
Resolution-768 |
|
</td> |
|
<td> |
|
Resolution-1024 |
|
</td> |
|
<tr> |
|
<td> |
|
<video src="https://github.com/user-attachments/assets/a746df51-9eb7-4446-bee5-2ee30285c143" width="100%" controls autoplay loop></video> |
|
</td> |
|
<td> |
|
<video src="https://github.com/user-attachments/assets/db295245-e6aa-43be-8c81-32cb411f1473" width="100%" controls autoplay loop></video> |
|
</td> |
|
<td> |
|
<video src="https://github.com/user-attachments/assets/ec9875b2-fde0-48e1-ab7e-490cee51ef40" width="100%" controls autoplay loop></video> |
|
</td> |
|
</tr> |
|
</table> |
|
|
|
### CogVideoX-Fun-V1.1-2B |
|
|
|
Resolution-768 |
|
|
|
<table border="0" style="width: 100%; text-align: left; margin-top: 20px;"> |
|
<tr> |
|
<td> |
|
<video src="https://github.com/user-attachments/assets/03235dea-980e-4fc5-9c41-e40a5bc1b6d0" width="100%" controls autoplay loop></video> |
|
</td> |
|
<td> |
|
<video src="https://github.com/user-attachments/assets/f7302648-5017-47db-bdeb-4d893e620b37" width="100%" controls autoplay loop></video> |
|
</td> |
|
<td> |
|
<video src="https://github.com/user-attachments/assets/cbadf411-28fa-4b87-813d-da63ff481904" width="100%" controls autoplay loop></video> |
|
</td> |
|
<td> |
|
<video src="https://github.com/user-attachments/assets/87cc9d0b-b6fe-4d2d-b447-174513d169ab" width="100%" controls autoplay loop></video> |
|
</td> |
|
</tr> |
|
</table> |
|
|
|
### CogVideoX-Fun-V1.1-2B-Pose |
|
|
|
<table border="0" style="width: 100%; text-align: left; margin-top: 20px;"> |
|
<tr> |
|
<td> |
|
Resolution-512 |
|
</td> |
|
<td> |
|
Resolution-768 |
|
</td> |
|
<td> |
|
Resolution-1024 |
|
</td> |
|
<tr> |
|
<td> |
|
<video src="https://github.com/user-attachments/assets/487bcd7b-1b7f-4bb4-95b5-96a6b6548b3e" width="100%" controls autoplay loop></video> |
|
</td> |
|
<td> |
|
<video src="https://github.com/user-attachments/assets/2710fd18-8489-46e4-8086-c237309ae7f6" width="100%" controls autoplay loop></video> |
|
</td> |
|
<td> |
|
<video src="https://github.com/user-attachments/assets/b79513db-7747-4512-b86c-94f9ca447fe2" width="100%" controls autoplay loop></video> |
|
</td> |
|
</tr> |
|
</table> |
|
|
|
# How to use |
|
|
|
<h3 id="video-gen">1. Inference </h3> |
|
|
|
#### a. Using Python Code |
|
- Step 1: Download the corresponding [weights](#model-zoo) and place them in the models folder. |
|
- Step 2: Modify prompt, neg_prompt, guidance_scale, and seed in the predict_t2v.py file. |
|
- Step 3: Run the predict_t2v.py file, wait for the generated results, and save the results in the samples/cogvideox-fun-videos-t2v folder. |
|
- Step 4: If you want to combine other backbones you have trained with Lora, modify the predict_t2v.py and Lora_path in predict_t2v.py depending on the situation. |
|
|
|
#### b. Using webui |
|
- Step 1: Download the corresponding [weights](#model-zoo) and place them in the models folder. |
|
- Step 2: Run the app.py file to enter the graph page. |
|
- Step 3: Select the generated model based on the page, fill in prompt, neg_prompt, guidance_scale, and seed, click on generate, wait for the generated result, and save the result in the samples folder. |
|
|
|
#### c. From ComfyUI |
|
Please refer to [ComfyUI README](comfyui/README.md) for details. |
|
|
|
### 2. Model Training |
|
A complete CogVideoX-Fun training pipeline should include data preprocessing, and Video DiT training. |
|
|
|
<h4 id="data-preprocess">a. data preprocessing</h4> |
|
|
|
We have provided a simple demo of training the Lora model through image data, which can be found in the [wiki](https://github.com/aigc-apps/CogVideoX-Fun/wiki/Training-Lora) for details. |
|
|
|
A complete data preprocessing link for long video segmentation, cleaning, and description can refer to [README](cogvideox/video_caption/README.md) in the video captions section. |
|
|
|
If you want to train a text to image and video generation model. You need to arrange the dataset in this format. |
|
|
|
``` |
|
๐ฆ project/ |
|
โโโ ๐ datasets/ |
|
โ โโโ ๐ internal_datasets/ |
|
โ โโโ ๐ train/ |
|
โ โ โโโ ๐ 00000001.mp4 |
|
โ โ โโโ ๐ 00000002.jpg |
|
โ โ โโโ ๐ ..... |
|
โ โโโ ๐ json_of_internal_datasets.json |
|
``` |
|
|
|
The json_of_internal_datasets.json is a standard JSON file. The file_path in the json can to be set as relative path, as shown in below: |
|
```json |
|
[ |
|
{ |
|
"file_path": "train/00000001.mp4", |
|
"text": "A group of young men in suits and sunglasses are walking down a city street.", |
|
"type": "video" |
|
}, |
|
{ |
|
"file_path": "train/00000002.jpg", |
|
"text": "A group of young men in suits and sunglasses are walking down a city street.", |
|
"type": "image" |
|
}, |
|
..... |
|
] |
|
``` |
|
|
|
You can also set the path as absolute path as follow: |
|
```json |
|
[ |
|
{ |
|
"file_path": "/mnt/data/videos/00000001.mp4", |
|
"text": "A group of young men in suits and sunglasses are walking down a city street.", |
|
"type": "video" |
|
}, |
|
{ |
|
"file_path": "/mnt/data/train/00000001.jpg", |
|
"text": "A group of young men in suits and sunglasses are walking down a city street.", |
|
"type": "image" |
|
}, |
|
..... |
|
] |
|
``` |
|
|
|
<h4 id="dit-train">b. Video DiT training </h4> |
|
|
|
If the data format is relative path during data preprocessing, please set ```scripts/train.sh``` as follow. |
|
``` |
|
export DATASET_NAME="datasets/internal_datasets/" |
|
export DATASET_META_NAME="datasets/internal_datasets/json_of_internal_datasets.json" |
|
``` |
|
|
|
If the data format is absolute path during data preprocessing, please set ```scripts/train.sh``` as follow. |
|
``` |
|
export DATASET_NAME="" |
|
export DATASET_META_NAME="/mnt/data/json_of_internal_datasets.json" |
|
``` |
|
|
|
Then, we run scripts/train.sh. |
|
```sh |
|
sh scripts/train.sh |
|
``` |
|
|
|
For details on setting some parameters, please refer to [Readme Train](scripts/README_TRAIN.md), [Readme Lora](scripts/README_TRAIN_LORA.md) and [Readme Control](scripts/README_TRAIN_CONTROL.md). |
|
|
|
|
|
# Model zoo |
|
|
|
V1.1: |
|
|
|
| ๅ็งฐ | ๅญๅจ็ฉบ้ด | Hugging Face | Model Scope | ๆ่ฟฐ | |
|
|--|--|--|--|--| |
|
| CogVideoX-Fun-V1.1-2b-InP.tar.gz | Before extraction:9.7 GB \/ After extraction: 13.0 GB | [๐คLink](https://huggingface.co/alibaba-pai/CogVideoX-Fun-V1.1-2b-InP) | [๐Link](https://modelscope.cn/models/PAI/CogVideoX-Fun-V1.1-2b-InP) | Our official graph-generated video model is capable of predicting videos at multiple resolutions (512, 768, 1024, 1280) and has been trained on 49 frames at a rate of 8 frames per second. Noise has been added to the reference image, and the amplitude of motion is greater compared to V1.0. | |
|
| CogVideoX-Fun-V1.1-5b-InP.tar.gz | Before extraction:16.0 GB \/ After extraction: 20.0 GB | [๐คLink](https://huggingface.co/alibaba-pai/CogVideoX-Fun-V1.1-5b-InP) | [๐Link](https://modelscope.cn/models/PAI/CogVideoX-Fun-V1.1-5b-InP) | Our official graph-generated video model is capable of predicting videos at multiple resolutions (512, 768, 1024, 1280) and has been trained on 49 frames at a rate of 8 frames per second. Noise has been added to the reference image, and the amplitude of motion is greater compared to V1.0. | |
|
| CogVideoX-Fun-V1.1-2b-Pose.tar.gz | Before extraction:9.7 GB \/ After extraction: 13.0 GB | [๐คLink](https://huggingface.co/alibaba-pai/CogVideoX-Fun-V1.1-2b-Pose) | [๐Link](https://modelscope.cn/models/PAI/CogVideoX-Fun-V1.1-2b-Pose) | Our official pose-control video model is capable of predicting videos at multiple resolutions (512, 768, 1024, 1280) and has been trained on 49 frames at a rate of 8 frames per second.| |
|
| CogVideoX-Fun-V1.1-5b-Pose.tar.gz | Before extraction:16.0 GB \/ After extraction: 20.0 GB | [๐คLink](https://huggingface.co/alibaba-pai/CogVideoX-Fun-V1.1-5b-Pose) | [๐Link](https://modelscope.cn/models/PAI/CogVideoX-Fun-V1.1-5b-Pose) | Our official pose-control video model is capable of predicting videos at multiple resolutions (512, 768, 1024, 1280) and has been trained on 49 frames at a rate of 8 frames per second.| |
|
|
|
V1.0: |
|
|
|
| Name | Storage Space | Hugging Face | Model Scope | Description | |
|
|--|--|--|--|--| |
|
| CogVideoX-Fun-2b-InP.tar.gz | Before extraction:9.7 GB \/ After extraction: 13.0 GB | [๐คLink](https://huggingface.co/alibaba-pai/CogVideoX-Fun-2b-InP) | [๐Link](https://modelscope.cn/models/PAI/CogVideoX-Fun-2b-InP) | Our official graph-generated video model is capable of predicting videos at multiple resolutions (512, 768, 1024, 1280) and has been trained on 49 frames at a rate of 8 frames per second. | |
|
| CogVideoX-Fun-5b-InP.tar.gz | Before extraction:16.0 GB \/ After extraction: 20.0 GB | [๐คLink](https://huggingface.co/alibaba-pai/CogVideoX-Fun-5b-InP)| [๐Link](https://modelscope.cn/models/PAI/CogVideoX-Fun-5b-InP)| Our official graph-generated video model is capable of predicting videos at multiple resolutions (512, 768, 1024, 1280) and has been trained on 49 frames at a rate of 8 frames per second. | |
|
|
|
# TODO List |
|
- Support Chinese. |
|
|
|
# Reference |
|
- CogVideo: https://github.com/THUDM/CogVideo/ |
|
- EasyAnimate: https://github.com/aigc-apps/EasyAnimate |
|
|
|
# License |
|
This project is licensed under the [Apache License (Version 2.0)](https://github.com/modelscope/modelscope/blob/master/LICENSE). |
|
|
|
The CogVideoX-2B model (including its corresponding Transformers module and VAE module) is released under the [Apache 2.0 License](LICENSE). |
|
|
|
The CogVideoX-5B model (Transformers module) is released under the [CogVideoX LICENSE](https://huggingface.co/THUDM/CogVideoX-5b/blob/main/LICENSE). |
|
|