Skip to main content

UniPercept: Towards Unified Perceptual-Level Image Understanding across Aesthetics, Quality, Structure, and Texture

arXiv Website Model Dataset PyPI
Shuo Cao*, Jiayang Li*, Xiaohui Li, Yuandong Pu, Kaiwen Zhu, Yuanting Gao, Siqi Luo, Yi Xin, Qi Qin, Yu Zhou, Xiangyu Chen, Wenlong Zhang, Bin Fu, Yu Qiao, Yihao Liu†
University of Science and Technology of China   Shanghai AI Laboratory   Peking University
* Equal contribution   † Corresponding author

Dataset Distribution

⭐️ More Research:

🚀 News & Updates

  • [Jan 04, 2026] 📦 Package Release. We now support unipercept-reward as a standalone Python package! You can easily integrate perceptual scoring into your workflow via pip install unipercept-reward. Please refer to the Quick Start section for usage.

  • [Dec 29, 2025] 🔥 Official Release

    • Technical Report
    • Project Page
    • UniPercept-Bench: A comprehensive perceptual-level understanding benchmark for MLLMs, spanning Image Aesthetics Assessment (IAA), Image Quality Assessment (IQA), and Image Structure & Texture Assessment (ISTA) across Visual Rating (VR) and Visual Question Answering (VQA) tasks.
    • UniPercept: A powerful baseline MLLM specialized for perceptual image understanding, optimized via Domain-Adaptive Pre-Training and Task-Aligned RL.

🚀 Quick Start

Installation

Install the package via pip:

pip install unipercept-reward

Recommended: To enable Flash Attention for faster inference and lower memory usage, install with the flash extra:

pip install "unipercept-reward[flash]"

Basic Usage

Simple Inference Example

from unipercept_reward import UniPerceptRewardInferencer

# 1. Initialize the inferencer
# This will automatically download weights from HF: Thunderbolt215215/UniPercept
inferencer = UniPerceptRewardInferencer(device="cuda")

# 2. Prepare image paths
image_paths = [
    "test.png"
]

# 3. Get reward scores
# Returns a list of dictionaries containing scores for multiple dimensions
rewards = inferencer.reward(image_paths=image_paths)

# 4. Print results
for path, score in zip(image_paths, rewards):
    if score:
        print(f"Image: {path}")
        print(f"  ➤ Aesthetics (IAA): {score['iaa']:.4f}")
        print(f"  ➤ Quality (IQA):    {score['iqa']:.4f}")
        print(f"  ➤ Structure (ISTA): {score['ista']:.4f}")

You can also load a model from a local checkpoint path:

inferencer = UniPerceptRewardInferencer(
    model_path="/path/to/local/checkpoint",
    device="cuda"
)

Output Metrics

The .reward() method returns a dictionary with three perceptual metrics for each image. All scores are on a scale of 0 to 100, where higher scores indicate better performance/quality.

Key Metric Name Description
iaa Image Aesthetics Assessment Evaluates the aesthetic quality of the image.
iqa Image Quality Assessment Evaluates the quality.
ista Image Structure & Texture Assessment Evaluates the richness of structure and texture details.

🌟 Abstract

Multimodal large language models (MLLMs) have achieved remarkable progress in visual understanding tasks such as visual grounding, segmentation, and captioning. However, their ability to perceive perceptual-level image features remains limited. In this work, we present UniPercept-Bench, a unified framework for perceptual-level image understanding across three key domains: Aesthetics, Quality, and Structure and Texture. We establish a hierarchical definition system and construct large-scale datasets to evaluate perceptual-level image understanding. Based on this foundation, we develop a strong baseline UniPercept trained via Domain-Adaptive Pre-Training and Task-Aligned RL, enabling robust generalization across both Visual Rating (VR) and Visual Question Answering (VQA) tasks. UniPercept outperforms existing MLLMs on perceptual-level image understanding and can serve as a plug-and-play reward model for text-to-image generation. This work defines Perceptual-Level Image Understanding in the era of MLLMs and, through the introduction of a comprehensive benchmark together with a strong baseline, provides a solid foundation for advancing perceptual-level multimodal image understanding.

📊 UniPercept-Bench

We introduce UniPercept-Bench, a systematic benchmark for perceptual image understanding:

  • Comprehensive Coverage: Spans 3 domains (IAA, IQA, ISTA), 17 categories, and 43 criteria.
  • Perceptual Tasks: Supports both Visual Rating (VR) and Visual Question Answering (VQA).

Download: 🤗 UniPercept-Bench

Dataset Distribution

🔍 UniPercept

UniPercept is a strong baseline MLLM trained via Domain-Adaptive Pre-Training and Task-Aligned RL to handle both Visual Rating (VR) (continuous scoring) and Visual Question Answering (VQA) (reasoning).

🛠️ Setup

conda create -n unipercept python=3.10
conda activate unipercept
cd UniPercept
pip install -r requirements.txt

📉 Evaluation

Please download the UniPercept weights from 🤗 UniPercept and place them in the ckpt/ directory.

Visual Rating (VR)

Please download the datasets listed below and place them in the corresponding paths.

Dataset Domain Download Path
ArtiMuse-10K IAA 🤗 Link benchmark/VR/IAA/ArtiMuse-10K/image
AVA IAA Link benchmark/VR/IAA/AVA/image
TAD66K IAA Link benchmark/VR/IAA/TAD66K/image
FLICKR-AES IAA Link benchmark/VR/IAA/FLICKR-AES/image
KonIQ-10K IQA Link benchmark/VR/IQA/KonIQ-10K/image
SPAQ IQA Link benchmark/VR/IQA/SPAQ/image
KADID IQA Link benchmark/VR/IQA/KADID/image
PIPAL IQA Link benchmark/VR/IQA/PIPAL/image
ISTA-10K ISTA 🤗 Link benchmark/VR/ISTA/ISTA-10K/image

After setting up the data, you can configure the target datasets and devices in src/eval/eval_vr.sh. The results will be saved to results/vr.

cd UniPercept
bash src/eval/eval_vr.sh 

Visual Question Answering (VQA)

Please download UniPercept-Bench-VQA from 🤗 UniPercept-Bench and place them into benchmark/VQA. Then you can configure the target domain in src/eval/eval_vqa.sh. The evaluation results will be saved to results/vqa.

cd UniPercept
bash src/eval/eval_vqa.sh 

Interactive Image Perception

You can engage in comprehensive conversations with UniPercept regarding various aspects of an image, such as its aesthetics, quality, and structural details. An example is provided below, which you can customize based on your needs, or refer to InternVL for further implementation details.

cd UniPercept
bash src/eval/conversation.sh

🏆 Performance

UniPercept consistently outperforms proprietary models (e.g., GPT-4o, Gemini-2.5-Pro), leading open-source models (InternVL3, Qwen3-VL) and across all three perceptual domains (IAA, IQA, ISTA) and tasks (VR, VQA).

Performance on UniPercept-Bench-VR Performance on UniPercept-Bench-VR
Performance on UniPercept-Bench-VQA (IAA) Performance on UniPercept-Bench-VQA (IAA)
Performance on UniPercept-Bench-VQA (IQA) Performance on UniPercept-Bench-VQA (IQA)
Performance on UniPercept-Bench-VQA (ISTA) Performance on UniPercept-Bench-VQA (ISTA)

🎨 Applications

UniPercept As Reward

UniPercept can be used as a powerful reward model for post-training Text-to-Image (T2I) models. By integrating UniPercept rewards into the training of FLUX.1-dev, we observe significant improvements in aesthetic quality, structural richness, and prompt adherence.

Performance on UniPercept-Bench-VR

UniPercept As Metrics

UniPercept can serve as an perceptual-level metric that assesses the quality of outputs from any model producing images, covering three complementary dimensions: IAA, IQA, and ISTA.

Performance on UniPercept-Bench-VR Performance on UniPercept-Bench-VR

🖼️ UniPercept-Constructed Image Profiles

UniPercept performs comprehensive perceptual-level image analysis, delivering accurate visual ratings across the IAA, IQA, and ISTA dimensions, along with fine-grained multi-dimensional analytical outputs that together form a detailed image profile.

Performance on UniPercept-Bench-VR Performance on UniPercept-Bench-VR Performance on UniPercept-Bench-VR

✏️ Citation

If you find UniPercept useful for your research, please consider citing our work:

@misc{cao2025uniperceptunifiedperceptuallevelimage,
      title={UniPercept: Towards Unified Perceptual-Level Image Understanding across Aesthetics, Quality, Structure, and Texture}, 
      author={Shuo Cao and Jiayang Li and Xiaohui Li and Yuandong Pu and Kaiwen Zhu and Yuanting Gao and Siqi Luo and Yi Xin and Qi Qin and Yu Zhou and Xiangyu Chen and Wenlong Zhang and Bin Fu and Yu Qiao and Yihao Liu},
      year={2025},
      eprint={2512.21675},
      archivePrefix={arXiv},
      primaryClass={cs.CV},
      url={https://arxiv.org/abs/2512.21675}, 
}

@misc{cao2025artimusefinegrainedimageaesthetics,
      title={ArtiMuse: Fine-Grained Image Aesthetics Assessment with Joint Scoring and Expert-Level Understanding}, 
      author={Shuo Cao and Nan Ma and Jiayang Li and Xiaohui Li and Lihao Shao and Kaiwen Zhu and Yu Zhou and Yuandong Pu and Jiarui Wu and Jiaquan Wang and Bo Qu and Wenhai Wang and Yu Qiao and Dajuin Yao and Yihao Liu},
      year={2025},
      eprint={2507.14533},
      archivePrefix={arXiv},
      primaryClass={cs.CV},
      url={https://arxiv.org/abs/2507.14533}, 
}

Metadata

Release files for unipercept-reward 1.0.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for unipercept-reward 1.0.3
File Size Uploaded Provenance Actions
unipercept_reward-1.0.3.tar.gz 68.0 kB Without provenance Details for unipercept_reward-1.0.3.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for unipercept-reward 1.0.3
File Interpreter ABI Platform Actions
unipercept_reward-1.0.3-py3-none-any.whl Python 3 none any Details for unipercept_reward-1.0.3-py3-none-any.whl

Total release size: 139.3 kB

Release files / unipercept_reward-1.0.3.tar.gz

Download URL unipercept_reward-1.0.3.tar.gz
Size 68.0 kB
Tags Source
SHA-256 checksum
How to use checksums
34414fb8d94ae32cc87bdd1877d4c729cd480cae690cb2256b5b7b3fdb47dc23
BLAKE2b-256 checksum
How to use checksums
65e1b4a7354d100522fa40dd1a254f012d6f91b2caa72cec2abda3673fba7caa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.19

Release files / unipercept_reward-1.0.3-py3-none-any.whl

Download URL unipercept_reward-1.0.3-py3-none-any.whl
Size 71.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6a77a47f89c76426454b5eac096dc8926e984d3a9421cf7a8f0d1a85d9c728cc
BLAKE2b-256 checksum
How to use checksums
4d93052b8476955f9579c3e1d1c7ac89fb15e6ff96cd84ceb2ec559ab97a203c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.19

Security for unipercept-reward 1.0.3

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page