πPaper | π Github | π€CapRL Collection | π€Daily Paper
| Series | Models & Resources |
|---|---|
| CapRL 2.0 Series | π€ CapRL-Qwen3VL-2B | π€ CapRL-Qwen3VL-4B | π¦ CapRL-Qwen3VL-2B-GGUF | π¦ CapRL-Qwen3VL-4B-GGUF | πCapRL-Qwen3VL-4B Space |
| CapRL 1.0 Series | π€ CapRL-Qwen2.5VL-3B | π€ CapRL-InternVL3.5-8B |π CapRL-QA-75K Dataset | π CapRL-2M Dataset | π¦ CapRL-3B-GGUF | π¦ CapRL-3B-i1-GGUF | πCapRL-Qwen2.5VL-3B Space |
We are excited to release the CapRL 2.0 series: CapRL-Qwen3VL-2B and CapRL-Qwen3VL-4B. These models feature fewer parameters while delivering even more powerful captioning performance. Notably, CapRL-Qwen3VL-2B outperforms both CapRL-Qwen2.5VL-3B and Qwen2.5VL-72B in captioning tasks. This leap in efficiency is driven by our upgraded training recipe, which includes a more rigorous QA data filter and a significantly more diverse image dataset. We welcome everyone to try them out!
When selecting between the available CapRL models, it's essential to consider the trade-off between performance and computational cost. This guide will help you choose the most suitable model for your specific needs:
| Model | Parameters | Strength |
|---|---|---|
| π€CapRL-3B | 3B | Speed, Efficiency |
| π€CapRL-InternVL3.5-8B | 8B | High Performance, Advanced Captioning Ability |
Now you can try out CapRL-3B with your own imagesπ¨!Β Β Β Β β‘οΈΒ Β Β Β πCapRL Space
We are working on even stronger base models and upgrading our training recipe β stay tuned!
Based on the same recipe as CapRL-3B, we used InternVL3.5-8B as the policy model and obtained CapRL-InternVL3.5-8B through CapRL.
CapRL is the first study of applying Reinforcement Learning with Verifiable Rewards for the open-ended and subjective image captioning task. Unlike traditional Supervised Fine-Tuning, which can lead to models memorizing a limited set of annotated captions, our method allows the model to explore and generate a broader range of creative and general descriptions. CapRL is a new training paradigm featuring a decoupled two-stage pipeline. The initial stage uses LVLMs to generate rich and accurate captions. Subsequently, the second stage evaluates caption quality by using a vision-only LLM to perform the QA task. We also created a specific QA curation pipeline to ensure the quality of the questions and answers used for the second stage.
By employing the CapRL training framework, initializing with the InternVL3.5-8B model, and using a carefully filtered 75K QA dataset as the training set, we obtained a highly capable captioner, CapRL-InternVL3.5-8B.
If you want to use CapRL-InternVL3.5-8B for captioning, you can directly follow the exact same inference approach as in InternVL-3.5-series.
We recommend using vLLM to speed up inference.
Run the command below to start an OpenAI-compatible API service:
vllm serve "/PATH/CapRL-InternVL3.5-8B" \
--trust-remote-code \
--tensor-parallel-size=1 \
--pipeline-parallel-size=1 \
--gpu_memory_utilization=0.95 \
--served-model-name=caprl \
--port 8000 \
--host 0.0.0.0
Then you can use the chat API as below: (see OpenAI API protocol document for more details):
import base64
from openai import OpenAI
# Set OpenAI's API key and API base to use vLLM's API server.
openai_api_key = "EMPTY"
openai_api_base = "http://localhost:8000/v1"
client = OpenAI(
api_key=openai_api_key,
base_url=openai_api_base,
)
image_path = "/path/to/local/image.png"
with open(image_path, "rb") as f:
encoded_image = base64.b64encode(f.read())
encoded_image_text = encoded_image.decode("utf-8")
base64_qwen = f"data:image;base64,{encoded_image_text}"
chat_response = client.chat.completions.create(
model="caprl",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{
"role": "user",
"content": [
{
"type": "image_url",
"image_url": {
"url": base64_qwen
},
},
{"type": "text", "text": "What is the text in the illustrate?"},
],
},
],
temperature=1.0,
max_tokens=max_tokens,
top_p=1.0,
extra_body={
"repetition_penalty": 1.0,
},
)
print("Chat response:", chat_response)
πPaper | π Github | π€CapRL Collection | π€Daily Paper
| Series | Models & Resources |
|---|---|
| CapRL 2.0 Series | π€ CapRL-Qwen3VL-2B | π€ CapRL-Qwen3VL-4B | π¦ CapRL-Qwen3VL-2B-GGUF | π¦ CapRL-Qwen3VL-4B-GGUF | πCapRL-Qwen3VL-4B Space |
| CapRL 1.0 Series | π€ CapRL-Qwen2.5VL-3B | π€ CapRL-InternVL3.5-8B |π CapRL-QA-75K Dataset | π CapRL-2M Dataset | π¦ CapRL-3B-GGUF | π¦ CapRL-3B-i1-GGUF | πCapRL-Qwen2.5VL-3B Space |
We are excited to release the CapRL 2.0 series: CapRL-Qwen3VL-2B and CapRL-Qwen3VL-4B. These models feature fewer parameters while delivering even more powerful captioning performance. Notably, CapRL-Qwen3VL-2B outperforms both CapRL-Qwen2.5VL-3B and Qwen2.5VL-72B in captioning tasks. This leap in efficiency is driven by our upgraded training recipe, which includes a more rigorous QA data filter and a significantly more diverse image dataset. We welcome everyone to try them out!
When selecting between the available CapRL models, it's essential to consider the trade-off between performance and computational cost. This guide will help you choose the most suitable model for your specific needs:
| Model | Parameters | Strength |
|---|---|---|
| π€CapRL-3B | 3B | Speed, Efficiency |
| π€CapRL-InternVL3.5-8B | 8B | High Performance, Advanced Captioning Ability |
Now you can try out CapRL-3B with your own imagesπ¨!Β Β Β Β β‘οΈΒ Β Β Β πCapRL Space
We are working on even stronger base models and upgrading our training recipe β stay tuned!
Based on the same recipe as CapRL-3B, we used InternVL3.5-8B as the policy model and obtained CapRL-InternVL3.5-8B through CapRL.
CapRL is the first study of applying Reinforcement Learning with Verifiable Rewards for the open-ended and subjective image captioning task. Unlike traditional Supervised Fine-Tuning, which can lead to models memorizing a limited set of annotated captions, our method allows the model to explore and generate a broader range of creative and general descriptions. CapRL is a new training paradigm featuring a decoupled two-stage pipeline. The initial stage uses LVLMs to generate rich and accurate captions. Subsequently, the second stage evaluates caption quality by using a vision-only LLM to perform the QA task. We also created a specific QA curation pipeline to ensure the quality of the questions and answers used for the second stage.
By employing the CapRL training framework, initializing with the InternVL3.5-8B model, and using a carefully filtered 75K QA dataset as the training set, we obtained a highly capable captioner, CapRL-InternVL3.5-8B.
If you want to use CapRL-InternVL3.5-8B for captioning, you can directly follow the exact same inference approach as in InternVL-3.5-series.
We recommend using vLLM to speed up inference.
Run the command below to start an OpenAI-compatible API service:
vllm serve "/PATH/CapRL-InternVL3.5-8B" \
--trust-remote-code \
--tensor-parallel-size=1 \
--pipeline-parallel-size=1 \
--gpu_memory_utilization=0.95 \
--served-model-name=caprl \
--port 8000 \
--host 0.0.0.0
Then you can use the chat API as below: (see OpenAI API protocol document for more details):
import base64
from openai import OpenAI
# Set OpenAI's API key and API base to use vLLM's API server.
openai_api_key = "EMPTY"
openai_api_base = "http://localhost:8000/v1"
client = OpenAI(
api_key=openai_api_key,
base_url=openai_api_base,
)
image_path = "/path/to/local/image.png"
with open(image_path, "rb") as f:
encoded_image = base64.b64encode(f.read())
encoded_image_text = encoded_image.decode("utf-8")
base64_qwen = f"data:image;base64,{encoded_image_text}"
chat_response = client.chat.completions.create(
model="caprl",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{
"role": "user",
"content": [
{
"type": "image_url",
"image_url": {
"url": base64_qwen
},
},
{"type": "text", "text": "What is the text in the illustrate?"},
],
},
],
temperature=1.0,
max_tokens=max_tokens,
top_p=1.0,
extra_body={
"repetition_penalty": 1.0,
},
)
print("Chat response:", chat_response)