Star 历史趋势
数据来源: GitHub API · 生成自 Stargazers.cn
README.md
WeChat Vision

WeVisOne-VL

Unified Visual Perception from Objects to Pixels

Project Page Paper WeVisOne-VL-2B WeVisOne-VL-4B 2B Demo 4B Demo License

English | 简体中文

WeVisOne-VL (WeChat Vision All-in-One) is a vision-language foundation model that unifies object-level perception (object detection, referring localization, counting, pointing, and OCR) and pixel-level perception (referring segmentation and promptable alpha matting) through structured next-token prediction and a lightweight 9.6M-parameter pixel decoder—enabling localization at any user-specified granularity from points and boxes to binary masks and continuous alpha mattes, while reliably rejecting absent-target queries.

Overview of WeVisOne-VL

✨ Highlights

  • 🎯 All-in-One: detection, referring, counting, pointing, OCR, segmentation and matting in a single model.
  • 🪶 Lightweight Pixel Decoder: a 9.6M-parameter decoder outputs masks and alpha mattes, with no SAM required.
  • 🚫 Reliable Rejection: returns None for absent targets instead of hallucinating.

📢 News

  • [2026-10] 🎮 The demo is ready to try: 2B / 4B.
  • [2026-10] 🔥🔥 We also open-sourced Mask2Alpha, the matting annotator used in the WeVisOne-VL Data Engine to turn binary masks into high-quality alpha mattes! Check out the mask2alpha branch.
  • [2026-10] 🎉 We release the technical report, model weights (2B & 4B), inference package, Cookbooks, and evaluation pipeline!

📝 TODO

  • Inference package and Cookbooks
  • Gradio web demo
  • Benchmark evaluation pipeline
  • Model weights (2B & 4B) on Hugging Face
  • Release our matting annotator
  • Fine-tuning code

🏆 Performance at a Glance

Headline numbers for WeVisOne-VL-4B against the strongest open baseline in each benchmark (Qwen3-VL / Qwen3.5 up to 9B, Rex-Omni, LocateAnything, and task-specific segmentation / matting models).

TaskBenchmarkMetricBest BaselineWeVisOne-VL-4B
📦 DetectionLVISF1 Mean ↑50.755.3
📦 Dense DetectionDense200F1 Mean ↑58.771.3
💬 ReferringRefCOCOg testF1 Mean ↑77.681.8
🚫 RejectionWeRef-BenchRej. Rate ↑73.096.4
🔢 CountingPixMo-Count testAcc ↑82.889.6
📍 PointingPointBenchAcc ↑69.971.9
🔤 OCRTotalTextF1 Mean ↑43.352.0
🎭 Referring Seg.ReasonSeg valgIoU ↑65.071.2
✂️ Box MattingP3M-500-NPMAD ↓15.47.3
✂️ Text MattingWeRefMat (Referring)MAD ↓22.49.8

📊 Full Benchmark Results (click each task to expand)

F1 for detection, referring and OCR is averaged over IoU thresholds 0.5:0.95 ("Mean"). Greedy decoding, ≤ 1,960 visual tokens per image.

Object Detection (F1 Mean)
MethodCOCOLVISDense200VisDrone
GroundingDINO-T56.638.833.138.5
Qwen3-VL-8B47.842.913.829.5
Qwen3.5-9B49.543.718.031.3
Rex-Omni-3B52.946.958.335.8
LocateAnything-3B54.750.758.739.9
WeVisOne-VL-2B55.253.361.440.4
WeVisOne-VL-4B57.155.371.344.7
Referring Object Detection (F1 Mean / Rejection Rate %)
MethodRefCOCOg testRefCOCOg RejWeRef MeanWeRef RejHumanRefRef-L4
Qwen3-VL-8B74.922.536.718.371.672.4
Qwen3.5-9B74.615.250.770.777.872.0
Rex-Omni-3B74.30.550.343.379.965.2
LocateAnything-3B77.60.651.773.078.774.3
WeVisOne-VL-2B78.250.273.292.977.475.1
WeVisOne-VL-4B81.867.478.796.480.778.1
Object Counting (Exact-match Accuracy %)
MethodCountQAPixMo-Count testCLOC testKubriCount testBMixCount test
Qwen3.5-9B41.680.422.419.17.0
Rex-Omni-3B37.671.922.318.811.4
LocateAnything-3B52.482.823.922.415.2
WeVisOne-VL-2B47.988.126.932.432.2
WeVisOne-VL-4B57.189.628.340.140.4
Object Pointing
MethodPointBenchPixMo-PointsCOCOLVISDense200VisDrone
Qwen3-VL-8B62.572.277.567.742.246.4
Rex-Omni-3B69.972.980.570.882.558.9
LocateAnything-3B56.968.683.976.687.660.4
WeVisOne-VL-2B62.973.285.878.983.262.4
WeVisOne-VL-4B71.974.785.479.587.064.4
OCR — Text Grounding & Recognition (F1 Mean)
MethodHierTextICDAR2015TotalTextSROIE
PP-OCRv5 (specialist)30.525.625.758.6
Qwen3-VL-8B25.727.135.443.3
Rex-Omni-3B28.028.140.644.8
LocateAnything-3B29.424.143.340.3
WeVisOne-VL-2B30.542.642.562.1
WeVisOne-VL-4B39.047.852.068.1
Referring Segmentation (cIoU; ReasonSeg uses gIoU)
MethodRefCOCO testARefCOCO+ testARefCOCOg testReasonSeg valRef-ZOM cIoURef-ZOM Rej
LISA-13B (ft)78.870.270.565.0--
GSVA-7B78.969.673.350.566.641.9
UniPixel-7B83.080.177.160.562.90.3
Youtu-VL-4B82.079.676.6-61.01.3
WeVisOne-VL-2B82.979.074.960.973.462.4
WeVisOne-VL-4B84.581.177.871.272.286.0
Promptable Matting (MAD ×10³ ↓)
MethodP3M-500-NP (Box)AM-2K (Box)PPM-100 (Box)WeRefMat (Category)WeRefMat (Referring)
Matte Anything24.413.210.5--
SAM2-Matting (SAM3)15.412.110.870.851.9
Qwen3.5-9B + SAM2-Matting---77.822.4
WeVisOne-VL-2B6.65.75.317.715.8
WeVisOne-VL-4B7.35.06.116.49.8

See the technical report for all splits and metrics, and evaluation/README.md to reproduce the public benchmarks.

🏗️ How It Works

1. Data Engine. A knowledge-graph-driven engine discovers concepts, localizes them with complementary experts verified by a VLM, and extends the verified boxes to masks and alpha mattes. Over 100M images are annotated this way.

Data engine

2. Unified Task Formulation. Every task is written as structured text, with coordinate tokens <0> … <1000> for boxes and points, None for absent targets, and an <OBJ> token after each box for pixel-level outputs.

Unified task formulation

3. Model Architecture. A 9.6M-parameter pixel decoder combines the hidden state of each <OBJ> token, its predicted box and multi-level Qwen3-VL ViT features to predict a full-resolution mask or alpha matte.

Pixel decoder architecture

🚀 Quick Start

Installation

git clone https://github.com/Tencent/WeVisOne-VL.git && cd WeVisOne-VL
conda create -n wevisone-vl python=3.10 -y && conda activate wevisone-vl
pip install -r requirements.txt && pip install -v -e .

Inference

from PIL import Image
from wevisone_vl import WeVisOneVL
from wevisone_vl.visualization import save_result

model = WeVisOneVL("tencent/WeVisOne-VL-4B", backend="transformers")  # or backend="vllm"
# model = WeVisOneVL("tencent/WeVisOne-VL-2B", backend="transformers")  # Use 2B instead

# Object-level: open-vocabulary detection
image = Image.open("demo/examples/images/livingroom.jpg").convert("RGB")
result = model.predict(image, task="detection", query=["sofa", "pillow", "coffee table", "lamp"])
save_result("outputs/detection", image, result)

# Pixel-level: promptable alpha matting
image = Image.open("demo/examples/images/seabreeze.jpg").convert("RGB")
result = model.predict(image, task="matting", query="person")
save_result("outputs/matting", image, result)

Input · query="person"

Predicted alpha matte

Cutout

Supported Tasks

taskqueryOutput
📦detectioncategory listboxes
💬referringreferring expressionboxes or None
📍pointcategory / expressionpoints
🔢count_box / count_pointcategory / expressionboxes / points + count
🔤ocr / ocr_grounding– / text to findtext + boxes
🎭segmentationcategory / expressionboxes + binary masks
✂️mattingcategory / expressionboxes + alpha mattes

[!TIP] device ("auto", "cuda:0", "npu:0", "cpu"), dtype, min_pixels / max_pixels, and the usual decoding arguments (max_new_tokens, temperature, ...) are also available. The Cookbooks walk through each task in detail.

📓 Cookbooks

TutorialCovers
📦 Object-level pipelineDetection, Referring, Counting, Pointing
🔤 OCR pipelineOCR, Text Grounding
🎭 Pixel-level pipelineSegmentation, Matting

🎮 Gradio Demo

Try the hosted demo: 2B / 4B

Launch the demo locally:

CUDA_VISIBLE_DEVICES=0 python demo/app.py --model tencent/WeVisOne-VL-4B
# Or use 2B:
# CUDA_VISIBLE_DEVICES=0 python demo/app.py --model tencent/WeVisOne-VL-2B
More launch options
# vLLM backend on a custom port, with a public share link
CUDA_VISIBLE_DEVICES=0 python demo/app.py \
    --model tencent/WeVisOne-VL-4B --backend vllm \
    --server-name 0.0.0.0 --server-port 8080 --share

📊 Evaluation

See evaluation/README.md.

🖼️ Representative Visualizations

Side-by-side comparisons with strong baselines. Click a task to expand or collapse it.

Referring Detection — locating the objects described by a natural-language expression
Referring detection comparison
Box-prompted Matting — predicting the alpha matte of the target inside a given box
Box-prompted matting comparison
Text-prompted Matting — predicting the alpha matte of the target specified by a category name or referring expression
Text-prompted matting comparison
Object Detection — locating all instances of the given categories with boxes
Object detection comparison
Object Counting — counting the instances that match a category or expression
Object counting comparison
Object Pointing — marking each queried object with a point
Object pointing comparison
OCR — locating and recognizing text in the image
OCR comparison
Referring Segmentation — segmenting the objects described by a natural-language expression
Referring segmentation comparison

📜 License

Tencent-authored code in this repository is released under the Apache License 2.0. Third-party components keep their original licenses; please check the corresponding source files.

📖 Citation

If WeVisOne-VL is helpful to your work, please consider giving us a ⭐ and citing:

@article{liang2026wevisone,
  title={WeVisOne-VL: Unified Visual Perception from Objects to Pixels},
  author={Liang, Tianming and Pan, Junyi and Li, Yuxi and Fu, Canmiao and Huang, Zhipeng and Sun, Chong and Li, Chen and Lyu, Jing},
  journal={arXiv preprint arXiv:2610.31329},
  year={2026}
}

关于 About

WeVisOne-VL is a powerful VLM by the WeChat Vision Team at Tencent, unifying object-level and pixel-level perception from points and boxes to masks and alpha mattes.

语言 Languages

Jupyter Notebook97.7%
Python2.2%
Shell0.1%

提交活跃度 Commit Activity

代码提交热力图
过去 52 周的开发活跃度
3
Total Commits
峰值: 2次/周
Less
More