Views
No views yet

<|coord|> then <|size|> then <|seg|>. The <|seg|> token acts as a mask query whose hidden state is projected and dotted with upsampled image features, producing a full-resolution binary mask without autoregressive mask generation.https://github.com/tiiuae/Falcon-Perceptiontiiuae/PBenchtiiuae/Falcon-OCR19-08-2026. It is obtained by reinforcement learning (GRPO) post-training with a simple set-matching reward (a Hungarian-matched count that penalizes false negatives and false positives). This improves recall in high-density scenes (up to 500 instances per image) and removes the need for NMS and coordinate deduplication, at no change to the architecture or tokenizer. For further details read https://arxiv.org/abs/2608.18881.1model = AutoModelForCausalLM.from_pretrained(
2 "tiiuae/Falcon-Perception",
3 revision="19-08-2026",
4 trust_remote_code=True,
5 device_map={"": "cuda:0"},
6)| Split | Falcon Perception | RL post-trained | Δ |
|---|---|---|---|
| L0 Simple objects | 63.7 | 64.9 | +1.1 |
| L1 Attribute | 63.8 | 64.2 | +0.5 |
| L2 OCR guided | 38.3 | 40.4 | +2.1 |
| L3 Spatial understanding | 53.4 | 54.7 | +1.3 |
| L4 Relation binding | 49.1 | 51.8 | +2.7 |
| Dense | 72.3 | 80.5 | +8.2 |
| Average | 56.8 | 59.4 | +2.6 |
1@article{chaybouti2026falcon,
2 title={Falcon Perception-HD: High Density Perception via Reinforcement Learning},
3 author={Chaybouti, Sofian and Dahou, Yasser and Huynh, Ngoc Dung and Alami, Reda and Kuehne, Hilde},
4 journal={arXiv preprint arXiv:2608.18881},
5 year={2026}
6}pip install "torch>=2.5" transformers pillow einops pycocotoolstorch.compile may build optimized kernels.1import torch
2from PIL import Image
3from transformers import AutoModelForCausalLM
4
5model = AutoModelForCausalLM.from_pretrained(
6 "tiiuae/falcon-perception",
7 trust_remote_code=True,
8 device_map={"": "cuda:0"},
9)
10
11image = Image.open("photo.jpg")
12preds = model.generate(image, "cat")[0]
13
14for p in preds:
15 print(p["xy"], p["hw"])1import numpy as np
2from pycocotools import mask as mask_utils
3
4for p in preds:
5 rle = p["mask_rle"]
6 # pycocotools expects bytes for counts
7 m = {"size": rle["size"], "counts": rle["counts"].encode("utf-8")}
8 mask = mask_utils.decode(m).astype(bool) # H x W
9 print(mask.shape, mask.sum())model.generate(images, queries, **kwargs)| Parameter | Type | Default | Description |
|---|---|---|---|
images | PIL.Image or list | required | Single image or list of images |
queries | str or list[str] | required | Query string(s), one per image |
max_new_tokens | int | 2048 | Maximum decoding steps |
min_dimension | int | 256 | Minimum image side after resize |
max_dimension | int | 1024 | Maximum image side after resize |
compile | bool | True | Run torch.compile on first call |
list[list[dict]], one list per image.1{
2 "xy": {"x": float, "y": float}, # center in normalized coordinates (0 to 1)
3 "hw": {"h": float, "w": float}, # size in normalized coordinates (0 to 1)
4 "mask_rle": {"counts": str, "size": [H, W]}, # COCO RLE at original resolution
5}<|coord|> then <|size|> then <|seg|> per instance<|seg|> token becomes a mask query and produces a full-resolution mask via dot product with upsampled image features1@article{bevli2026falcon,
2 title = {Falcon Perception},
3 author = {Bevli, Aviraj and Chaybouti, Sofian and Dahou, Yasser and Hacid, Hakim and Huynh, Ngoc Dung and Le Khac, Phuc H. and Narayan, Sanath and Para, Wamiq Reyaz and Singh, Ankit},
4 journal = {arXiv preprint arXiv:2603.27365},
5 year = {2026},
6 url = {https://arxiv.org/abs/2603.27365}
7}