xiaoliux/AIGVE-MACS

Model

AIGVE-MACS: Unified Multi-Aspect Commenting and Scoring Model for AI-Generated Video Evaluation

3

8 commits

1 linked in READMEs

updated Jul 8, 2025

See the code

README

AIGVE-MACS: Unified Multi-Aspect Commenting and Scoring Model for AI-Generated Video Evaluation

πŸ” Introduction

This repository contains the AIGVE-MACS model, a unified model for AI-Generated Video Evaluation (AIGVE), as presented in the paper AIGVE-MACS: Unified Multi-Aspect Commenting and Scoring Model for AI-Generated Video Evaluation. AIGVE-MACS is a unified Vision-Language Model (VLM) for evaluating AI-generated videos. It produces both numerical scores (from 0 to 5) and natural language justifications across 9 human-aligned aspects of video quality:

MetricDescription
Technical QualityAssesses the technical aspects of the video, including whether the resolution is sufficient for object recognition, whether the colors are natural, and whether there is an absence of noise or artifacts.
DynamicMeasures the extent of pixel changes throughout the video, focusing on significant object or camera movements and changes in environmental factors such as daylight, weather, or seasons.
ConsistencyEvaluates whether objects in the video maintain consistent properties, avoiding glitches, flickering, or unexpected changes.
PhysicsDetermines if the scene adheres to physical laws, ensuring that object behaviors and interactions are realistic and aligned with real-world physics.
Element PresenceChecks if all objects mentioned in the instructions are present in the video. The score is based on the proportion of objects that are correctly included.
Element QualityAssesses the realism and fidelity of objects in the video, awarding higher scores for detailed, natural, and visually appealing appearances.
Action/Interaction PresenceEvaluates whether all actions and interactions described in the instructions are accurately represented in the video.
Action/Interaction QualityMeasures the naturalness and smoothness of actions and interactions, with higher scores for those that are realistic, lifelike, and seamlessly integrated into the scene.
OverallReflects the comprehensive quality of the video based on all metrics, allowing raters to incorporate their subjective preferences into the evaluation.

πŸš€ Quickstart

Installation

pip install transformers accelerate
pip install qwen-vl-utils

Example Usage

from transformers import AutoProcessor
from models import Qwen2_5_VLForConditionalGeneration
import torch
from qwen_vl_utils import process_vision_info

# Load model and processor
model = Qwen2_5_VLForConditionalGeneration.from_pretrained(
    "xiaoliux/AIGVE-MACS", 
    torch_dtype=torch.bfloat16, 
    attn_implementation="flash_attention_2"
).to("cuda:0")

processor = AutoProcessor.from_pretrained("xiaoliux/AIGVE-MACS", use_fast=True)

# Compose input message
def get_user_message(video_frames, prompt):
    messages = [
            {
                "role": "user",
                "content": [
                    {
                        "type": "video",
                        "resized_height": 480,
                        "resized_width": 854,
                        'fps': 1,
                        "video": video_frames,
                    },
                    {
                        "type": "text",
                        "text": "You are an expert in evaluating AI-Generated Videos, you evaluate videos in the following 9 aspects: "
                                "1. technical_quality: including whether the resolution is sufficient for object recognition, whether the colors are natural, and whether there is an absence of noise or artifacts. "
                                "2. dynamic: the extent of pixel changes throughout the video, focusing on significant object or camera movements and changes in environmental factors such as daylight, weather, or seasons. "
                                "3. consistency: whether objects in the video maintain consistent properties, avoiding glitches, flickering, or unexpected changes." 
                                "4. physics: Determines if the scene adheres to physical laws." 
                                "5. element_presentence: Checks if all objects mentioned in the instructions are present in the video. "
                                "6. element_quality: Assesses the realism and fidelity of objects in the video, awarding higher scores for detailed, natural, and visually appealing appearances. "
                                "7. action_presentence: Evaluates whether all actions and interactions described in the instructions are accurately represented in the video. "
                                "8. action_quality: Measures the naturalness and smoothness of actions and interactions, with higher scores for those that are realistic, lifelike, and seamlessly integrated into the scene." 
                                "9. overall: Reflects the comprehensive quality of the video based on all metrics. "
                                "The score can be chosen from [0, 5] with whole numbers. You should also include the comment for each score. "
                                "Please output as a JSON."
                                f"The video instruction is: {prompt}"
                    },
                ],
            },
        ]
    return messages

# Example inputs
video_frames = ["/path/to/frame1.png", "/path/to/frame2.png", ...]
prompt = "A tiger runs across a snowy field while snowflakes fall."

messages = get_user_message(video_frames, prompt)
text = processor.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)

image_inputs, video_inputs, video_kwargs = process_vision_info(messages, return_video_kwargs=True)

inputs = processor(
    text=[text],
    images=image_inputs,
    videos=video_inputs,
    padding=True,
    return_tensors="pt",
    **video_kwargs,
).to("cuda:0")

# Inference
generated_ids = model.generate(**inputs, max_new_tokens=1500)
output_text = processor.batch_decode(
    [out[len(inp):] for inp, out in zip(inputs.input_ids, generated_ids)],
    skip_special_tokens=True
)[0]

print("Evaluation Result:\n", output_text)

πŸ“ Output Format

{
  "technical_quality": {"score": 5, "comment": "..."},
  "dynamic": {"score": 4, "comment": "..."},
  "consistency": {"score": 5, "comment": "..."},
  ...
  "overall": {"score": 4, "comment": "..."}
}

πŸ“Š Main Results on AIGVE-BENCH 2

πŸ“ˆ Score Correlation (Spearman’s ρ ↑)

MethodTQDyCSPhyEPEQAPAQORAVG
GPT-4o34.717.0518.1220.2823.1030.4736.5731.5838.5726.72
GPT-4.136.495.8126.6819.8727.2228.7732.7520.2229.9825.31
Qwen2.5-VL8.774.001.24-6.019.1910.1918.740.729.596.27
VideoLLaMA315.9419.4411.7013.21-3.1312.2713.61-0.6911.5810.44
AIGVE-MACS40.6057.3161.4964.3640.3240.8144.3160.7159.8852.20

TQ: Technical Quality, Dy: Dynamics, CS: Consistency, Phy: Physics
EP/EQ: Element Presence/Quality, AP/AQ: Action Presence/Quality, OR: Overall


πŸ’¬ Comment Generation Quality

MethodROUGE-1 ↑ROUGE-L ↑BERTScore ↑UniEval-Fact ↑G-Eval ↑
GPT-4o18.3015.8674.9040.842.10
GPT-4.115.8012.9473.9943.992.10
Qwen2.5-VL17.9515.3174.3142.322.37
VideoLLaMA319.9917.6775.3540.212.18
AIGVE-MACS49.5038.0085.8757.043.42

πŸ“š Citation

@article{liu2025aigvemacs,
  title={AIGVE-MACS: Unified Multi-Aspect Commenting and Scoring Model for AI-Generated Video Evaluation},
  author={Xiao Liu and Jiawei Zhang},
  journal={arXiv preprint arXiv:2507.01255},
  year={2025}
}

πŸ”— Additional Resources

endpoints_compatible
image-text-to-text
qwen2_5_vl
safetensors
text-generation-inference
transformers
video-text-to-text

Contributors

xiaoliux

7 commits

nielsr

1 commits

xiaoliux/AIGVE-MACS

Model

AIGVE-MACS: Unified Multi-Aspect Commenting and Scoring Model for AI-Generated Video Evaluation

3

8 commits

1 linked in READMEs

updated Jul 8, 2025

See the code

README

AIGVE-MACS: Unified Multi-Aspect Commenting and Scoring Model for AI-Generated Video Evaluation

πŸ” Introduction

This repository contains the AIGVE-MACS model, a unified model for AI-Generated Video Evaluation (AIGVE), as presented in the paper AIGVE-MACS: Unified Multi-Aspect Commenting and Scoring Model for AI-Generated Video Evaluation. AIGVE-MACS is a unified Vision-Language Model (VLM) for evaluating AI-generated videos. It produces both numerical scores (from 0 to 5) and natural language justifications across 9 human-aligned aspects of video quality:

MetricDescription
Technical QualityAssesses the technical aspects of the video, including whether the resolution is sufficient for object recognition, whether the colors are natural, and whether there is an absence of noise or artifacts.
DynamicMeasures the extent of pixel changes throughout the video, focusing on significant object or camera movements and changes in environmental factors such as daylight, weather, or seasons.
ConsistencyEvaluates whether objects in the video maintain consistent properties, avoiding glitches, flickering, or unexpected changes.
PhysicsDetermines if the scene adheres to physical laws, ensuring that object behaviors and interactions are realistic and aligned with real-world physics.
Element PresenceChecks if all objects mentioned in the instructions are present in the video. The score is based on the proportion of objects that are correctly included.
Element QualityAssesses the realism and fidelity of objects in the video, awarding higher scores for detailed, natural, and visually appealing appearances.
Action/Interaction PresenceEvaluates whether all actions and interactions described in the instructions are accurately represented in the video.
Action/Interaction QualityMeasures the naturalness and smoothness of actions and interactions, with higher scores for those that are realistic, lifelike, and seamlessly integrated into the scene.
OverallReflects the comprehensive quality of the video based on all metrics, allowing raters to incorporate their subjective preferences into the evaluation.

πŸš€ Quickstart

Installation

pip install transformers accelerate
pip install qwen-vl-utils

Example Usage

from transformers import AutoProcessor
from models import Qwen2_5_VLForConditionalGeneration
import torch
from qwen_vl_utils import process_vision_info

# Load model and processor
model = Qwen2_5_VLForConditionalGeneration.from_pretrained(
    "xiaoliux/AIGVE-MACS", 
    torch_dtype=torch.bfloat16, 
    attn_implementation="flash_attention_2"
).to("cuda:0")

processor = AutoProcessor.from_pretrained("xiaoliux/AIGVE-MACS", use_fast=True)

# Compose input message
def get_user_message(video_frames, prompt):
    messages = [
            {
                "role": "user",
                "content": [
                    {
                        "type": "video",
                        "resized_height": 480,
                        "resized_width": 854,
                        'fps': 1,
                        "video": video_frames,
                    },
                    {
                        "type": "text",
                        "text": "You are an expert in evaluating AI-Generated Videos, you evaluate videos in the following 9 aspects: "
                                "1. technical_quality: including whether the resolution is sufficient for object recognition, whether the colors are natural, and whether there is an absence of noise or artifacts. "
                                "2. dynamic: the extent of pixel changes throughout the video, focusing on significant object or camera movements and changes in environmental factors such as daylight, weather, or seasons. "
                                "3. consistency: whether objects in the video maintain consistent properties, avoiding glitches, flickering, or unexpected changes." 
                                "4. physics: Determines if the scene adheres to physical laws." 
                                "5. element_presentence: Checks if all objects mentioned in the instructions are present in the video. "
                                "6. element_quality: Assesses the realism and fidelity of objects in the video, awarding higher scores for detailed, natural, and visually appealing appearances. "
                                "7. action_presentence: Evaluates whether all actions and interactions described in the instructions are accurately represented in the video. "
                                "8. action_quality: Measures the naturalness and smoothness of actions and interactions, with higher scores for those that are realistic, lifelike, and seamlessly integrated into the scene." 
                                "9. overall: Reflects the comprehensive quality of the video based on all metrics. "
                                "The score can be chosen from [0, 5] with whole numbers. You should also include the comment for each score. "
                                "Please output as a JSON."
                                f"The video instruction is: {prompt}"
                    },
                ],
            },
        ]
    return messages

# Example inputs
video_frames = ["/path/to/frame1.png", "/path/to/frame2.png", ...]
prompt = "A tiger runs across a snowy field while snowflakes fall."

messages = get_user_message(video_frames, prompt)
text = processor.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)

image_inputs, video_inputs, video_kwargs = process_vision_info(messages, return_video_kwargs=True)

inputs = processor(
    text=[text],
    images=image_inputs,
    videos=video_inputs,
    padding=True,
    return_tensors="pt",
    **video_kwargs,
).to("cuda:0")

# Inference
generated_ids = model.generate(**inputs, max_new_tokens=1500)
output_text = processor.batch_decode(
    [out[len(inp):] for inp, out in zip(inputs.input_ids, generated_ids)],
    skip_special_tokens=True
)[0]

print("Evaluation Result:\n", output_text)

πŸ“ Output Format

{
  "technical_quality": {"score": 5, "comment": "..."},
  "dynamic": {"score": 4, "comment": "..."},
  "consistency": {"score": 5, "comment": "..."},
  ...
  "overall": {"score": 4, "comment": "..."}
}

πŸ“Š Main Results on AIGVE-BENCH 2

πŸ“ˆ Score Correlation (Spearman’s ρ ↑)

MethodTQDyCSPhyEPEQAPAQORAVG
GPT-4o34.717.0518.1220.2823.1030.4736.5731.5838.5726.72
GPT-4.136.495.8126.6819.8727.2228.7732.7520.2229.9825.31
Qwen2.5-VL8.774.001.24-6.019.1910.1918.740.729.596.27
VideoLLaMA315.9419.4411.7013.21-3.1312.2713.61-0.6911.5810.44
AIGVE-MACS40.6057.3161.4964.3640.3240.8144.3160.7159.8852.20

TQ: Technical Quality, Dy: Dynamics, CS: Consistency, Phy: Physics
EP/EQ: Element Presence/Quality, AP/AQ: Action Presence/Quality, OR: Overall


πŸ’¬ Comment Generation Quality

MethodROUGE-1 ↑ROUGE-L ↑BERTScore ↑UniEval-Fact ↑G-Eval ↑
GPT-4o18.3015.8674.9040.842.10
GPT-4.115.8012.9473.9943.992.10
Qwen2.5-VL17.9515.3174.3142.322.37
VideoLLaMA319.9917.6775.3540.212.18
AIGVE-MACS49.5038.0085.8757.043.42

πŸ“š Citation

@article{liu2025aigvemacs,
  title={AIGVE-MACS: Unified Multi-Aspect Commenting and Scoring Model for AI-Generated Video Evaluation},
  author={Xiao Liu and Jiawei Zhang},
  journal={arXiv preprint arXiv:2507.01255},
  year={2025}
}

πŸ”— Additional Resources

endpoints_compatible
image-text-to-text
qwen2_5_vl
safetensors
text-generation-inference
transformers
video-text-to-text

Contributors

xiaoliux

7 commits

nielsr

1 commits