suryadv/gpic-bcc-sam3-qwen38-27b
GPIC Bidirectional Concept Correspondence Data This release was generated by ConCor Training Data Generation. Each training example connects a text mask—a set of caption character spans—to an image mask made from one or more segmented instances. Disjoint co-referring spans can therefore share the same correspondence. The three training configs intentionally match the caption-row format used by UWGZQ/ConCor-1-Data. Our richer pipeline records and complete per-image dispositions… See the full description on the dataset page: https://huggingface.co/datasets/suryadv/gpic-bcc-sam3-qwen38-27b.
GPIC Bidirectional Concept Correspondence Data
This release was generated by ConCor Training Data Generation. Each training example connects a text mask—a set of caption character spans—to an image mask made from one or more segmented instances. Disjoint co-referring spans can therefore share the same correspondence.
The three training configs intentionally match the caption-row format used by UWGZQ/ConCor-1-Data. Our richer pipeline records and complete per-image dispositions are retained in the audit config.
Training configs
gpic_min_10: parseable captions with at least 10 final linked masks.gpic_1_to_9: parseable captions with 1–9 final linked masks.gpic_parseable_1_plus: the union of both, containing every parseable caption with at least one linked mask.audit_all_processed: every selected source image and its stage disposition, including upstream rejection, zero masks, unparseable output, and runtime/input-limit skips. It is metadata for inspection, not a ConCor training table.
Training rows are separated only by final linked-mask count. Nonfatal style or audit warnings do not change the split.
ConCor-compatible fields
Every public training row has exactly these columns:
Images are not embedded in the ConCor-compatible tables. Resolve image_key against the source GPIC sample. This follows ConCor-1’s portable annotation layout and avoids redistributing source imagery.
import json
import numpy as np
from datasets import load_dataset
from pycocotools import mask as mask_utils
row = load_dataset(
"suryadv/gpic-bcc-sam3-qwen38-27b",
"gpic_min_10",
split="train",
)[0]
groups = json.loads(row["groups_json"])
masks = json.loads(row["masks_json"])
for group in groups:
phrases = [row["caption"][start:end] for start, end in group["char_spans"]]
union = np.zeros((row["height"], row["width"]), dtype=bool)
for instance_id in group["instance_ids"]:
item = masks[str(instance_id)]
union |= mask_utils.decode(
{"size": item["size"], "counts": item["counts"].encode("ascii")}
).astype(bool)
print(phrases, union.sum())Quality note
This is generated research data, not perfect manual annotation. Our audits suggest roughly 80–90% of pairs are good. Deterministic checks are useful but sometimes wrong, and the Qwen auditor may cite an incorrect mask number even when its proposed rewrite helps. A light manual pass is recommended for high-stakes evaluation.
We found Qwen3.8-27B substantially stronger here than the older Qwen3.5 models we tried. More gates and prompt edits tended to fix one failure mode while creating another, so we froze the most stable prompt for this initial release rather than tuning past the point where manual cleanup is simpler. Suggestions are welcome.
Citation
The data format and task follow Vision-Language Grounding as Bidirectional Concept Correspondence:
@article{zhang2026concor,
title={Vision-Language Grounding as Bidirectional Concept Correspondence},
author={Zhang, Jieyu and Gao, Ziqi and Zettlemoyer, Luke and Krishna, Ranjay},
year={2026}
}Please also cite GPIC and SAM 3 as appropriate for your use.
