PAPO Model
Model Source
This is the official model released for our paper Perception-Aware Policy Optimization for Multimodal Reasoning.
Project Page: https://mikewangwzhl.github.io/PAPO/ Code: https://github.com/mikewangwzhl/PAPO
Abstract
Reinforcement Learning with Verifiable Rewards (RLVR) has proven to be a highly effective strategy for endowing Large Language Models (LLMs) with robust multi-step reasoning abilities. However, its design and optimizations remain tailored to purely textual domains, resulting in suboptimal performance when applied to multimodal reasoning tasks. In particular, we observe that a major source of error in current multimodal reasoning lies in the perception of visual inputs. To address this bottleneck, we propose Perception-Aware Policy Optimization (PAPO), a simple yet effective extension of GRPO that encourages the model to learn to perceive while learning to reason, entirely from internal supervision signals. Notably, PAPO does not rely on additional data curation, external reward models, or proprietary models. Specifically, we introduce the Implicit Perception Loss in the form of a KL divergence term to the GRPO objective, which, despite its simplicity, yields significant overall improvements (4.4%) on diverse multimodal benchmarks. The improvements are more pronounced, approaching 8.0%, on tasks with high vision dependency. We also observe a substantial reduction (30.5%) in perception errors, indicating improved perceptual capabilities with PAPO. We conduct comprehensive analysis of PAPO and identify a unique loss hacking issue, which we rigorously analyze and mitigate through a Double Entropy Loss. Overall, our work introduces a deeper integration of perception-aware supervision into RLVR learning objectives and lays the groundwork for a new RL framework that encourages visually grounded reasoning.
Model Version
PAPO - No RL_ref
Usage
You can use the model with the transformers
library for multimodal reasoning.
from transformers import AutoProcessor, AutoModelForCausalLM
from PIL import Image
import torch
import requests
from io import BytesIO
model_id = "PAPOGalaxy/PAPO" # Replace with the actual model ID if different
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id, torch_dtype=torch.bfloat16, device_map="auto")
# Load your image (replace with your image path or a URL)
image_url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/tasks/bee.JPG"
image = Image.open(BytesIO(requests.get(image_url).content)).convert("RGB")
prompt_text = "Describe this image in detail."
# The model expects a specific chat format including image tokens
chat_history = [
{"role": "user", "content": [{"type": "image"}, {"text": prompt_text}]},
]
# Apply the chat template and prepare inputs
inputs = processor.apply_chat_template(chat_history, return_tensors="pt", add_generation_prompt=True)
inputs = {k: v.to(model.device) for k, v in inputs.items()}
# Prepare pixel_values from the image
pixel_values = processor(images=image, return_tensors="pt").pixel_values.to(model.device)
inputs["pixel_values"] = pixel_values
# Generate output
with torch.no_grad():
outputs = model.generate(**inputs, max_new_tokens=200)
generated_text = processor.decode(outputs[0], skip_special_tokens=True)
print(generated_text)
Citation
@misc{wang2025perceptionawarepolicyoptimizationmultimodal,
title={Perception-Aware Policy Optimization for Multimodal Reasoning},
author={Zhenhailong Wang and Xuehang Guo and Sofia Stoica and Haiyang Xu and Hongru Wang and Hyeonjeong Ha and Xiusi Chen and Yangyi Chen and Ming Yan and Fei Huang and Heng Ji},
year={2025},
eprint={2507.06448},
archivePrefix={arXiv},
primaryClass={cs.CL},
url={https://arxiv.org/abs/2507.06448},
}
License
This project is licensed under the MIT License. See the LICENSE file for details.