|
# π» How to Inference & Test Metrics (FID, CLIP Score, GenEval, DPG-Bench, etc...) |
|
|
|
This ToolKit will automatically inference your model and log the metrics results onto wandb as chart for better illustration. We curerntly support: |
|
|
|
- \[x\] [FID](https://github.com/mseitzer/pytorch-fid) & [CLIP-Score](https://github.com/openai/CLIP) |
|
- \[x\] [GenEval](https://github.com/djghosh13/geneval) |
|
- \[x\] [DPG-Bench](https://github.com/TencentQQGYLab/ELLA) |
|
- \[x\] [ImageReward](https://github.com/THUDM/ImageReward/tree/main) |
|
|
|
### 0. Install corresponding env for GenEval and DPG-Bench |
|
|
|
Make sure you can activate the following envs: |
|
|
|
- `conda activate geneval`([GenEval](https://github.com/djghosh13/geneval)) |
|
- `conda activate dpg`([DGB-Bench](https://github.com/TencentQQGYLab/ELLA)) |
|
|
|
### 0.1 Prepare data. |
|
|
|
Metirc FID & CLIP-Score on [MJHQ-30K](https://huggingface.co/datasets/playgroundai/MJHQ-30K) |
|
|
|
```python |
|
from huggingface_hub import hf_hub_download |
|
|
|
hf_hub_download( |
|
repo_id="playgroundai/MJHQ-30K", |
|
filename="mjhq30k_imgs.zip", |
|
local_dir="data/test/PG-eval-data/MJHQ-30K/", |
|
repo_type="dataset" |
|
) |
|
``` |
|
|
|
Unzip mjhq30k_imgs.zip into its per-category folder structure. |
|
|
|
``` |
|
data/test/PG-eval-data/MJHQ-30K/imgs/ |
|
βββ animals |
|
βββ art |
|
βββ fashion |
|
βββ food |
|
βββ indoor |
|
βββ landscape |
|
βββ logo |
|
βββ people |
|
βββ plants |
|
βββ vehicles |
|
``` |
|
|
|
### 0.2 Prepare checkpoints |
|
|
|
```bash |
|
huggingface-cli download Efficient-Large-Model/Sana_1600M_1024px --repo-type model --local-dir ./output/Sana_1600M_1024px --local-dir-use-symlinks False |
|
``` |
|
|
|
### 1. directly \[Inference and Metric\] a .pth file |
|
|
|
```bash |
|
# We provide four scripts for evaluating metrics: |
|
fid_clipscore_launch=scripts/bash_run_inference_metric.sh |
|
geneval_launch=scripts/bash_run_inference_metric_geneval.sh |
|
dpg_launch=scripts/bash_run_inference_metric_dpg.sh |
|
image_reward_launch=scripts/bash_run_inference_metric_imagereward.sh |
|
|
|
# Use following format to metric your models: |
|
# bash $correspoinding_metric_launch $your_config_file_path $your_relative_pth_file_path |
|
|
|
# example |
|
bash $geneval_launch \ |
|
configs/sana_config/1024ms/Sana_1600M_img1024.yaml \ |
|
output/Sana_1600M_1024px/checkpoints/Sana_1600M_1024px.pth |
|
``` |
|
|
|
### 2. \[Inference and Metric\] a list of .pth files using a txt file |
|
|
|
You can also write all your pth files of a job in one txt file, eg. [model_paths.txt](../model_paths.txt) |
|
|
|
```bash |
|
# Use following format to metric your models, gathering in a txt file: |
|
# bash $correspoinding_metric_launch $your_config_file_path $your_txt_file_path_containing_pth_path |
|
|
|
# We suggest follow the file tree structure in our project for robust experiment |
|
# example |
|
bash scripts/bash_run_inference_metric.sh \ |
|
configs/sana_config/1024ms/Sana_1600M_img1024.yaml \ |
|
asset/model_paths.txt |
|
``` |
|
|
|
### 3. You will get the following data tree. |
|
|
|
``` |
|
output |
|
βββyour_job_name/ (everything will be saved here) |
|
β βββconfig.yaml |
|
β βββtrain_log.log |
|
|
|
β βββcheckpoints (all checkpoints) |
|
β β βββepoch_1_step_6666.pth |
|
β β βββepoch_1_step_8888.pth |
|
β β βββ...... |
|
|
|
β βββvis (all visualization result dirs) |
|
β β βββvisualization_file_name |
|
β β β βββxxxxxxx.jpg |
|
β β β βββ...... |
|
β β βββvisualization_file_name2 |
|
β β β βββxxxxxxx.jpg |
|
β β β βββ...... |
|
β βββ...... |
|
|
|
β βββmetrics (all metrics testing related files) |
|
β β βββmodel_paths.txt Optional(π)(relative path of testing ckpts) |
|
β β β βββoutput/your_job_name/checkpoings/epoch_1_step_6666.pth |
|
β β β βββoutput/your_job_name/checkpoings/epoch_1_step_8888.pth |
|
β β βββfid_img_paths.txt Optional(π)(name of testing img_dir in vis) |
|
β β β βββvisualization_file_name |
|
β β β βββvisualization_file_name2 |
|
β β βββcached_img_paths.txt Optional(π) |
|
β β βββ...... |
|
``` |
|
|