Downloads · 30 days
17
9% of all-time downloads
BAAI-Agents/EgoActor-8b-Qwen3VL
EgoActor-8b-Qwen3VL is a machine learning model from BAAI-Agents. Use it for the machine learning task on the model card, and read the license before you ship it in a product. The card lists the license as apache-2.0.
EgoActor is a unified vision-language model designed to translate natural language instructions into precise spatial and temporal action sequences that control humanoid robots.
Downloads · 30 days
17
9% of all-time downloads
All-time downloads
199
Public
Parameters
8.8B
17.5 GB on disk
Likes
5
Public
Click a slice to open those files.
.safetensors17.5 GB · 100%
From the Hugging Face model README
EgoActor is a unified vision-language model designed to translate natural language instructions into precise spatial and temporal action sequences that control humanoid robots.
EgoActor is a unified vision-language model designed to translate natural language instructions into precise spatial and temporal action sequences that control humanoid robots. It combines perception, planning, and action execution by grounding instructions into egocentric, spatial-aware motor behaviors—including movement, manipulation, perception, and human interaction—bridging abstract task planning and concrete embodied control
EgoActor is intended for robotics and embodied AI research where:
Example tasks include:
Users (both direct and downstream) should be made aware of the risks, biases, and limitations of the model. More information is needed for further recommendations.
Use the code below to get started with the model.
This model is served using vLLM (v0.11.0) and supports multi-image vision–language inputs for embodied action prediction from egocentric robot observations.
Install the required vLLM version:
pip install vllm==0.11.0
Start the vLLM server with multi-modal support enabled:
vllm serve [model_name] \
--host 127.0.0.1 \
--port 8000 \
--max_model_len 6400 \
--chat-template-content-format auto \
--limit-mm-per-prompt.image 15 \
--served-model-name "vlm_agent"
The model is designed for first-person embodied robot perception and action planning. Use the following system prompt to initialize model behavior:
system_message = """You are a Vision Language Model specialized in processing the first person view images of embodied robots.
Your task is to analyze the provided image and respond to queries with answers. Focus on the spatial relations in the image and make the right decisions."""
The model predicts the next executable action sequence given:
Example query construction:
sample_data = {
"query": (
"Given the following instruction, a series of sampled historical observation "
"and recent observation image frames, predict a usable action sequence that "
"you should perform next. Output format: "
"'Turn [direction] [degrees] degrees; "
"Look [direction] [degrees] degrees; "
"Move [direction] [distance] meters; "
"[direction] sidewalk [distance] meters; "
"[manipulation action text]; "
"[interaction action text]; "
"Stop and no action'.\n\n"
"Your task is: " + instruction
)
}
Inputs are formatted as OpenAI-style chat messages with mixed text and image content. The following function constructs a complete multi-modal prompt including:
def sample_n_elements(my_list, n):
if n > len(my_list):
return my_list
if n <= 0:
return []
interval = len(my_list) / n
sampled_elements = []
for i in range(n):
index = int(round(i * interval))
if index < len(my_list):
sampled_elements.append(my_list[index])
return sampled_elements
def format_data_sft_with_step_and_hist(sample, system_message):
formatted_sample = [
{
"role": "system",
"content": [{"type": "text", "text": system_message}],
}
]
tmp_content = [
{"type": "text", "text": sample["query"] + "\n"},
{"type": "text", "text": "\nSampled Historical Observations:\n"},
]
sampled_historical_images = sample_n_elements(sample["historical_images"], 10)
for img in sampled_historical_images:
tmp_content.append({
"type": "image",
"image": "file://" + img.replace("resized", "shrinked"),
})
tmp_content.append({"type": "text", "text": "\nRecent Observations:\n"})
pos = 0
for image, action in sample["image_action_pairs"]:
if pos == 0:
formatted_sample.append({
"role": "user",
"content": tmp_content + [
{"type": "image", "image": "file://" + image},
{"type": "text", "text": "Next action: "},
],
})
else:
formatted_sample.append({
"role": "user",
"content": [
{"type": "image", "image": "file://" + image},
{"type": "text", "text": "Next action: "},
],
})
if action.lower() != "none":
formatted_sample.append({
"role": "assistant",
"content": [{"type": "text", "text": action}],
})
pos += 1
return formatted_sample
Refer to Section IV of the paper.
BibTeX:
@article{bai2026EgoActor,
title={{E}go{A}ctor: {G}rounding Task Planning into Spatial-aware Egocentric Actions for Humanoid Robots via Visual-Language Models},
author={Yu Bai and Mingming Yu and Chaojie Li and Ziyi Bai and Xinlong Wang and Börje F. Karlsson},
journal={arXiv: 2602.04515},
year={2026},
url={https://arxiv.org/abs/2602.04515}
}