From dfa771b91092dd4205ede414387d4beb0e953f0c Mon Sep 17 00:00:00 2001 From: 24octopus Date: Thu, 9 Jul 2026 18:16:07 +0800 Subject: [PATCH 1/2] feat: add LocateAnything-3B visual grounding demo - python_demo: chat.cpp (5-input dynamic ViT, 1D RoPE, box/point output parsing, no multi-turn history), pipeline.py (LocateAnything processor, bicubic pos_emb, 2D RoPE cos/sin, merger_index), CMakeLists.txt - config/: HF model config + vit_pos_emb.npz (pos_emb weights) - README: compile/run for BM1684X/BM1688 PCIe+SoC, env notes, token calc - Verified on BM1684X/BM1688 PCIe and SoC; grounding boxes match HF reference Co-Authored-By: Claude Opus 4.8 --- models/LocateAnything/README.md | 175 + models/LocateAnything/config/README.md | 151 + .../LocateAnything/config/added_tokens.json | 1040 + .../benchmarks/bench50_hybrid_results.json | 2313 + .../benchmarks/bench50_hybrid_summary.txt | 10 + .../viz/compare_00_letter_letter_R.png | Bin 0 -> 16390 bytes .../viz/compare_02_letter_letter_X.png | Bin 0 -> 18599 bytes .../viz/compare_09_shape_crimson_hexagon.png | Bin 0 -> 13001 bytes .../viz/compare_10_shape_purple_triangle.png | Bin 0 -> 12462 bytes .../LocateAnything/config/chat_template.json | 4 + models/LocateAnything/config/config.json | 96 + .../config/configuration_locateanything.py | 131 + .../config/configuration_qwen2.py | 148 + .../LocateAnything/config/generate_utils.py | 504 + .../config/generation_config.json | 6 + .../config/image_processing_locateanything.py | 128 + .../LocateAnything/config/mask_magi_utils.py | 101 + .../LocateAnything/config/mask_sdpa_utils.py | 232 + models/LocateAnything/config/merges.txt | 151388 ++++++++++++++ models/LocateAnything/config/model_info.json | 55 + .../config/modeling_locateanything.py | 537 + .../LocateAnything/config/modeling_qwen2.py | 1738 + models/LocateAnything/config/modeling_vit.py | 615 + .../config/preprocessor_config.json | 24 + .../config/processing_locateanything.py | 678 + .../config/processor_config.json | 18 + .../config/special_tokens_map.json | 1053 + .../config/tokenizer_config.json | 9357 + models/LocateAnything/config/vit_pos_emb.npz | Bin 0 -> 18874636 bytes models/LocateAnything/config/vocab.json | 151645 +++++++++++++++ .../LocateAnything/python_demo/CMakeLists.txt | 20 + models/LocateAnything/python_demo/chat.cpp | 652 + models/LocateAnything/python_demo/pipeline.py | 478 + models/LocateAnything/python_demo/test.jpg | Bin 0 -> 155667 bytes 34 files changed, 323297 insertions(+) create mode 100644 models/LocateAnything/README.md create mode 100644 models/LocateAnything/config/README.md create mode 100644 models/LocateAnything/config/added_tokens.json create mode 100644 models/LocateAnything/config/benchmarks/bench50_hybrid_results.json create mode 100644 models/LocateAnything/config/benchmarks/bench50_hybrid_summary.txt create mode 100644 models/LocateAnything/config/benchmarks/viz/compare_00_letter_letter_R.png create mode 100644 models/LocateAnything/config/benchmarks/viz/compare_02_letter_letter_X.png create mode 100644 models/LocateAnything/config/benchmarks/viz/compare_09_shape_crimson_hexagon.png create mode 100644 models/LocateAnything/config/benchmarks/viz/compare_10_shape_purple_triangle.png create mode 100644 models/LocateAnything/config/chat_template.json create mode 100644 models/LocateAnything/config/config.json create mode 100644 models/LocateAnything/config/configuration_locateanything.py create mode 100644 models/LocateAnything/config/configuration_qwen2.py create mode 100644 models/LocateAnything/config/generate_utils.py create mode 100644 models/LocateAnything/config/generation_config.json create mode 100644 models/LocateAnything/config/image_processing_locateanything.py create mode 100644 models/LocateAnything/config/mask_magi_utils.py create mode 100644 models/LocateAnything/config/mask_sdpa_utils.py create mode 100644 models/LocateAnything/config/merges.txt create mode 100644 models/LocateAnything/config/model_info.json create mode 100644 models/LocateAnything/config/modeling_locateanything.py create mode 100644 models/LocateAnything/config/modeling_qwen2.py create mode 100644 models/LocateAnything/config/modeling_vit.py create mode 100644 models/LocateAnything/config/preprocessor_config.json create mode 100644 models/LocateAnything/config/processing_locateanything.py create mode 100644 models/LocateAnything/config/processor_config.json create mode 100644 models/LocateAnything/config/special_tokens_map.json create mode 100644 models/LocateAnything/config/tokenizer_config.json create mode 100644 models/LocateAnything/config/vit_pos_emb.npz create mode 100644 models/LocateAnything/config/vocab.json create mode 100644 models/LocateAnything/python_demo/CMakeLists.txt create mode 100644 models/LocateAnything/python_demo/chat.cpp create mode 100644 models/LocateAnything/python_demo/pipeline.py create mode 100644 models/LocateAnything/python_demo/test.jpg diff --git a/models/LocateAnything/README.md b/models/LocateAnything/README.md new file mode 100644 index 00000000..3181fd10 --- /dev/null +++ b/models/LocateAnything/README.md @@ -0,0 +1,175 @@ +# LocateAnything-3B + +本工程实现BM1684X/BM1688部署视觉定位大模型[LocateAnything-3B](https://huggingface.co/NVIDIA/LocateAnything-3B)。通过[TPU-MLIR](https://github.com/sophgo/tpu-mlir)编译器将模型转换成bmodel,并将其部署到PCIE环境,或者SoC环境。 + +该模型支持图片中的目标定位(visual grounding),输入自然语言描述 + 图片,输出目标的 bounding box 坐标或 point 点坐标。 + +本文包括如何编译bmodel,和如何在BM1684X/BM1688环境运行bmodel。如何编译bmodel环节可以省去,直接用以下链接下载已编译好的bmodel(W4BF16,seq2048,max_input_length 1280,静态文本+动态ViT): + +``` shell +# BM1684X (PCIe / SoC, 1 dev) +python3 -m dfss --url=open@sophgo.com:/ext_model_information/LLM/LLM-TPU/locateanything-3b-autoround-w4a16_w4bf16_seq2048_bm1684x_1dev_static_20260709_154503.bmodel +# BM1688 (PCIe / SoC, 2 core) +python3 -m dfss --url=open@sophgo.com:/ext_model_information/LLM/LLM-TPU/locateanything-3b-autoround-w4a16_w4bf16_seq2048_bm1688_2core_static_20260709_162252.bmodel +``` + +## 编译LLM模型 + +此处介绍如何将LLM编译成bmodel。 + +#### 1. 从Huggingface下载模型 + +``` shell +git lfs install +git clone https://huggingface.co/groxaxo/LocateAnything-3B-AutoRound-W4A16 +``` + +#### 2. 下载docker,启动容器 + +``` shell +docker pull sophgo/tpuc_dev:latest + +docker run --privileged --name myname1234 -v $PWD:/workspace -it sophgo/tpuc_dev:latest +``` +后文假定环境都在docker的`/workspace`目录。 + +#### 3. 下载`TPU-MLIR`代码并编译 + +``` shell +cd /workspace +git clone git@github.com:sophgo/tpu-mlir.git +cd tpu-mlir +source ./envsetup.sh +./build.sh +``` + +#### 4. 编译模型生成bmodel + +``` shell +llm_convert.py -m /workspace/LocateAnything-3B-AutoRound-W4A16 \ + -q w4bf16 -s 2048 --max_input_length 1280 \ + -c bm1684x --max_pixels 896,896 --num_device 1 \ + -o /workspace/locateanything_bmodel +``` + +编译参数说明: +- `-q w4bf16`:文本LLM使用W4A16量化(AutoRound),ViT保持BF16 +- `-s 2048`:最大序列长度(KV cache 总长,输入+输出) +- `--max_input_length 1280`:最大输入长度(图像 token + 文本 prompt),静态编译时 prefill padded 到此值 +- `--max_pixels 896,896`:最大图片分辨率(对应64×64 patch grid,1024 image token) +- `-c bm1684x` / `-c bm1688`:目标芯片。bm1688 默认使用 2 core +- ViT 始终动态编译,支持任意尺寸图片输入;文本模型默认静态(prefill padded 到 `max_input_length`)。如需动态文本(prefill 按实际 token 数,小图更快),编译时加 `--dynamic` + +## 编译与运行程序(python) + +支持 PCIE 和 SoC 环境。SoC 环境下直接在设备上编译库文件(链接设备自带的 libsophon)。 + +### 1. 环境准备 + +需要 python3.10 环境。如果不满足,参考[此文档](https://github.com/sophgo/sophon-demo/blob/release/docs/FAQ.md#13-se7%E5%AE%89%E8%A3%85python310)安装。 + +``` shell +sudo apt-get update +sudo apt-get install pybind11-dev + +pip3 install torch==2.6.0 torchvision==0.21.0 transformers==5.7.0 \ + pillow numpy lmdb opencv-python-headless +``` + +> 模型的 processor(trust_remote_code)顶层 import 了 `decord`/`lmdb`/`cv2`,transformers 5.7.0 的 `check_imports` 要求全部安装。`lmdb`、`opencv-python-headless` 在 aarch64 有 wheel;`decord` 在 aarch64(SoC)**无 PyPI wheel**: +> - PCIe(x86):`pip install decord` 即可。 +> - SoC(aarch64)仅图片部署时,可创建 stub 模块让 import 通过(video 路径不会执行): +> ``` shell +> SP=$(python3.10 -c "import site;print(site.getusersitepackages())") +> mkdir -p "$SP" && cat > "$SP/decord.py" <<'EOF' +> class VideoReader: +> def __init__(self,*a,**k): +> raise ImportError("decord not installed on aarch64; video unsupported") +> EOF +> ``` +> 需要视频则从源码编译 decord(依赖 ffmpeg-dev)。 + +### 2. 编译库文件 + +编译C++库文件,生成`chat.cpython*.so`: + +``` shell +cd python_demo +mkdir build +cd build && cmake .. && make && cp *cpython* .. && cd .. +``` + +> SoC 上若 cmake 选中了非 3.10 的默认 python(如 python3.8),显式指定: +> `cmake -DPython_EXECUTABLE=$(which python3.10) ..` + +### 3. 运行demo + +``` shell +python3 pipeline.py -m /path/to/model.bmodel -c ../config +``` + +交互模式下输入描述文本和图片路径即可获得 bounding box 坐标。也可用 `-p` 单次推理模式(见下方示例)。 + +### 运行示例 + +支持以下任务(prompt 模板与源模型一致): + +**单目标检测 / 短语定位** + +``` shell +python3 pipeline.py -m model.bmodel -c ../config -p "detect bed" --media_path test.jpg +# token 输出:bed<0><585><627><998> +# 坐标为归一化值 [0,1000],对应 (x1,y1,x2,y2) +# 解析输出(像素坐标):[bed] box (0,283)-(401,482) +``` + +**多目标检测 / 密集检测** + +对一个 `` 可输出多个 ``,支持多类别(用 `` 分隔): + +``` shell +python3 pipeline.py -m model.bmodel -c ../config \ + -p "Locate all the instances that matches the following description: bedwindowpillow" \ + --media_path test.jpg +# 解析输出(保留 ref 关联,bed 1 框、window 1 框、pillow 16 框): +# [bed] box (0,283)-(401,482) +# [window] box (259,36)-(394,226) +# [pillow] box (0,283)-(57,317) +# ...(共 16 个 pillow 框) +``` + +**点定位(Pointing)** + +输出 2 个坐标 (x, y): + +``` shell +python3 pipeline.py -m model.bmodel -c ../config -p "Point to: bed" --media_path test.jpg +# token 输出:bed<333><811> +# 解析输出(像素坐标):[bed] point (213,392) +``` + +> pipeline 会自动将归一化坐标 [0,1000] 解析为像素坐标(`parse_boxes`/`parse_points`/`parse_result`),并按 `` 分组打印。token 原文也会实时打印。 + +## 技术说明 + +- **量化方案**:文本 LLM(Qwen2.5-3B)使用 AutoRound W4A16 对称量化;ViT(MoonViT-SO-400M)和 MLP1 投影器保持 BF16 +- **推理模式**:当前仅支持 slow 模式(纯自回归),MTP 多 token 预测待后续实现 +- **批量推理**:暂不支持批量推理(源模型提供 `batch_infer.py` + `la_flash` 后端),当前仅单张图片串行推理 +- **ViT 动态编译**:支持任意图片尺寸,pipeline 动态计算 pos_emb(bicubic 插值)、2D RoPE cos/sin、merger_index 并传入 ViT bmodel + +### 图片 token 数计算 + +图片先按 14×14 切 patch,再 2×2 空间合并(merge),因此每 28×28 像素块对应 1 个 image token。processor 会将图片 resize 到满足 `max_pixels` 与每维 28 像素对齐(`merge_kernel_size × patch_size = 2 × 14`)的尺寸,再计算 grid。 + +- 公式:`image_tokens = (grid_h × grid_w) / 4`,其中 `grid_h = resized_H / 14`、`grid_w = resized_W / 14` +- 等价地:`image_tokens ≈ 图片像素数 / 784` +- 另有 2 个包装 token(``、``)将 image token 包住 +- `max_pixels 896,896` 时上限为 **1024 个 image token** + +| 图片尺寸 | grid (h×w) | image token 数 | +|---------|-----------|---------------| +| 640×483 | 36×46 | 414 | +| 896×896 | 64×64 | 1024 | + +序列长度 `-s 2048`(KV cache 总长)需容纳:image token + 文本 prompt + 生成的回答。`--max_input_length 1280` 限制输入上限(图像 1024 + 文本),输出预算 = 2048 − 1280 = 768 token;大图会占用更多输入预算,留给生成回答的空间更少。 + diff --git a/models/LocateAnything/config/README.md b/models/LocateAnything/config/README.md new file mode 100644 index 00000000..638971b4 --- /dev/null +++ b/models/LocateAnything/config/README.md @@ -0,0 +1,151 @@ +--- +license: other +license_name: nvidia-license-agreement +license_link: https://huggingface.co/nvidia/LocateAnything-3B +tags: + - locateanything + - vision-grounding + - quant + - int4 + - auto-round + - w4a16 + - text-generation + - multimodal +base_model: nvidia/LocateAnything-3B +pipeline_tag: image-text-to-text +--- + +# LocateAnything-3B-AutoRound-W4A16 + +**W4A16 (4-bit weight, 16-bit activation) INT4 quantization of [nvidia/LocateAnything-3B](https://huggingface.co/nvidia/LocateAnything-3B)** using +Intel's [AutoRound](https://github.com/intel/auto-round) v0.13.0 (per-channel symmetric, group_size=128). + +This checkpoint is a **drop-in replacement** for the original BF16 model that delivers a 51% size reduction and 54% VRAM reduction with **no measurable accuracy loss** on a 50-image single-object grounding benchmark. The vision encoder (MoonViT), multimodal projector (MLP1), embedding, and `lm_head` are preserved in BF16; only the Qwen2.5-3B text decoder linears are quantized. + +## TL;DR + +| | BF16 (base) | INT4 (this) | Δ | +|---|---|---|---| +| Disk size | 7.3 GB | **3.55 GB** | **−51%** | +| Runtime VRAM | 7.64 GB | **3.54 GB** | **−54%** | +| Mean IoU (n=50) | 0.753 | 0.754 | +0.002 | +| IoU@0.5 | 92% | **96%** | **+4 pts** | +| Output validity | 100% | 100% | 0 | +| Latency / call | 2.75 s | 2.61 s | −5% | + +**No accuracy drop.** INT4 is statistically tied with BF16 on mean IoU and is +4 points on IoU@0.5 (the "did the model find the object" metric). On letters specifically, BF16 occasionally hallucinates oversized bounding boxes due to MTP-speculation drift; INT4's quantization suppresses this drift and produces tighter, more accurate boxes on the hardest examples. + +## How to use + +The model uses custom code from the [NVIDIA/Eagle](https://github.com/NVlabs/EAGLE) `LocateAnything` repo, so `trust_remote_code=True` is required. **Use SDPA attention (not magi)** unless you are on Hopper+ — the magi backend is not available on Ampere (RTX 3090) GPUs. + +```python +import torch +from PIL import Image +from transformers import AutoModel, AutoTokenizer, AutoProcessor +from auto_round.inference import convert_hf_model + +MODEL = "groxaxo/LocateAnything-3B-AutoRound-W4A16" + +tokenizer = AutoTokenizer.from_pretrained(MODEL, trust_remote_code=True) +processor = AutoProcessor.from_pretrained(MODEL, trust_remote_code=True) +model = AutoModel.from_pretrained( + MODEL, + dtype=torch.bfloat16, + trust_remote_code=True, + attn_implementation="sdpa", + device_map={"": "cuda"}, +).eval() + +# CRITICAL: swap the standard linears for AutoRound QuantLinear runtime layers. +convert_hf_model(model, target_device=str(model.device)) + +image = Image.open("your_image.jpg").convert("RGB") +question = "Please provide the bounding box of the red car." + +messages = [{"role": "user", "content": [ + {"type": "image", "image": image}, + {"type": "text", "text": question}, +]}] +text = processor.py_apply_chat_template(messages, tokenize=False, add_generation_prompt=True) +images, videos = processor.process_vision_info(messages) +inputs = processor(text=[text], images=images, videos=videos, return_tensors="pt").to(model.device) +inputs["pixel_values"] = inputs["pixel_values"].to(torch.bfloat16) + +with torch.no_grad(): + out = model.generate( + **inputs, + max_new_tokens=2048, + do_sample=False, + custom_generate="locateanything", # or omit if you use worker.predict() + ) +answer = tokenizer.decode(out[0, inputs["input_ids"].shape[1]:], skip_special_tokens=False) +print(answer) +``` + +Or use the official worker directly: + +```python +import sys +sys.path.append("Eagle/Embodied") +from locateanything_worker import LocateAnythingWorker +worker = LocateAnythingWorker(MODEL, device="cuda", dtype=torch.bfloat16) +convert_hf_model(worker.model, target_device=str(worker.device)) +result = worker.predict(image, question, generation_mode="hybrid") +print(result["answer"]) +``` + +> **Note** if you call `model.generate(...)` directly: the custom `generate` in `modeling_locateanything.py` requires both `use_cache=True` and a `tokenizer=` positional argument (it reads `tokenizer.model_max_length`). Easiest path is to use `LocateAnythingWorker.predict(...)` which sets both for you. + +## Quantization recipe + +```bash +# Extract Qwen2.5-3B text decoder weights from the LocateAnything checkpoint +python scripts/extract_text_decoder.py + +# Quantize the text decoder (252 linears → QuantLinear, 200 iters on Pile/CC) +python scripts/quantize_text_decoder.py --profile final + +# Repack quantized Qwen2 + BF16 vision + BF16 projector into a full +# LocateAnythingForConditionalGeneration checkpoint +python scripts/repack_locateanything.py +``` + +- **Method**: AutoRound 0.13.0, LLM path (the MLLM path is broken for `LocateAnythingForConditionalGeneration` because the custom processor wraps the image list in a way that doesn't compose with AutoRound's hf processor) +- **Recipe**: W4A16, symmetric, group_size=128, batch_size=8, nsamples=128, seqlen=2048, 200 iters +- **What stays BF16**: `vision_model.*` (MoonViT, 326 tensors), `mlp1.*` (multimodal projector, 6 tensors), `language_model.lm_head`, `language_model.model.embed_tokens`, `language_model.model.norm` +- **What gets quantized**: 36 decoder layers × 7 linears (`q_proj`, `k_proj`, `v_proj`, `o_proj`, `gate_proj`, `up_proj`, `down_proj`) = **252 linears → 756 tensors** in the AutoRound packed format +- **Triton fix**: downgraded `triton` from 3.3.0 to 3.2.0 to dodge `PY_SSIZE_T_CLEAN` kernel-build failures on Python 3.11 + +### Why split-and-repack? + +AutoRound 0.13.0's MLLM quantization path requires the model class to be pre-registered with `AutoModelForCausalLM` and uses the standard `Processor.__call__` flow. `LocateAnythingForConditionalGeneration`'s custom processor wraps images in a way that breaks `make_list_of_images` (it receives `[[path]]` instead of `[path]`). Working around this in the calibration pipeline is fragile. The robust path is to extract the inner `Qwen2ForCausalLM` text decoder, quantize it as a plain LLM (which AutoRound handles cleanly), then merge the quantized Qwen2 weights back into a full LocateAnything checkpoint alongside the unmodified BF16 vision/projector. + +## Evaluation + +50-image synthetic benchmark (1024×1024, 25 colored solid geometric shapes + 25 black capital letters). Ground-truth bounding boxes are the model's prompt-aligned object bbox. **Same prompts sent to BF16 and INT4 in parallel across two RTX 3090s (2.76 s/iter avg, 138 s total wall)**. + +Per-class breakdown: + +| Class | n | BF16 mIoU | INT4 mIoU | BF16 IoU@0.5 | INT4 IoU@0.5 | +|---|---|---|---|---|---| +| Shapes | 25 | 0.955 | 0.955 | 100% | 100% | +| Letters | 25 | 0.550 | 0.554 | 84% | **92%** | + +The hard cases are letters: the model often returns a box slightly larger than the tight text bbox because of MTP-speculation drift. INT4 quantization suppresses that drift and yields tighter boxes on the worst examples. See `benchmarks/results/viz/` for 12 side-by-side annotated comparisons (green = ground truth, red/blue = prediction). + +## Known caveats + +- **vLLM 0.19.1 is not supported.** `LocateAnythingForConditionalGeneration` is not in the vLLM architecture matrix and `--model-impl auto` does not pick it up. The custom mask/MagI generation path is not implemented in vLLM. Use the official Transformers worker (above) or write a vLLM plugin (out of scope here). +- **Magi attention is not available** on Ampere GPUs (RTX 3090, A100). Use `attn_implementation="sdpa"`. On Hopper/Blackwell you can keep the original magi path for max speed. +- The synthetic 50-image benchmark measures single-object box grounding. For multi-object detect, point queries, and hybrid generation, run your own evaluation on a real distribution (e.g. RefCOCO, D3, ReasonSeg, etc.). Smoke tests pass cleanly on all modes (`hybrid`, `slow`, `fast`, `detect`, `point`). + +## Credits + +- **Base model**: [nvidia/LocateAnything-3B](https://huggingface.co/nvidia/LocateAnything-3B) — Wang et al., *"Locate Anything, Serve Anything"* ([paper](https://research.nvidia.com/labs/dvl/projects/locate_anything/)) +- **Quantization**: [Intel AutoRound 0.13.0](https://github.com/intel/auto-round) +- **Reference implementation**: [NVlabs/EAGLE](https://github.com/NVlabs/EAGLE) (the `Eagle/Embodied/locateanything_worker.py` is the canonical inference path) + +## License + +Inherits the [NVIDIA LocateAnything license](https://huggingface.co/nvidia/LocateAnything-3B). Read the upstream terms before commercial use. diff --git a/models/LocateAnything/config/added_tokens.json b/models/LocateAnything/config/added_tokens.json new file mode 100644 index 00000000..c80e343d --- /dev/null +++ b/models/LocateAnything/config/added_tokens.json @@ -0,0 +1,1040 @@ +{ + "": 151669, + "": 152680, + "": 151667, + "": 151675, + "": 151671, + "": 151673, + "": 151658, + "<0>": 151677, + "<1000>": 152677, + "<100>": 151777, + "<101>": 151778, + "<102>": 151779, + "<103>": 151780, + "<104>": 151781, + "<105>": 151782, + "<106>": 151783, + "<107>": 151784, + "<108>": 151785, + "<109>": 151786, + "<10>": 151687, + "<110>": 151787, + "<111>": 151788, + "<112>": 151789, + "<113>": 151790, + "<114>": 151791, + "<115>": 151792, + "<116>": 151793, + "<117>": 151794, + "<118>": 151795, + "<119>": 151796, + "<11>": 151688, + "<120>": 151797, + "<121>": 151798, + "<122>": 151799, + "<123>": 151800, + "<124>": 151801, + "<125>": 151802, + "<126>": 151803, + "<127>": 151804, + "<128>": 151805, + "<129>": 151806, + "<12>": 151689, + "<130>": 151807, + "<131>": 151808, + "<132>": 151809, + "<133>": 151810, + "<134>": 151811, + "<135>": 151812, + "<136>": 151813, + "<137>": 151814, + "<138>": 151815, + "<139>": 151816, + "<13>": 151690, + "<140>": 151817, + "<141>": 151818, + "<142>": 151819, + "<143>": 151820, + "<144>": 151821, + "<145>": 151822, + "<146>": 151823, + "<147>": 151824, + "<148>": 151825, + "<149>": 151826, + "<14>": 151691, + "<150>": 151827, + "<151>": 151828, + "<152>": 151829, + "<153>": 151830, + "<154>": 151831, + "<155>": 151832, + "<156>": 151833, + "<157>": 151834, + "<158>": 151835, + "<159>": 151836, + "<15>": 151692, + "<160>": 151837, + "<161>": 151838, + "<162>": 151839, + "<163>": 151840, + "<164>": 151841, + "<165>": 151842, + "<166>": 151843, + "<167>": 151844, + "<168>": 151845, + "<169>": 151846, + "<16>": 151693, + "<170>": 151847, + "<171>": 151848, + "<172>": 151849, + "<173>": 151850, + "<174>": 151851, + "<175>": 151852, + "<176>": 151853, + "<177>": 151854, + "<178>": 151855, + "<179>": 151856, + "<17>": 151694, + "<180>": 151857, + "<181>": 151858, + "<182>": 151859, + "<183>": 151860, + "<184>": 151861, + "<185>": 151862, + "<186>": 151863, + "<187>": 151864, + "<188>": 151865, + "<189>": 151866, + "<18>": 151695, + "<190>": 151867, + "<191>": 151868, + "<192>": 151869, + "<193>": 151870, + "<194>": 151871, + "<195>": 151872, + "<196>": 151873, + "<197>": 151874, + "<198>": 151875, + "<199>": 151876, + "<19>": 151696, + "<1>": 151678, + "<200>": 151877, + "<201>": 151878, + "<202>": 151879, + "<203>": 151880, + "<204>": 151881, + "<205>": 151882, + "<206>": 151883, + "<207>": 151884, + "<208>": 151885, + "<209>": 151886, + "<20>": 151697, + "<210>": 151887, + "<211>": 151888, + "<212>": 151889, + "<213>": 151890, + "<214>": 151891, + "<215>": 151892, + "<216>": 151893, + "<217>": 151894, + "<218>": 151895, + "<219>": 151896, + "<21>": 151698, + "<220>": 151897, + "<221>": 151898, + "<222>": 151899, + "<223>": 151900, + "<224>": 151901, + "<225>": 151902, + "<226>": 151903, + "<227>": 151904, + "<228>": 151905, + "<229>": 151906, + "<22>": 151699, + "<230>": 151907, + "<231>": 151908, + "<232>": 151909, + "<233>": 151910, + "<234>": 151911, + "<235>": 151912, + "<236>": 151913, + "<237>": 151914, + "<238>": 151915, + "<239>": 151916, + "<23>": 151700, + "<240>": 151917, + "<241>": 151918, + "<242>": 151919, + "<243>": 151920, + "<244>": 151921, + "<245>": 151922, + "<246>": 151923, + "<247>": 151924, + "<248>": 151925, + "<249>": 151926, + "<24>": 151701, + "<250>": 151927, + "<251>": 151928, + "<252>": 151929, + "<253>": 151930, + "<254>": 151931, + "<255>": 151932, + "<256>": 151933, + "<257>": 151934, + "<258>": 151935, + "<259>": 151936, + "<25>": 151702, + "<260>": 151937, + "<261>": 151938, + "<262>": 151939, + "<263>": 151940, + "<264>": 151941, + "<265>": 151942, + "<266>": 151943, + "<267>": 151944, + "<268>": 151945, + "<269>": 151946, + "<26>": 151703, + "<270>": 151947, + "<271>": 151948, + "<272>": 151949, + "<273>": 151950, + "<274>": 151951, + "<275>": 151952, + "<276>": 151953, + "<277>": 151954, + "<278>": 151955, + "<279>": 151956, + "<27>": 151704, + "<280>": 151957, + "<281>": 151958, + "<282>": 151959, + "<283>": 151960, + "<284>": 151961, + "<285>": 151962, + "<286>": 151963, + "<287>": 151964, + "<288>": 151965, + "<289>": 151966, + "<28>": 151705, + "<290>": 151967, + "<291>": 151968, + "<292>": 151969, + "<293>": 151970, + "<294>": 151971, + "<295>": 151972, + "<296>": 151973, + "<297>": 151974, + "<298>": 151975, + "<299>": 151976, + "<29>": 151706, + "<2>": 151679, + "<300>": 151977, + "<301>": 151978, + "<302>": 151979, + "<303>": 151980, + "<304>": 151981, + "<305>": 151982, + "<306>": 151983, + "<307>": 151984, + "<308>": 151985, + "<309>": 151986, + "<30>": 151707, + "<310>": 151987, + "<311>": 151988, + "<312>": 151989, + "<313>": 151990, + "<314>": 151991, + "<315>": 151992, + "<316>": 151993, + "<317>": 151994, + "<318>": 151995, + "<319>": 151996, + "<31>": 151708, + "<320>": 151997, + "<321>": 151998, + "<322>": 151999, + "<323>": 152000, + "<324>": 152001, + "<325>": 152002, + "<326>": 152003, + "<327>": 152004, + "<328>": 152005, + "<329>": 152006, + "<32>": 151709, + "<330>": 152007, + "<331>": 152008, + "<332>": 152009, + "<333>": 152010, + "<334>": 152011, + "<335>": 152012, + "<336>": 152013, + "<337>": 152014, + "<338>": 152015, + "<339>": 152016, + "<33>": 151710, + "<340>": 152017, + "<341>": 152018, + "<342>": 152019, + "<343>": 152020, + "<344>": 152021, + "<345>": 152022, + "<346>": 152023, + "<347>": 152024, + "<348>": 152025, + "<349>": 152026, + "<34>": 151711, + "<350>": 152027, + "<351>": 152028, + "<352>": 152029, + "<353>": 152030, + "<354>": 152031, + "<355>": 152032, + "<356>": 152033, + "<357>": 152034, + "<358>": 152035, + "<359>": 152036, + "<35>": 151712, + "<360>": 152037, + "<361>": 152038, + "<362>": 152039, + "<363>": 152040, + "<364>": 152041, + "<365>": 152042, + "<366>": 152043, + "<367>": 152044, + "<368>": 152045, + "<369>": 152046, + "<36>": 151713, + "<370>": 152047, + "<371>": 152048, + "<372>": 152049, + "<373>": 152050, + "<374>": 152051, + "<375>": 152052, + "<376>": 152053, + "<377>": 152054, + "<378>": 152055, + "<379>": 152056, + "<37>": 151714, + "<380>": 152057, + "<381>": 152058, + "<382>": 152059, + "<383>": 152060, + "<384>": 152061, + "<385>": 152062, + "<386>": 152063, + "<387>": 152064, + "<388>": 152065, + "<389>": 152066, + "<38>": 151715, + "<390>": 152067, + "<391>": 152068, + "<392>": 152069, + "<393>": 152070, + "<394>": 152071, + "<395>": 152072, + "<396>": 152073, + "<397>": 152074, + "<398>": 152075, + "<399>": 152076, + "<39>": 151716, + "<3>": 151680, + "<400>": 152077, + "<401>": 152078, + "<402>": 152079, + "<403>": 152080, + "<404>": 152081, + "<405>": 152082, + "<406>": 152083, + "<407>": 152084, + "<408>": 152085, + "<409>": 152086, + "<40>": 151717, + "<410>": 152087, + "<411>": 152088, + "<412>": 152089, + "<413>": 152090, + "<414>": 152091, + "<415>": 152092, + "<416>": 152093, + "<417>": 152094, + "<418>": 152095, + "<419>": 152096, + "<41>": 151718, + "<420>": 152097, + "<421>": 152098, + "<422>": 152099, + "<423>": 152100, + "<424>": 152101, + "<425>": 152102, + "<426>": 152103, + "<427>": 152104, + "<428>": 152105, + "<429>": 152106, + "<42>": 151719, + "<430>": 152107, + "<431>": 152108, + "<432>": 152109, + "<433>": 152110, + "<434>": 152111, + "<435>": 152112, + "<436>": 152113, + "<437>": 152114, + "<438>": 152115, + "<439>": 152116, + "<43>": 151720, + "<440>": 152117, + "<441>": 152118, + "<442>": 152119, + "<443>": 152120, + "<444>": 152121, + "<445>": 152122, + "<446>": 152123, + "<447>": 152124, + "<448>": 152125, + "<449>": 152126, + "<44>": 151721, + "<450>": 152127, + "<451>": 152128, + "<452>": 152129, + "<453>": 152130, + "<454>": 152131, + "<455>": 152132, + "<456>": 152133, + "<457>": 152134, + "<458>": 152135, + "<459>": 152136, + "<45>": 151722, + "<460>": 152137, + "<461>": 152138, + "<462>": 152139, + "<463>": 152140, + "<464>": 152141, + "<465>": 152142, + "<466>": 152143, + "<467>": 152144, + "<468>": 152145, + "<469>": 152146, + "<46>": 151723, + "<470>": 152147, + "<471>": 152148, + "<472>": 152149, + "<473>": 152150, + "<474>": 152151, + "<475>": 152152, + "<476>": 152153, + "<477>": 152154, + "<478>": 152155, + "<479>": 152156, + "<47>": 151724, + "<480>": 152157, + "<481>": 152158, + "<482>": 152159, + "<483>": 152160, + "<484>": 152161, + "<485>": 152162, + "<486>": 152163, + "<487>": 152164, + "<488>": 152165, + "<489>": 152166, + "<48>": 151725, + "<490>": 152167, + "<491>": 152168, + "<492>": 152169, + "<493>": 152170, + "<494>": 152171, + "<495>": 152172, + "<496>": 152173, + "<497>": 152174, + "<498>": 152175, + "<499>": 152176, + "<49>": 151726, + "<4>": 151681, + "<500>": 152177, + "<501>": 152178, + "<502>": 152179, + "<503>": 152180, + "<504>": 152181, + "<505>": 152182, + "<506>": 152183, + "<507>": 152184, + "<508>": 152185, + "<509>": 152186, + "<50>": 151727, + "<510>": 152187, + "<511>": 152188, + "<512>": 152189, + "<513>": 152190, + "<514>": 152191, + "<515>": 152192, + "<516>": 152193, + "<517>": 152194, + "<518>": 152195, + "<519>": 152196, + "<51>": 151728, + "<520>": 152197, + "<521>": 152198, + "<522>": 152199, + "<523>": 152200, + "<524>": 152201, + "<525>": 152202, + "<526>": 152203, + "<527>": 152204, + "<528>": 152205, + "<529>": 152206, + "<52>": 151729, + "<530>": 152207, + "<531>": 152208, + "<532>": 152209, + "<533>": 152210, + "<534>": 152211, + "<535>": 152212, + "<536>": 152213, + "<537>": 152214, + "<538>": 152215, + "<539>": 152216, + "<53>": 151730, + "<540>": 152217, + "<541>": 152218, + "<542>": 152219, + "<543>": 152220, + "<544>": 152221, + "<545>": 152222, + "<546>": 152223, + "<547>": 152224, + "<548>": 152225, + "<549>": 152226, + "<54>": 151731, + "<550>": 152227, + "<551>": 152228, + "<552>": 152229, + "<553>": 152230, + "<554>": 152231, + "<555>": 152232, + "<556>": 152233, + "<557>": 152234, + "<558>": 152235, + "<559>": 152236, + "<55>": 151732, + "<560>": 152237, + "<561>": 152238, + "<562>": 152239, + "<563>": 152240, + "<564>": 152241, + "<565>": 152242, + "<566>": 152243, + "<567>": 152244, + "<568>": 152245, + "<569>": 152246, + "<56>": 151733, + "<570>": 152247, + "<571>": 152248, + "<572>": 152249, + "<573>": 152250, + "<574>": 152251, + "<575>": 152252, + "<576>": 152253, + "<577>": 152254, + "<578>": 152255, + "<579>": 152256, + "<57>": 151734, + "<580>": 152257, + "<581>": 152258, + "<582>": 152259, + "<583>": 152260, + "<584>": 152261, + "<585>": 152262, + "<586>": 152263, + "<587>": 152264, + "<588>": 152265, + "<589>": 152266, + "<58>": 151735, + "<590>": 152267, + "<591>": 152268, + "<592>": 152269, + "<593>": 152270, + "<594>": 152271, + "<595>": 152272, + "<596>": 152273, + "<597>": 152274, + "<598>": 152275, + "<599>": 152276, + "<59>": 151736, + "<5>": 151682, + "<600>": 152277, + "<601>": 152278, + "<602>": 152279, + "<603>": 152280, + "<604>": 152281, + "<605>": 152282, + "<606>": 152283, + "<607>": 152284, + "<608>": 152285, + "<609>": 152286, + "<60>": 151737, + "<610>": 152287, + "<611>": 152288, + "<612>": 152289, + "<613>": 152290, + "<614>": 152291, + "<615>": 152292, + "<616>": 152293, + "<617>": 152294, + "<618>": 152295, + "<619>": 152296, + "<61>": 151738, + "<620>": 152297, + "<621>": 152298, + "<622>": 152299, + "<623>": 152300, + "<624>": 152301, + "<625>": 152302, + "<626>": 152303, + "<627>": 152304, + "<628>": 152305, + "<629>": 152306, + "<62>": 151739, + "<630>": 152307, + "<631>": 152308, + "<632>": 152309, + "<633>": 152310, + "<634>": 152311, + "<635>": 152312, + "<636>": 152313, + "<637>": 152314, + "<638>": 152315, + "<639>": 152316, + "<63>": 151740, + "<640>": 152317, + "<641>": 152318, + "<642>": 152319, + "<643>": 152320, + "<644>": 152321, + "<645>": 152322, + "<646>": 152323, + "<647>": 152324, + "<648>": 152325, + "<649>": 152326, + "<64>": 151741, + "<650>": 152327, + "<651>": 152328, + "<652>": 152329, + "<653>": 152330, + "<654>": 152331, + "<655>": 152332, + "<656>": 152333, + "<657>": 152334, + "<658>": 152335, + "<659>": 152336, + "<65>": 151742, + "<660>": 152337, + "<661>": 152338, + "<662>": 152339, + "<663>": 152340, + "<664>": 152341, + "<665>": 152342, + "<666>": 152343, + "<667>": 152344, + "<668>": 152345, + "<669>": 152346, + "<66>": 151743, + "<670>": 152347, + "<671>": 152348, + "<672>": 152349, + "<673>": 152350, + "<674>": 152351, + "<675>": 152352, + "<676>": 152353, + "<677>": 152354, + "<678>": 152355, + "<679>": 152356, + "<67>": 151744, + "<680>": 152357, + "<681>": 152358, + "<682>": 152359, + "<683>": 152360, + "<684>": 152361, + "<685>": 152362, + "<686>": 152363, + "<687>": 152364, + "<688>": 152365, + "<689>": 152366, + "<68>": 151745, + "<690>": 152367, + "<691>": 152368, + "<692>": 152369, + "<693>": 152370, + "<694>": 152371, + "<695>": 152372, + "<696>": 152373, + "<697>": 152374, + "<698>": 152375, + "<699>": 152376, + "<69>": 151746, + "<6>": 151683, + "<700>": 152377, + "<701>": 152378, + "<702>": 152379, + "<703>": 152380, + "<704>": 152381, + "<705>": 152382, + "<706>": 152383, + "<707>": 152384, + "<708>": 152385, + "<709>": 152386, + "<70>": 151747, + "<710>": 152387, + "<711>": 152388, + "<712>": 152389, + "<713>": 152390, + "<714>": 152391, + "<715>": 152392, + "<716>": 152393, + "<717>": 152394, + "<718>": 152395, + "<719>": 152396, + "<71>": 151748, + "<720>": 152397, + "<721>": 152398, + "<722>": 152399, + "<723>": 152400, + "<724>": 152401, + "<725>": 152402, + "<726>": 152403, + "<727>": 152404, + "<728>": 152405, + "<729>": 152406, + "<72>": 151749, + "<730>": 152407, + "<731>": 152408, + "<732>": 152409, + "<733>": 152410, + "<734>": 152411, + "<735>": 152412, + "<736>": 152413, + "<737>": 152414, + "<738>": 152415, + "<739>": 152416, + "<73>": 151750, + "<740>": 152417, + "<741>": 152418, + "<742>": 152419, + "<743>": 152420, + "<744>": 152421, + "<745>": 152422, + "<746>": 152423, + "<747>": 152424, + "<748>": 152425, + "<749>": 152426, + "<74>": 151751, + "<750>": 152427, + "<751>": 152428, + "<752>": 152429, + "<753>": 152430, + "<754>": 152431, + "<755>": 152432, + "<756>": 152433, + "<757>": 152434, + "<758>": 152435, + "<759>": 152436, + "<75>": 151752, + "<760>": 152437, + "<761>": 152438, + "<762>": 152439, + "<763>": 152440, + "<764>": 152441, + "<765>": 152442, + "<766>": 152443, + "<767>": 152444, + "<768>": 152445, + "<769>": 152446, + "<76>": 151753, + "<770>": 152447, + "<771>": 152448, + "<772>": 152449, + "<773>": 152450, + "<774>": 152451, + "<775>": 152452, + "<776>": 152453, + "<777>": 152454, + "<778>": 152455, + "<779>": 152456, + "<77>": 151754, + "<780>": 152457, + "<781>": 152458, + "<782>": 152459, + "<783>": 152460, + "<784>": 152461, + "<785>": 152462, + "<786>": 152463, + "<787>": 152464, + "<788>": 152465, + "<789>": 152466, + "<78>": 151755, + "<790>": 152467, + "<791>": 152468, + "<792>": 152469, + "<793>": 152470, + "<794>": 152471, + "<795>": 152472, + "<796>": 152473, + "<797>": 152474, + "<798>": 152475, + "<799>": 152476, + "<79>": 151756, + "<7>": 151684, + "<800>": 152477, + "<801>": 152478, + "<802>": 152479, + "<803>": 152480, + "<804>": 152481, + "<805>": 152482, + "<806>": 152483, + "<807>": 152484, + "<808>": 152485, + "<809>": 152486, + "<80>": 151757, + "<810>": 152487, + "<811>": 152488, + "<812>": 152489, + "<813>": 152490, + "<814>": 152491, + "<815>": 152492, + "<816>": 152493, + "<817>": 152494, + "<818>": 152495, + "<819>": 152496, + "<81>": 151758, + "<820>": 152497, + "<821>": 152498, + "<822>": 152499, + "<823>": 152500, + "<824>": 152501, + "<825>": 152502, + "<826>": 152503, + "<827>": 152504, + "<828>": 152505, + "<829>": 152506, + "<82>": 151759, + "<830>": 152507, + "<831>": 152508, + "<832>": 152509, + "<833>": 152510, + "<834>": 152511, + "<835>": 152512, + "<836>": 152513, + "<837>": 152514, + "<838>": 152515, + "<839>": 152516, + "<83>": 151760, + "<840>": 152517, + "<841>": 152518, + "<842>": 152519, + "<843>": 152520, + "<844>": 152521, + "<845>": 152522, + "<846>": 152523, + "<847>": 152524, + "<848>": 152525, + "<849>": 152526, + "<84>": 151761, + "<850>": 152527, + "<851>": 152528, + "<852>": 152529, + "<853>": 152530, + "<854>": 152531, + "<855>": 152532, + "<856>": 152533, + "<857>": 152534, + "<858>": 152535, + "<859>": 152536, + "<85>": 151762, + "<860>": 152537, + "<861>": 152538, + "<862>": 152539, + "<863>": 152540, + "<864>": 152541, + "<865>": 152542, + "<866>": 152543, + "<867>": 152544, + "<868>": 152545, + "<869>": 152546, + "<86>": 151763, + "<870>": 152547, + "<871>": 152548, + "<872>": 152549, + "<873>": 152550, + "<874>": 152551, + "<875>": 152552, + "<876>": 152553, + "<877>": 152554, + "<878>": 152555, + "<879>": 152556, + "<87>": 151764, + "<880>": 152557, + "<881>": 152558, + "<882>": 152559, + "<883>": 152560, + "<884>": 152561, + "<885>": 152562, + "<886>": 152563, + "<887>": 152564, + "<888>": 152565, + "<889>": 152566, + "<88>": 151765, + "<890>": 152567, + "<891>": 152568, + "<892>": 152569, + "<893>": 152570, + "<894>": 152571, + "<895>": 152572, + "<896>": 152573, + "<897>": 152574, + "<898>": 152575, + "<899>": 152576, + "<89>": 151766, + "<8>": 151685, + "<900>": 152577, + "<901>": 152578, + "<902>": 152579, + "<903>": 152580, + "<904>": 152581, + "<905>": 152582, + "<906>": 152583, + "<907>": 152584, + "<908>": 152585, + "<909>": 152586, + "<90>": 151767, + "<910>": 152587, + "<911>": 152588, + "<912>": 152589, + "<913>": 152590, + "<914>": 152591, + "<915>": 152592, + "<916>": 152593, + "<917>": 152594, + "<918>": 152595, + "<919>": 152596, + "<91>": 151768, + "<920>": 152597, + "<921>": 152598, + "<922>": 152599, + "<923>": 152600, + "<924>": 152601, + "<925>": 152602, + "<926>": 152603, + "<927>": 152604, + "<928>": 152605, + "<929>": 152606, + "<92>": 151769, + "<930>": 152607, + "<931>": 152608, + "<932>": 152609, + "<933>": 152610, + "<934>": 152611, + "<935>": 152612, + "<936>": 152613, + "<937>": 152614, + "<938>": 152615, + "<939>": 152616, + "<93>": 151770, + "<940>": 152617, + "<941>": 152618, + "<942>": 152619, + "<943>": 152620, + "<944>": 152621, + "<945>": 152622, + "<946>": 152623, + "<947>": 152624, + "<948>": 152625, + "<949>": 152626, + "<94>": 151771, + "<950>": 152627, + "<951>": 152628, + "<952>": 152629, + "<953>": 152630, + "<954>": 152631, + "<955>": 152632, + "<956>": 152633, + "<957>": 152634, + "<958>": 152635, + "<959>": 152636, + "<95>": 151772, + "<960>": 152637, + "<961>": 152638, + "<962>": 152639, + "<963>": 152640, + "<964>": 152641, + "<965>": 152642, + "<966>": 152643, + "<967>": 152644, + "<968>": 152645, + "<969>": 152646, + "<96>": 151773, + "<970>": 152647, + "<971>": 152648, + "<972>": 152649, + "<973>": 152650, + "<974>": 152651, + "<975>": 152652, + "<976>": 152653, + "<977>": 152654, + "<978>": 152655, + "<979>": 152656, + "<97>": 151774, + "<980>": 152657, + "<981>": 152658, + "<982>": 152659, + "<983>": 152660, + "<984>": 152661, + "<985>": 152662, + "<986>": 152663, + "<987>": 152664, + "<988>": 152665, + "<989>": 152666, + "<98>": 151775, + "<990>": 152667, + "<991>": 152668, + "<992>": 152669, + "<993>": 152670, + "<994>": 152671, + "<995>": 152672, + "<996>": 152673, + "<997>": 152674, + "<998>": 152675, + "<999>": 152676, + "<99>": 151776, + "<9>": 151686, + "": 151665, + "": 151668, + "": 151666, + "": 151674, + "": 152678, + "": 151670, + "": 151672, + "": 152679, + "": 151676, + "": 151657, + "<|box_end|>": 151649, + "<|box_start|>": 151648, + "<|endoftext|>": 151643, + "<|file_sep|>": 151664, + "<|fim_middle|>": 151660, + "<|fim_pad|>": 151662, + "<|fim_prefix|>": 151659, + "<|fim_suffix|>": 151661, + "<|im_end|>": 151645, + "<|im_start|>": 151644, + "<|image_pad|>": 151655, + "<|object_ref_end|>": 151647, + "<|object_ref_start|>": 151646, + "<|quad_end|>": 151651, + "<|quad_start|>": 151650, + "<|repo_name|>": 151663, + "<|video_pad|>": 151656, + "<|vision_end|>": 151653, + "<|vision_pad|>": 151654, + "<|vision_start|>": 151652 +} diff --git a/models/LocateAnything/config/benchmarks/bench50_hybrid_results.json b/models/LocateAnything/config/benchmarks/bench50_hybrid_results.json new file mode 100644 index 00000000..5a1bdd5a --- /dev/null +++ b/models/LocateAnything/config/benchmarks/bench50_hybrid_results.json @@ -0,0 +1,2313 @@ +{ + "manifest": "/home/op/locateanything-int4/benchmarks/synthetic50/manifest.json", + "mode": "hybrid", + "bf16_url": "http://127.0.0.1:18011", + "int4_url": "http://127.0.0.1:18012", + "n": 50, + "total_sec": 138.02288341522217, + "bf16_results": [ + { + "id": 0, + "kind": "shape", + "object": "blue hexagon", + "prompt": "Locate the blue hexagon.", + "gt_box_norm": [ + 407, + 102, + 609, + 336 + ], + "answer": "blue hex hex hex<406><101><611><338><|im_end|>", + "pred_box_norm": [ + 406, + 101, + 611, + 338 + ], + "valid": true, + "elapsed_sec": 2.674611806869507, + "iou": 0.9728928681691881, + "center_l1": 1.0 + }, + { + "id": 1, + "kind": "shape", + "object": "yellow square", + "prompt": "Locate the yellow square.", + "gt_box_norm": [ + 130, + 594, + 481, + 945 + ], + "answer": "locate the the yellow<129><593><484><947><|im_end|>", + "pred_box_norm": [ + 129, + 593, + 484, + 947 + ], + "valid": true, + "elapsed_sec": 2.6339266300201416, + "iou": 0.980353306278348, + "center_l1": 1.5 + }, + { + "id": 2, + "kind": "shape", + "object": "yellow hexagon", + "prompt": "Locate the yellow hexagon.", + "gt_box_norm": [ + 180, + 316, + 329, + 488 + ], + "answer": "yellowate hex hexagon<177><314><331><492><|im_end|>", + "pred_box_norm": [ + 177, + 314, + 331, + 492 + ], + "valid": true, + "elapsed_sec": 2.693080186843872, + "iou": 0.934919013570699, + "center_l1": 1.5 + }, + { + "id": 3, + "kind": "shape", + "object": "crimson hexagon", + "prompt": "Locate the crimson hexagon.", + "gt_box_norm": [ + 773, + 502, + 938, + 693 + ], + "answer": "Locate hex hexagon<772><500><942><698><|im_end|>", + "pred_box_norm": [ + 772, + 500, + 942, + 698 + ], + "valid": true, + "elapsed_sec": 2.728316307067871, + "iou": 0.9362745098039216, + "center_l1": 3.0 + }, + { + "id": 4, + "kind": "shape", + "object": "blue hexagon", + "prompt": "Locate the blue hexagon.", + "gt_box_norm": [ + 599, + 548, + 873, + 864 + ], + "answer": "blue hex hex hexagon<597><546><875><865><|im_end|>", + "pred_box_norm": [ + 597, + 546, + 875, + 865 + ], + "valid": true, + "elapsed_sec": 2.672801971435547, + "iou": 0.976342437022169, + "center_l1": 0.5 + }, + { + "id": 5, + "kind": "shape", + "object": "green hexagon", + "prompt": "Locate the green hexagon.", + "gt_box_norm": [ + 467, + 611, + 700, + 881 + ], + "answer": "Locate hex green<464><610><710><883><|im_end|>", + "pred_box_norm": [ + 464, + 610, + 710, + 883 + ], + "valid": true, + "elapsed_sec": 2.6758179664611816, + "iou": 0.9367461806486197, + "center_l1": 4.0 + }, + { + "id": 6, + "kind": "shape", + "object": "red triangle", + "prompt": "Locate the red triangle.", + "gt_box_norm": [ + 482, + 36, + 676, + 203 + ], + "answer": "red triangle<481><35><677><207><|im_end|>", + "pred_box_norm": [ + 481, + 35, + 677, + 207 + ], + "valid": true, + "elapsed_sec": 2.684298276901245, + "iou": 0.9610227812055054, + "center_l1": 1.5 + }, + { + "id": 7, + "kind": "shape", + "object": "olive square", + "prompt": "Locate the olive square.", + "gt_box_norm": [ + 350, + 216, + 707, + 573 + ], + "answer": "ollive square<349><215><708><575><|im_end|>", + "pred_box_norm": [ + 349, + 215, + 708, + 575 + ], + "valid": true, + "elapsed_sec": 2.7072179317474365, + "iou": 0.9861420612813371, + "center_l1": 0.5 + }, + { + "id": 8, + "kind": "shape", + "object": "crimson hexagon", + "prompt": "Locate the crimson hexagon.", + "gt_box_norm": [ + 757, + 141, + 893, + 297 + ], + "answer": "Locate hex hexagon<753><137><897><300><|im_end|>", + "pred_box_norm": [ + 753, + 137, + 897, + 300 + ], + "valid": true, + "elapsed_sec": 2.7242794036865234, + "iou": 0.9038854805725971, + "center_l1": 0.5 + }, + { + "id": 9, + "kind": "shape", + "object": "red circle", + "prompt": "Locate the red circle.", + "gt_box_norm": [ + 116, + 562, + 374, + 819 + ], + "answer": "Locate red red circle<113><557><378><823><|im_end|>", + "pred_box_norm": [ + 113, + 557, + 378, + 823 + ], + "valid": true, + "elapsed_sec": 2.739058256149292, + "iou": 0.9406440629876578, + "center_l1": 1.0 + }, + { + "id": 10, + "kind": "shape", + "object": "blue circle", + "prompt": "Locate the blue circle.", + "gt_box_norm": [ + 473, + 451, + 711, + 689 + ], + "answer": "Locate blue blue<471><450><716><692><|im_end|>", + "pred_box_norm": [ + 471, + 450, + 716, + 692 + ], + "valid": true, + "elapsed_sec": 2.7035162448883057, + "iou": 0.9553719008264463, + "center_l1": 2.5 + }, + { + "id": 11, + "kind": "shape", + "object": "purple triangle", + "prompt": "Locate the purple triangle.", + "gt_box_norm": [ + 453, + 205, + 596, + 328 + ], + "answer": "purpleate triangle purple<444><201><601><332><|im_end|>", + "pred_box_norm": [ + 444, + 201, + 601, + 332 + ], + "valid": true, + "elapsed_sec": 2.708627462387085, + "iou": 0.8552049399523508, + "center_l1": 2.0 + }, + { + "id": 12, + "kind": "shape", + "object": "olive triangle", + "prompt": "Locate the olive triangle.", + "gt_box_norm": [ + 442, + 233, + 614, + 383 + ], + "answer": "ol olive triangle<438><233><616><386><|im_end|>", + "pred_box_norm": [ + 438, + 233, + 616, + 386 + ], + "valid": true, + "elapsed_sec": 2.747788906097412, + "iou": 0.9473452302269222, + "center_l1": 2.5 + }, + { + "id": 13, + "kind": "shape", + "object": "purple hexagon", + "prompt": "Locate the purple hexagon.", + "gt_box_norm": [ + 243, + 606, + 510, + 915 + ], + "answer": "Locate hex purple<238><604><515><918><|im_end|>", + "pred_box_norm": [ + 238, + 604, + 515, + 918 + ], + "valid": true, + "elapsed_sec": 2.72615122795105, + "iou": 0.9485502080985997, + "center_l1": 0.5 + }, + { + "id": 14, + "kind": "shape", + "object": "yellow square", + "prompt": "Locate the yellow square.", + "gt_box_norm": [ + 73, + 461, + 272, + 660 + ], + "answer": "yellow square<72><461><273><662><|im_end|>", + "pred_box_norm": [ + 72, + 461, + 273, + 662 + ], + "valid": true, + "elapsed_sec": 2.7089319229125977, + "iou": 0.9801985099378728, + "center_l1": 1.0 + }, + { + "id": 15, + "kind": "shape", + "object": "purple square", + "prompt": "Locate the purple square.", + "gt_box_norm": [ + 525, + 562, + 881, + 918 + ], + "answer": "purple square purple<521><562><882><919><|im_end|>", + "pred_box_norm": [ + 521, + 562, + 882, + 919 + ], + "valid": true, + "elapsed_sec": 2.758929967880249, + "iou": 0.9833872607214631, + "center_l1": 2.0 + }, + { + "id": 16, + "kind": "shape", + "object": "green triangle", + "prompt": "Locate the green triangle.", + "gt_box_norm": [ + 388, + 578, + 659, + 812 + ], + "answer": "Loc the<387><575><662><815><|im_end|>", + "pred_box_norm": [ + 387, + 575, + 662, + 815 + ], + "valid": true, + "elapsed_sec": 2.7414495944976807, + "iou": 0.9608181818181818, + "center_l1": 1.0 + }, + { + "id": 17, + "kind": "shape", + "object": "green hexagon", + "prompt": "Locate the green hexagon.", + "gt_box_norm": [ + 145, + 392, + 304, + 575 + ], + "answer": "Locate hex hex<142><391><307><578><|im_end|>", + "pred_box_norm": [ + 142, + 391, + 307, + 578 + ], + "valid": true, + "elapsed_sec": 2.727130174636841, + "iou": 0.9430238210986874, + "center_l1": 1.0 + }, + { + "id": 18, + "kind": "shape", + "object": "green hexagon", + "prompt": "Locate the green hexagon.", + "gt_box_norm": [ + 159, + 259, + 430, + 571 + ], + "answer": "Loc hex hex green<158><256><433><575><|im_end|>", + "pred_box_norm": [ + 158, + 256, + 433, + 575 + ], + "valid": true, + "elapsed_sec": 2.7106447219848633, + "iou": 0.9638301510401824, + "center_l1": 1.5 + }, + { + "id": 19, + "kind": "shape", + "object": "crimson square", + "prompt": "Locate the crimson square.", + "gt_box_norm": [ + 140, + 279, + 329, + 469 + ], + "answer": "crquare square<137><279><331><470><|im_end|>", + "pred_box_norm": [ + 137, + 279, + 331, + 470 + ], + "valid": true, + "elapsed_sec": 2.7367913722991943, + "iou": 0.9691261402277757, + "center_l1": 1.0 + }, + { + "id": 20, + "kind": "shape", + "object": "red square", + "prompt": "Locate the red square.", + "gt_box_norm": [ + 444, + 621, + 696, + 873 + ], + "answer": "red the red square<434><620><700><876><|im_end|>", + "pred_box_norm": [ + 434, + 620, + 700, + 876 + ], + "valid": true, + "elapsed_sec": 2.7593812942504883, + "iou": 0.9325657894736842, + "center_l1": 4.0 + }, + { + "id": 21, + "kind": "shape", + "object": "yellow circle", + "prompt": "Locate the yellow circle.", + "gt_box_norm": [ + 291, + 573, + 656, + 938 + ], + "answer": "Locate yellow yellow<289><572><659><941><|im_end|>", + "pred_box_norm": [ + 289, + 572, + 659, + 941 + ], + "valid": true, + "elapsed_sec": 2.74253511428833, + "iou": 0.9757928660367685, + "center_l1": 1.5 + }, + { + "id": 22, + "kind": "shape", + "object": "green circle", + "prompt": "Locate the green circle.", + "gt_box_norm": [ + 399, + 125, + 769, + 494 + ], + "answer": "Loc the green green<397><122><771><497><|im_end|>", + "pred_box_norm": [ + 397, + 122, + 771, + 497 + ], + "valid": true, + "elapsed_sec": 2.727430582046509, + "iou": 0.973475935828877, + "center_l1": 0.0 + }, + { + "id": 23, + "kind": "shape", + "object": "pink hexagon", + "prompt": "Locate the pink hexagon.", + "gt_box_norm": [ + 181, + 461, + 402, + 717 + ], + "answer": "pinkate hex hexagon<179><460><404><720><|im_end|>", + "pred_box_norm": [ + 179, + 460, + 404, + 720 + ], + "valid": true, + "elapsed_sec": 2.7672178745269775, + "iou": 0.9671111111111111, + "center_l1": 1.0 + }, + { + "id": 24, + "kind": "shape", + "object": "pink square", + "prompt": "Locate the pink square.", + "gt_box_norm": [ + 428, + 361, + 775, + 709 + ], + "answer": "pink the pink pink<427><361><776><710><|im_end|>", + "pred_box_norm": [ + 427, + 361, + 776, + 710 + ], + "valid": true, + "elapsed_sec": 2.8300840854644775, + "iou": 0.991420431687753, + "center_l1": 0.5 + }, + { + "id": 25, + "kind": "letter", + "object": "letter O", + "prompt": "Locate the letter O.", + "gt_box_norm": [ + 513, + 312, + 838, + 603 + ], + "answer": "letter the O<502><362><838><678><|im_end|>", + "pred_box_norm": [ + 502, + 362, + 838, + 678 + ], + "valid": true, + "elapsed_sec": 2.770564079284668, + "iou": 0.6397742309640109, + "center_l1": 68.0 + }, + { + "id": 26, + "kind": "letter", + "object": "letter S", + "prompt": "Locate the letter S.", + "gt_box_norm": [ + 401, + 110, + 672, + 395 + ], + "answer": "letter<398><163><673><485><|im_end|>", + "pred_box_norm": [ + 398, + 163, + 673, + 485 + ], + "valid": true, + "elapsed_sec": 2.781400442123413, + "iou": 0.6109237899973764, + "center_l1": 72.5 + }, + { + "id": 27, + "kind": "letter", + "object": "letter X", + "prompt": "Locate the letter X.", + "gt_box_norm": [ + 539, + 382, + 825, + 652 + ], + "answer": "letter<537><437><838><770><|im_end|>", + "pred_box_norm": [ + 537, + 437, + 838, + 770 + ], + "valid": true, + "elapsed_sec": 2.7519094944000244, + "iou": 0.5302553400653657, + "center_l1": 92.0 + }, + { + "id": 28, + "kind": "letter", + "object": "letter D", + "prompt": "Locate the letter D.", + "gt_box_norm": [ + 317, + 279, + 773, + 680 + ], + "answer": "letter the<337><387><772><815><|im_end|>", + "pred_box_norm": [ + 337, + 387, + 772, + 815 + ], + "valid": true, + "elapsed_sec": 2.757133722305298, + "iou": 0.5275870205024402, + "center_l1": 131.0 + }, + { + "id": 29, + "kind": "letter", + "object": "letter Q", + "prompt": "Locate the letter Q.", + "gt_box_norm": [ + 641, + 265, + 957, + 596 + ], + "answer": "letter<631><303><970><704><|im_end|>", + "pred_box_norm": [ + 631, + 303, + 970, + 704 + ], + "valid": true, + "elapsed_sec": 2.8004374504089355, + "iou": 0.6258187053471851, + "center_l1": 74.5 + }, + { + "id": 30, + "kind": "letter", + "object": "letter O", + "prompt": "Locate the letter O.", + "gt_box_norm": [ + 115, + 545, + 434, + 827 + ], + "answer": "letter the O<98><593><438><901><|im_end|>", + "pred_box_norm": [ + 98, + 593, + 438, + 901 + ], + "valid": true, + "elapsed_sec": 2.7669148445129395, + "iou": 0.6218841642228738, + "center_l1": 67.5 + }, + { + "id": 31, + "kind": "letter", + "object": "letter R", + "prompt": "Locate the letter R.", + "gt_box_norm": [ + 109, + 110, + 471, + 452 + ], + "answer": "letter<0><0><1000><1000><|im_end|>", + "pred_box_norm": [ + 0, + 0, + 1000, + 1000 + ], + "valid": true, + "elapsed_sec": 2.8597474098205566, + "iou": 0.123804, + "center_l1": 429.0 + }, + { + "id": 32, + "kind": "letter", + "object": "letter G", + "prompt": "Locate the letter G.", + "gt_box_norm": [ + 369, + 434, + 832, + 860 + ], + "answer": "letter<372><513><838><1000><|im_end|>", + "pred_box_norm": [ + 372, + 513, + 838, + 1000 + ], + "valid": true, + "elapsed_sec": 2.7963874340057373, + "iou": 0.6033413970365891, + "center_l1": 114.0 + }, + { + "id": 33, + "kind": "letter", + "object": "letter E", + "prompt": "Locate the letter E.", + "gt_box_norm": [ + 424, + 168, + 771, + 537 + ], + "answer": "E<440><244><776><669><|im_end|>", + "pred_box_norm": [ + 440, + 244, + 776, + 669 + ], + "valid": true, + "elapsed_sec": 2.7667031288146973, + "iou": 0.5578223858276774, + "center_l1": 114.5 + }, + { + "id": 34, + "kind": "letter", + "object": "letter I", + "prompt": "Locate the letter I.", + "gt_box_norm": [ + 698, + 218, + 895, + 603 + ], + "answer": "letter<737><300><878><737><|im_end|>", + "pred_box_norm": [ + 737, + 300, + 878, + 737 + ], + "valid": true, + "elapsed_sec": 2.757258176803589, + "iou": 0.450954728253412, + "center_l1": 119.0 + }, + { + "id": 35, + "kind": "letter", + "object": "letter E", + "prompt": "Locate the letter E.", + "gt_box_norm": [ + 492, + 287, + 828, + 646 + ], + "answer": "letter<513><369><820><766><|im_end|>", + "pred_box_norm": [ + 513, + 369, + 820, + 766 + ], + "valid": true, + "elapsed_sec": 2.771965742111206, + "iou": 0.5400535995529137, + "center_l1": 107.5 + }, + { + "id": 36, + "kind": "letter", + "object": "letter Q", + "prompt": "Locate the letter Q.", + "gt_box_norm": [ + 493, + 371, + 923, + 820 + ], + "answer": "letter the letter Q<500><437><922><923><|im_end|>", + "pred_box_norm": [ + 500, + 437, + 922, + 923 + ], + "valid": true, + "elapsed_sec": 2.792861223220825, + "iou": 0.6833040213751818, + "center_l1": 87.5 + }, + { + "id": 37, + "kind": "letter", + "object": "letter D", + "prompt": "Locate the letter D.", + "gt_box_norm": [ + 403, + 253, + 810, + 609 + ], + "answer": "letter the<416><333><815><744><|im_end|>", + "pred_box_norm": [ + 416, + 333, + 815, + 744 + ], + "valid": true, + "elapsed_sec": 2.771075963973999, + "iou": 0.5433478067523746, + "center_l1": 116.5 + }, + { + "id": 38, + "kind": "letter", + "object": "letter N", + "prompt": "Locate the letter N.", + "gt_box_norm": [ + 440, + 397, + 762, + 678 + ], + "answer": "N<454><437><767><775><|im_end|>", + "pred_box_norm": [ + 454, + 437, + 767, + 775 + ], + "valid": true, + "elapsed_sec": 2.7811007499694824, + "iou": 0.6081869428421605, + "center_l1": 78.0 + }, + { + "id": 39, + "kind": "letter", + "object": "letter K", + "prompt": "Locate the letter K.", + "gt_box_norm": [ + 438, + 247, + 854, + 624 + ], + "answer": "letter the<464><350><868><733><|im_end|>", + "pred_box_norm": [ + 464, + 350, + 868, + 733 + ], + "valid": true, + "elapsed_sec": 2.7928149700164795, + "iou": 0.5220220415819916, + "center_l1": 126.0 + }, + { + "id": 40, + "kind": "letter", + "object": "letter X", + "prompt": "Locate the letter X.", + "gt_box_norm": [ + 79, + 188, + 380, + 473 + ], + "answer": "letter<0><233><407><575><|im_end|>", + "pred_box_norm": [ + 0, + 233, + 407, + 575 + ], + "valid": true, + "elapsed_sec": 2.7912847995758057, + "iou": 0.47296368314575843, + "center_l1": 99.5 + }, + { + "id": 41, + "kind": "letter", + "object": "letter X", + "prompt": "Locate the letter X.", + "gt_box_norm": [ + 295, + 140, + 667, + 491 + ], + "answer": "letter<271><210><728><625><|im_end|>", + "pred_box_norm": [ + 271, + 210, + 728, + 625 + ], + "valid": true, + "elapsed_sec": 2.8001129627227783, + "iou": 0.48462875820023643, + "center_l1": 120.5 + }, + { + "id": 42, + "kind": "letter", + "object": "letter G", + "prompt": "Locate the letter G.", + "gt_box_norm": [ + 382, + 379, + 777, + 743 + ], + "answer": "letter<378><437><782><857><|im_end|>", + "pred_box_norm": [ + 378, + 437, + 782, + 857 + ], + "valid": true, + "elapsed_sec": 2.783384084701538, + "iou": 0.6276026792668363, + "center_l1": 86.5 + }, + { + "id": 43, + "kind": "letter", + "object": "letter R", + "prompt": "Locate the letter R.", + "gt_box_norm": [ + 66, + 462, + 376, + 755 + ], + "answer": "R R<76><523><382><857><|im_end|>", + "pred_box_norm": [ + 76, + 523, + 382, + 857 + ], + "valid": true, + "elapsed_sec": 2.7955894470214844, + "iou": 0.5638640893108868, + "center_l1": 89.5 + }, + { + "id": 44, + "kind": "letter", + "object": "letter E", + "prompt": "Locate the letter E.", + "gt_box_norm": [ + 536, + 219, + 831, + 533 + ], + "answer": "letter<550><282><820><640><|im_end|>", + "pred_box_norm": [ + 550, + 282, + 820, + 640 + ], + "valid": true, + "elapsed_sec": 2.7852203845977783, + "iou": 0.5576859776168532, + "center_l1": 86.5 + }, + { + "id": 45, + "kind": "letter", + "object": "letter T", + "prompt": "Locate the letter T.", + "gt_box_norm": [ + 213, + 520, + 571, + 902 + ], + "answer": "letter<191><597><574><1000><|im_end|>", + "pred_box_norm": [ + 191, + 597, + 574, + 1000 + ], + "valid": true, + "elapsed_sec": 2.801645278930664, + "iou": 0.6002253799851579, + "center_l1": 97.0 + }, + { + "id": 46, + "kind": "letter", + "object": "letter M", + "prompt": "Locate the letter M.", + "gt_box_norm": [ + 311, + 335, + 836, + 720 + ], + "answer": "letter<322><437><827><847><|im_end|>", + "pred_box_norm": [ + 322, + 437, + 827, + 847 + ], + "valid": true, + "elapsed_sec": 2.7882707118988037, + "iou": 0.5367497934349884, + "center_l1": 115.5 + }, + { + "id": 47, + "kind": "letter", + "object": "letter R", + "prompt": "Locate the letter R.", + "gt_box_norm": [ + 481, + 604, + 822, + 926 + ], + "answer": "R<500><669><837><1000><|im_end|>", + "pred_box_norm": [ + 500, + 669, + 837, + 1000 + ], + "valid": true, + "elapsed_sec": 2.7760448455810547, + "iou": 0.5970922471950647, + "center_l1": 86.5 + }, + { + "id": 48, + "kind": "letter", + "object": "letter M", + "prompt": "Locate the letter M.", + "gt_box_norm": [ + 262, + 447, + 805, + 846 + ], + "answer": "letter<271><537><812><1000><|im_end|>", + "pred_box_norm": [ + 271, + 537, + 812, + 1000 + ], + "valid": true, + "elapsed_sec": 2.794265031814575, + "iou": 0.5461351585720243, + "center_l1": 130.0 + }, + { + "id": 49, + "kind": "letter", + "object": "letter P", + "prompt": "Locate the letter P.", + "gt_box_norm": [ + 617, + 362, + 922, + 666 + ], + "answer": "letter P<637><417><923><766><|im_end|>", + "pred_box_norm": [ + 637, + 417, + 923, + 766 + ], + "valid": true, + "elapsed_sec": 2.8047995567321777, + "iou": 0.5837425659502011, + "center_l1": 88.0 + } + ], + "int4_results": [ + { + "id": 0, + "kind": "shape", + "object": "blue hexagon", + "prompt": "Locate the blue hexagon.", + "gt_box_norm": [ + 407, + 102, + 609, + 336 + ], + "answer": "Loc hex hex hex<407><101><611><337><|im_end|>", + "pred_box_norm": [ + 407, + 101, + 611, + 337 + ], + "valid": true, + "elapsed_sec": 2.5353212356567383, + "iou": 0.9818045862412762, + "center_l1": 1.0 + }, + { + "id": 1, + "kind": "shape", + "object": "yellow square", + "prompt": "Locate the yellow square.", + "gt_box_norm": [ + 130, + 594, + 481, + 945 + ], + "answer": "yellow yellow square yellow<129><593><483><947><|im_end|>", + "pred_box_norm": [ + 129, + 593, + 483, + 947 + ], + "valid": true, + "elapsed_sec": 2.537963628768921, + "iou": 0.9831226659006033, + "center_l1": 1.0 + }, + { + "id": 2, + "kind": "shape", + "object": "yellow hexagon", + "prompt": "Locate the yellow hexagon.", + "gt_box_norm": [ + 180, + 316, + 329, + 488 + ], + "answer": "Locate hex hex hexagon<179><313><331><490><|im_end|>", + "pred_box_norm": [ + 179, + 313, + 331, + 490 + ], + "valid": true, + "elapsed_sec": 2.5924477577209473, + "iou": 0.9525721082366935, + "center_l1": 1.0 + }, + { + "id": 3, + "kind": "shape", + "object": "crimson hexagon", + "prompt": "Locate the crimson hexagon.", + "gt_box_norm": [ + 773, + 502, + 938, + 693 + ], + "answer": "Loc the hex hexagon<772><497><945><698><|im_end|>", + "pred_box_norm": [ + 772, + 497, + 945, + 698 + ], + "valid": true, + "elapsed_sec": 2.6095542907714844, + "iou": 0.9063066172030023, + "center_l1": 3.0 + }, + { + "id": 4, + "kind": "shape", + "object": "blue hexagon", + "prompt": "Locate the blue hexagon.", + "gt_box_norm": [ + 599, + 548, + 873, + 864 + ], + "answer": "Loc hex hex hexagon<598><547><875><865><|im_end|>", + "pred_box_norm": [ + 598, + 547, + 875, + 865 + ], + "valid": true, + "elapsed_sec": 2.5965449810028076, + "iou": 0.9829484821651567, + "center_l1": 0.5 + }, + { + "id": 5, + "kind": "shape", + "object": "green hexagon", + "prompt": "Locate the green hexagon.", + "gt_box_norm": [ + 467, + 611, + 700, + 881 + ], + "answer": "Loc the hex hex hex<466><611><703><883><|im_end|>", + "pred_box_norm": [ + 466, + 611, + 703, + 883 + ], + "valid": true, + "elapsed_sec": 2.6077120304107666, + "iou": 0.9758935219657483, + "center_l1": 2.0 + }, + { + "id": 6, + "kind": "shape", + "object": "red triangle", + "prompt": "Locate the red triangle.", + "gt_box_norm": [ + 482, + 36, + 676, + 203 + ], + "answer": "red triangle<481><37><684><212><|im_end|>", + "pred_box_norm": [ + 481, + 37, + 684, + 212 + ], + "valid": true, + "elapsed_sec": 2.551879644393921, + "iou": 0.9015929897253563, + "center_l1": 8.5 + }, + { + "id": 7, + "kind": "shape", + "object": "olive square", + "prompt": "Locate the olive square.", + "gt_box_norm": [ + 350, + 216, + 707, + 573 + ], + "answer": "ollive square<349><216><708><574><|im_end|>", + "pred_box_norm": [ + 349, + 216, + 708, + 574 + ], + "valid": true, + "elapsed_sec": 2.554426670074463, + "iou": 0.9916512348080484, + "center_l1": 0.5 + }, + { + "id": 8, + "kind": "shape", + "object": "crimson hexagon", + "prompt": "Locate the crimson hexagon.", + "gt_box_norm": [ + 757, + 141, + 893, + 297 + ], + "answer": "Loc the hex hexagon<750><137><903><303><|im_end|>", + "pred_box_norm": [ + 750, + 137, + 903, + 303 + ], + "valid": true, + "elapsed_sec": 2.630565643310547, + "iou": 0.8353413654618473, + "center_l1": 2.5 + }, + { + "id": 9, + "kind": "shape", + "object": "red circle", + "prompt": "Locate the red circle.", + "gt_box_norm": [ + 116, + 562, + 374, + 819 + ], + "answer": "Locate the red circle<113><557><376><824><|im_end|>", + "pred_box_norm": [ + 113, + 557, + 376, + 824 + ], + "valid": true, + "elapsed_sec": 2.6140995025634766, + "iou": 0.9442474473448114, + "center_l1": 0.5 + }, + { + "id": 10, + "kind": "shape", + "object": "blue circle", + "prompt": "Locate the blue circle.", + "gt_box_norm": [ + 473, + 451, + 711, + 689 + ], + "answer": "Locate circle blue circle<470><450><716><694><|im_end|>", + "pred_box_norm": [ + 470, + 450, + 716, + 694 + ], + "valid": true, + "elapsed_sec": 2.6373541355133057, + "iou": 0.9436891909902706, + "center_l1": 3.0 + }, + { + "id": 11, + "kind": "shape", + "object": "purple triangle", + "prompt": "Locate the purple triangle.", + "gt_box_norm": [ + 453, + 205, + 596, + 328 + ], + "answer": "purple purple<453><205><597><331><|im_end|>", + "pred_box_norm": [ + 453, + 205, + 597, + 331 + ], + "valid": true, + "elapsed_sec": 2.5675463676452637, + "iou": 0.9694113756613757, + "center_l1": 2.0 + }, + { + "id": 12, + "kind": "shape", + "object": "olive triangle", + "prompt": "Locate the olive triangle.", + "gt_box_norm": [ + 442, + 233, + 614, + 383 + ], + "answer": "ol olive triangle<441><233><616><386><|im_end|>", + "pred_box_norm": [ + 441, + 233, + 616, + 386 + ], + "valid": true, + "elapsed_sec": 2.538550615310669, + "iou": 0.9635854341736695, + "center_l1": 2.0 + }, + { + "id": 13, + "kind": "shape", + "object": "purple hexagon", + "prompt": "Locate the purple hexagon.", + "gt_box_norm": [ + 243, + 606, + 510, + 915 + ], + "answer": "Loc purple hex purple hexagon<242><606><512><917><|im_end|>", + "pred_box_norm": [ + 242, + 606, + 512, + 917 + ], + "valid": true, + "elapsed_sec": 2.6264681816101074, + "iou": 0.982529474812433, + "center_l1": 1.5 + }, + { + "id": 14, + "kind": "shape", + "object": "yellow square", + "prompt": "Locate the yellow square.", + "gt_box_norm": [ + 73, + 461, + 272, + 660 + ], + "answer": "yellow yellow square<71><460><275><662><|im_end|>", + "pred_box_norm": [ + 71, + 460, + 275, + 662 + ], + "valid": true, + "elapsed_sec": 2.5675554275512695, + "iou": 0.9610027179188507, + "center_l1": 1.0 + }, + { + "id": 15, + "kind": "shape", + "object": "purple square", + "prompt": "Locate the purple square.", + "gt_box_norm": [ + 525, + 562, + 881, + 918 + ], + "answer": "purple purple<525><562><882><919><|im_end|>", + "pred_box_norm": [ + 525, + 562, + 882, + 919 + ], + "valid": true, + "elapsed_sec": 2.572068214416504, + "iou": 0.9944056053794067, + "center_l1": 1.0 + }, + { + "id": 16, + "kind": "shape", + "object": "green triangle", + "prompt": "Locate the green triangle.", + "gt_box_norm": [ + 388, + 578, + 659, + 812 + ], + "answer": "Loc triangle<385><575><666><822><|im_end|>", + "pred_box_norm": [ + 385, + 575, + 666, + 822 + ], + "valid": true, + "elapsed_sec": 2.5615198612213135, + "iou": 0.9136542423674845, + "center_l1": 5.5 + }, + { + "id": 17, + "kind": "shape", + "object": "green hexagon", + "prompt": "Locate the green hexagon.", + "gt_box_norm": [ + 145, + 392, + 304, + 575 + ], + "answer": "Loc the hex hex hex<143><391><305><578><|im_end|>", + "pred_box_norm": [ + 143, + 391, + 305, + 578 + ], + "valid": true, + "elapsed_sec": 2.6266040802001953, + "iou": 0.9604872251931076, + "center_l1": 1.5 + }, + { + "id": 18, + "kind": "shape", + "object": "green hexagon", + "prompt": "Locate the green hexagon.", + "gt_box_norm": [ + 159, + 259, + 430, + 571 + ], + "answer": "Loc hex hex hex hex<159><258><432><574><|im_end|>", + "pred_box_norm": [ + 159, + 258, + 432, + 574 + ], + "valid": true, + "elapsed_sec": 2.606282949447632, + "iou": 0.9801084990958409, + "center_l1": 2.0 + }, + { + "id": 19, + "kind": "shape", + "object": "crimson square", + "prompt": "Locate the crimson square.", + "gt_box_norm": [ + 140, + 279, + 329, + 469 + ], + "answer": "cr the square<137><278><331><472><|im_end|>", + "pred_box_norm": [ + 137, + 278, + 331, + 472 + ], + "valid": true, + "elapsed_sec": 2.5877766609191895, + "iou": 0.9541396535232225, + "center_l1": 1.5 + }, + { + "id": 20, + "kind": "shape", + "object": "red square", + "prompt": "Locate the red square.", + "gt_box_norm": [ + 444, + 621, + 696, + 873 + ], + "answer": "red square<443><620><700><876><|im_end|>", + "pred_box_norm": [ + 443, + 620, + 700, + 876 + ], + "valid": true, + "elapsed_sec": 2.584327459335327, + "iou": 0.9652237354085603, + "center_l1": 2.5 + }, + { + "id": 21, + "kind": "shape", + "object": "yellow circle", + "prompt": "Locate the yellow circle.", + "gt_box_norm": [ + 291, + 573, + 656, + 938 + ], + "answer": "Locate yellow circle<289><570><659><941><|im_end|>", + "pred_box_norm": [ + 289, + 570, + 659, + 941 + ], + "valid": true, + "elapsed_sec": 2.6067168712615967, + "iou": 0.9705325271363007, + "center_l1": 0.5 + }, + { + "id": 22, + "kind": "shape", + "object": "green circle", + "prompt": "Locate the green circle.", + "gt_box_norm": [ + 399, + 125, + 769, + 494 + ], + "answer": "Loc the green green<397><122><771><498><|im_end|>", + "pred_box_norm": [ + 397, + 122, + 771, + 498 + ], + "valid": true, + "elapsed_sec": 2.582242488861084, + "iou": 0.9708869040846513, + "center_l1": 0.5 + }, + { + "id": 23, + "kind": "shape", + "object": "pink hexagon", + "prompt": "Locate the pink hexagon.", + "gt_box_norm": [ + 181, + 461, + 402, + 717 + ], + "answer": "Loc the hex hexagon<173><458><411><724><|im_end|>", + "pred_box_norm": [ + 173, + 458, + 411, + 724 + ], + "valid": true, + "elapsed_sec": 2.646030902862549, + "iou": 0.8936627282491945, + "center_l1": 2.5 + }, + { + "id": 24, + "kind": "shape", + "object": "pink square", + "prompt": "Locate the pink square.", + "gt_box_norm": [ + 428, + 361, + 775, + 709 + ], + "answer": "pink the pink pink<427><361><777><711><|im_end|>", + "pred_box_norm": [ + 427, + 361, + 777, + 711 + ], + "valid": true, + "elapsed_sec": 2.614718198776245, + "iou": 0.9857632653061225, + "center_l1": 1.5 + }, + { + "id": 25, + "kind": "letter", + "object": "letter O", + "prompt": "Locate the letter O.", + "gt_box_norm": [ + 513, + 312, + 838, + 603 + ], + "answer": "letter the O<516><371><838><697><|im_end|>", + "pred_box_norm": [ + 516, + 371, + 838, + 697 + ], + "valid": true, + "elapsed_sec": 2.6110918521881104, + "iou": 0.5983835697636231, + "center_l1": 78.0 + }, + { + "id": 26, + "kind": "letter", + "object": "letter S", + "prompt": "Locate the letter S.", + "gt_box_norm": [ + 401, + 110, + 672, + 395 + ], + "answer": "letter S S<400><151><680><478><|im_end|>", + "pred_box_norm": [ + 400, + 151, + 680, + 478 + ], + "valid": true, + "elapsed_sec": 2.620600938796997, + "iou": 0.6440377516533393, + "center_l1": 65.5 + }, + { + "id": 27, + "kind": "letter", + "object": "letter X", + "prompt": "Locate the letter X.", + "gt_box_norm": [ + 539, + 382, + 825, + 652 + ], + "answer": "letter<541><437><838><756><|im_end|>", + "pred_box_norm": [ + 541, + 437, + 838, + 756 + ], + "valid": true, + "elapsed_sec": 2.598883628845215, + "iou": 0.5505712198948631, + "center_l1": 87.0 + }, + { + "id": 28, + "kind": "letter", + "object": "letter D", + "prompt": "Locate the letter D.", + "gt_box_norm": [ + 317, + 279, + 773, + 680 + ], + "answer": "letter the<350><375><753><813><|im_end|>", + "pred_box_norm": [ + 350, + 375, + 753, + 813 + ], + "valid": true, + "elapsed_sec": 2.6107256412506104, + "iou": 0.5198240680044829, + "center_l1": 121.0 + }, + { + "id": 29, + "kind": "letter", + "object": "letter Q", + "prompt": "Locate the letter Q.", + "gt_box_norm": [ + 641, + 265, + 957, + 596 + ], + "answer": "letter the<641><287><1000><704><|im_end|>", + "pred_box_norm": [ + 641, + 287, + 1000, + 704 + ], + "valid": true, + "elapsed_sec": 2.6167960166931152, + "iou": 0.6233059908716606, + "center_l1": 86.5 + }, + { + "id": 30, + "kind": "letter", + "object": "letter O", + "prompt": "Locate the letter O.", + "gt_box_norm": [ + 115, + 545, + 434, + 827 + ], + "answer": "letter<106><585><437><922><|im_end|>", + "pred_box_norm": [ + 106, + 585, + 437, + 922 + ], + "valid": true, + "elapsed_sec": 2.61545991897583, + "iou": 0.6210269735413131, + "center_l1": 70.5 + }, + { + "id": 31, + "kind": "letter", + "object": "letter R", + "prompt": "Locate the letter R.", + "gt_box_norm": [ + 109, + 110, + 471, + 452 + ], + "answer": "letter R<137><183><495><556><|im_end|>", + "pred_box_norm": [ + 137, + 183, + 495, + 556 + ], + "valid": true, + "elapsed_sec": 2.5976812839508057, + "iou": 0.5364196498937263, + "center_l1": 114.5 + }, + { + "id": 32, + "kind": "letter", + "object": "letter G", + "prompt": "Locate the letter G.", + "gt_box_norm": [ + 369, + 434, + 832, + 860 + ], + "answer": "letter G<388><536><812><1000><|im_end|>", + "pred_box_norm": [ + 388, + 536, + 812, + 1000 + ], + "valid": true, + "elapsed_sec": 2.62091064453125, + "iou": 0.5353743988651509, + "center_l1": 121.5 + }, + { + "id": 33, + "kind": "letter", + "object": "letter E", + "prompt": "Locate the letter E.", + "gt_box_norm": [ + 424, + 168, + 771, + 537 + ], + "answer": "letter<453><237><750><660><|im_end|>", + "pred_box_norm": [ + 453, + 237, + 750, + 660 + ], + "valid": true, + "elapsed_sec": 2.5991032123565674, + "iou": 0.541397790659521, + "center_l1": 100.0 + }, + { + "id": 34, + "kind": "letter", + "object": "letter I", + "prompt": "Locate the letter I.", + "gt_box_norm": [ + 698, + 218, + 895, + 603 + ], + "answer": "letter I<741><324><846><710><|im_end|>", + "pred_box_norm": [ + 741, + 324, + 846, + 710 + ], + "valid": true, + "elapsed_sec": 2.617623805999756, + "iou": 0.33641479099678456, + "center_l1": 109.5 + }, + { + "id": 35, + "kind": "letter", + "object": "letter E", + "prompt": "Locate the letter E.", + "gt_box_norm": [ + 492, + 287, + 828, + 646 + ], + "answer": "letter<513><375><816><757><|im_end|>", + "pred_box_norm": [ + 513, + 375, + 816, + 757 + ], + "valid": true, + "elapsed_sec": 2.649630308151245, + "iou": 0.5323129582450067, + "center_l1": 104.0 + }, + { + "id": 36, + "kind": "letter", + "object": "letter Q", + "prompt": "Locate the letter Q.", + "gt_box_norm": [ + 493, + 371, + 923, + 820 + ], + "answer": "letter the<500><462><912><926><|im_end|>", + "pred_box_norm": [ + 500, + 462, + 912, + 926 + ], + "valid": true, + "elapsed_sec": 2.7534232139587402, + "iou": 0.6230242204594031, + "center_l1": 100.5 + }, + { + "id": 37, + "kind": "letter", + "object": "letter D", + "prompt": "Locate the letter D.", + "gt_box_norm": [ + 403, + 253, + 810, + 609 + ], + "answer": "letter the<434><350><788><724><|im_end|>", + "pred_box_norm": [ + 434, + 350, + 788, + 724 + ], + "valid": true, + "elapsed_sec": 2.61975359916687, + "iou": 0.49399252163231, + "center_l1": 110.5 + }, + { + "id": 38, + "kind": "letter", + "object": "letter N", + "prompt": "Locate the letter N.", + "gt_box_norm": [ + 440, + 397, + 762, + 678 + ], + "answer": "letter<459><454><746><775><|im_end|>", + "pred_box_norm": [ + 459, + 454, + 746, + 775 + ], + "valid": true, + "elapsed_sec": 2.633452892303467, + "iou": 0.5433355025735077, + "center_l1": 78.5 + }, + { + "id": 39, + "kind": "letter", + "object": "letter K", + "prompt": "Locate the letter K.", + "gt_box_norm": [ + 438, + 247, + 854, + 624 + ], + "answer": "letter K<466><349><856><733><|im_end|>", + "pred_box_norm": [ + 466, + 349, + 856, + 733 + ], + "valid": true, + "elapsed_sec": 2.6402177810668945, + "iou": 0.5337882456526525, + "center_l1": 120.5 + }, + { + "id": 40, + "kind": "letter", + "object": "letter X", + "prompt": "Locate the letter X.", + "gt_box_norm": [ + 79, + 188, + 380, + 473 + ], + "answer": "letter<70><244><391><578><|im_end|>", + "pred_box_norm": [ + 70, + 244, + 391, + 578 + ], + "valid": true, + "elapsed_sec": 2.625417947769165, + "iou": 0.5555654066252922, + "center_l1": 81.5 + }, + { + "id": 41, + "kind": "letter", + "object": "letter X", + "prompt": "Locate the letter X.", + "gt_box_norm": [ + 295, + 140, + 667, + 491 + ], + "answer": "letter X<293><224><678><596><|im_end|>", + "pred_box_norm": [ + 293, + 224, + 678, + 596 + ], + "valid": true, + "elapsed_sec": 2.6305019855499268, + "iou": 0.5692963752665245, + "center_l1": 99.0 + }, + { + "id": 42, + "kind": "letter", + "object": "letter G", + "prompt": "Locate the letter G.", + "gt_box_norm": [ + 382, + 379, + 777, + 743 + ], + "answer": "letter<395><440><782><844><|im_end|>", + "pred_box_norm": [ + 395, + 440, + 782, + 844 + ], + "valid": true, + "elapsed_sec": 2.6416428089141846, + "iou": 0.6277510819928193, + "center_l1": 90.0 + }, + { + "id": 43, + "kind": "letter", + "object": "letter R", + "prompt": "Locate the letter R.", + "gt_box_norm": [ + 66, + 462, + 376, + 755 + ], + "answer": "letter R<83><523><407><857><|im_end|>", + "pred_box_norm": [ + 83, + 523, + 407, + 857 + ], + "valid": true, + "elapsed_sec": 2.6298985481262207, + "iou": 0.518623636224918, + "center_l1": 105.5 + }, + { + "id": 44, + "kind": "letter", + "object": "letter E", + "prompt": "Locate the letter E.", + "gt_box_norm": [ + 536, + 219, + 831, + 533 + ], + "answer": "letter<553><281><815><637><|im_end|>", + "pred_box_norm": [ + 553, + 281, + 815, + 637 + ], + "valid": true, + "elapsed_sec": 2.649198293685913, + "iou": 0.5507599392715928, + "center_l1": 83.5 + }, + { + "id": 45, + "kind": "letter", + "object": "letter T", + "prompt": "Locate the letter T.", + "gt_box_norm": [ + 213, + 520, + 571, + 902 + ], + "answer": "letter T<203><607><569><1000><|im_end|>", + "pred_box_norm": [ + 203, + 607, + 569, + 1000 + ], + "valid": true, + "elapsed_sec": 2.6320745944976807, + "iou": 0.5981523460193423, + "center_l1": 98.5 + }, + { + "id": 46, + "kind": "letter", + "object": "letter M", + "prompt": "Locate the letter M.", + "gt_box_norm": [ + 311, + 335, + 836, + 720 + ], + "answer": "letter M<344><429><811><846><|im_end|>", + "pred_box_norm": [ + 344, + 429, + 811, + 846 + ], + "valid": true, + "elapsed_sec": 2.6421539783477783, + "iou": 0.52074400211521, + "center_l1": 114.0 + }, + { + "id": 47, + "kind": "letter", + "object": "letter R", + "prompt": "Locate the letter R.", + "gt_box_norm": [ + 481, + 604, + 822, + 926 + ], + "answer": "letter R<500><672><837><1000><|im_end|>", + "pred_box_norm": [ + 500, + 672, + 837, + 1000 + ], + "valid": true, + "elapsed_sec": 2.666004180908203, + "iou": 0.5903139660772284, + "center_l1": 88.0 + }, + { + "id": 48, + "kind": "letter", + "object": "letter M", + "prompt": "Locate the letter M.", + "gt_box_norm": [ + 262, + 447, + 805, + 846 + ], + "answer": "letter<295><537><812><1000><|im_end|>", + "pred_box_norm": [ + 295, + 537, + 812, + 1000 + ], + "valid": true, + "elapsed_sec": 2.6482160091400146, + "iou": 0.5280493770900488, + "center_l1": 142.0 + }, + { + "id": 49, + "kind": "letter", + "object": "letter P", + "prompt": "Locate the letter P.", + "gt_box_norm": [ + 617, + 362, + 922, + 666 + ], + "answer": "letter P<635><422><917><772><|im_end|>", + "pred_box_norm": [ + 635, + 422, + 917, + 772 + ], + "valid": true, + "elapsed_sec": 2.659090518951416, + "iou": 0.5611848758685936, + "center_l1": 89.5 + } + ], + "ts": "2026-06-09T09:24:52.307271Z" +} \ No newline at end of file diff --git a/models/LocateAnything/config/benchmarks/bench50_hybrid_summary.txt b/models/LocateAnything/config/benchmarks/bench50_hybrid_summary.txt new file mode 100644 index 00000000..f5df2cc3 --- /dev/null +++ b/models/LocateAnything/config/benchmarks/bench50_hybrid_summary.txt @@ -0,0 +1,10 @@ +=== LocateAnything accuracy drop: BF16 vs INT4 (n=50) === + mode=hybrid total_wall=138.0s (parallel across 2 GPUs) + BF16 | n= 50 | valid=100.0% | mean_iou=0.753 | iou@0.5= 92.0% | iou@0.75= 50.0% | mean_center_l1= 56.7 (0..2000) | latency=2.75s + INT4 | n= 50 | valid=100.0% | mean_iou=0.754 | iou@0.5= 96.0% | iou@0.75= 50.0% | mean_center_l1= 50.2 (0..2000) | latency=2.61s + + delta mean_iou : +0.002 + delta iou@0.5 : +4.0% + delta iou@0.75 : +0.0% + delta centerL1 : -6.5 (norm 0..2000) + delta latency : -0.14s diff --git a/models/LocateAnything/config/benchmarks/viz/compare_00_letter_letter_R.png b/models/LocateAnything/config/benchmarks/viz/compare_00_letter_letter_R.png new file mode 100644 index 0000000000000000000000000000000000000000..fbe114df92dd6ea7a17a021f1531135eab02a585 GIT binary patch literal 16390 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 SSc}2Ex}2<%Opdg{%l`pYu)6I4 literal 0 HcmV?d00001 diff --git a/models/LocateAnything/config/benchmarks/viz/compare_09_shape_crimson_hexagon.png b/models/LocateAnything/config/benchmarks/viz/compare_09_shape_crimson_hexagon.png new file mode 100644 index 0000000000000000000000000000000000000000..fc99b00dd9776378c0451dfb37ebcb21e3b9014e GIT binary patch literal 13001 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 J0?ns?{Wp9{)b9WQ literal 0 HcmV?d00001 diff --git a/models/LocateAnything/config/benchmarks/viz/compare_10_shape_purple_triangle.png b/models/LocateAnything/config/benchmarks/viz/compare_10_shape_purple_triangle.png new file mode 100644 index 0000000000000000000000000000000000000000..99097e1cb92ed97dbdadb60d2702f3565734b19c GIT binary patch literal 12462 zcmeHtXIN8dyKWd}1{guGfr^kp5wK8{rUViV!yr->1?eC)v|#9j5FG=IGJ?`OqVyut zrA9@R-g}FbP!c)>NJu#^v#;}A=f}6Nv-jCQ&YxL-AnRS_eedUf?&p5iTF;COv;}@S z{R;#F5zx8y+g%9c$Kw#l4>G(zfITKBU6~B5KXX3~!8C4|IIoH& zNdEo@-}c?R^ix@6DPjDApND#wRrhYwI9WOe*68$KyfY0FsMx1*=sVN z?D&qx-}vol%O4J0e7Xvf4s~wwG-j{fv9gKO?a4J9(WWt28CO_na6j!G8g6wzH+p`4 z9!%o>xuix<@K-^BR}ccZaeSH!0{Qc-I@oiEzypE&`g|Sy``Zz52;{NMXKn~YNGkyB zc=K-#4ogMjs22KvZyAh%Tt=;|#yhlW6~dju?)lmF*VA{k1)JX>D(qg5JPP=*l#`M? z<+40die0H3KINSHXm`@zAMQA~KegLPanMbWYuN776}&$8l49fBnOxbaRb5$WguI_e98Wrey%7~BP)U7P=jRCbpY$~~HtwGehg##D zx2%T1MvfnPS2t9;;B@WFXu6#R=~uPV&ZhQxbXVdP`>iEG1arM@AHnF2Lh>5t=#5(6 z%nzD*CasduRAg3OfLB}p$c^>T-;Wb75Mkv$_>uO8RIbrvTOv|(8s0xO)rcXt#a%L; z3fW&7w)F1&2Hz=7W9)t6flh$2rdE?;b6-k+E}T9WGw3fYXZgWv`mP7B=Yu zVZ@k~J85k9Xoiaixm0&}3>Mta;4l~J98DlT4;SPt%*&nhy}h@L4K`2 zX=9T~e-dsGu~M^;Zo}S8fCjIBGB}G$&T&o;bUJ@MHH5Jg1!pW$1`9I+W}dC#*09F8 z29x|U|LsiK*62Dzpg7d)QgXWW*3r@_{Z*>*c*X&MV(bi@KaWeY- z-NEyUZbL;V7nj8se%zC{OHV#TW|&xtw`YgJdi!3Rt}4)9Eb zIKsUBwC#k8h?UPB-#^6O*;`nQpD?xD0Hm$%3tQ^X&A_wi0IE^zlv&j=fP6Q6f0^%? zlwQ(RatuIW-s(*lIc$;bHx;;WUur)W&&Z{u?620L$(@wY;5481mY+O~cRjmXem8+P zHg&yk&Q&AbY>$`SZ_$R|HQVs+y6)T*CNQXL^Nz@7cuxGV{j$b;0U$|SVFbVXF!Ox0 z+&SvZ_04u0Hl|Z?DX5h92v5h@b1jFhfr!(MW3NPu$0M{Bhk|+ypKC3QmxCXFz7u(_ zwOc?g%NDT?nC^nD71hJ{zCW$2)F`Q0sT#j1FQu30)pjAbBLhLKsR=A;*kLR?Bd|ke z&Vwr5%5FnvygRO3GJRLXTzH{6wYT^-3J%i5{_9_(!DXh_f#eUfk%iken3{UOl`+BK z@7xh0^6w1RC%n6@@GP3@q))%^u$6zGj|miO6wll!G%5Z?;<8O6Gu68b<>|@p z@^9Swd`O-kq~bBQU7o>OZWgg&cA`U!HOH%VHrwUb*6(%H2X5^E+H~cPrY8=P-rF^` zN@p;`5zI`r&Y9*2=dRSGPAB4aw!DW%HxNA#K7RoJ@@P4gN`;}DYJI5&>Kk8vIwX9L zWY!o=k2AHV7uv8W@9I{Q)dMjeg(hZoyF?DFJwaYj!hPbyM!bcmS(W=Jx1jpVR)^Zg zi56V4q>i3(^~#Zn3V=&@ogc`1`s9B*68zMVq!2$mu?TP z8U19X3p&vYfG}Wr>eGZ{7xybvwidcGu6sN2PJ@-n3rAR?Ej*gfei2hBbiE|J(K(JZ z6p82&q%=chg)=Rv%{`ZeGy8E_4}9vvwaCY&W-4yAyw5!;i<$gm1D^$cfQPH`}vu;Hg z82~UP(mTt{>9iDLn1xq3-uF1>G7iUUlmZfFUReyz%F zY-9sUx$@d=%rvV`cxiTS0dB*oMdfO0YV3J5d;TxQuEqGOL6ghK39j;js)xOSTVVkW zc`Jot<-I`_4+x&cA~*{$xU;hOCkoj?wb-BgTgT@wbXZry-$LEB;2kL z5|o(Y>M8R;PPDGv=m8#)V*4-9!S)GOetdsZ9~4`fFf`+;W19$ZuldNi-&2D(TL)D^ zie0z+Owbh6@M(*^5a(}F^xzK2Pn8hn-n>{oJs~S`5RF3BY3>HSf;b zgPX3Tohv9Q$$;a6Xj1$8Yeamw#|Qd+%B7N$`pq^#0sFa@R|%FF9eaCw-syuhJgAFf zLvjR#M>Aj0;9~aQ4wz!UJLXo>mJ(;xPb2@n+V8F++CR`)=jd^$V6k^)ROehZDm*PS zMr>ec$nTq&|GlZ2y_txEQ>^?($spHC3Ja;hnHse}ja-24k9@mWM+2TB@|2c+N+Zw> zS*u!~nJ>>wEgxz5D;I@5JmS}AJz#QqCZ#%5Tvqs1A?Ypc;dkMPo?_ZV7vYHaERd4h zgtR*Md<<+1s7oWQ7;ObgoH4npsqKNfRk8O&(%*c(O<#SO!4;vH$Yjetf=4@RVh*%ZQNhA@SrPps~c;S(%$(u z6mFi)=mzC*s?fCLump3-5I^?t!k`@N;g>%vaK(#h_Ud!rbz%>%EE0+{7b1klJ zb&fT!_LVlvvj0zz3;hZdeafC5R9l(j7uW8=7C@k-4Abjr@|7vnUfGWZtxn}YUYMYo zl>xs5Wv_=Tci1iUWrHeU6)kCMgQFdm-~7u|vy>NRBmcMNQ5|vC@;`f)@=lt|hdGt< zj+3;XYZ>N|)5Ck;YTNkqYLPhX-9w>BH#e%r?nJ+pbVMPzBXhgoFkDE=AoT&x8$>Q{ z{XISKSwIS&+NU%*5rhRrSN{c|PpmNi8fUWf0G8`=N z>8$$T@0#mwUGBdVO%;<<#bkK0b6<$6dZNn=Y8^Y%oKtGcH0&E;u)$Mmqc>AZP!5oY zfjHTZU5xKMh`sdPdgs-NnggQ)@~EyHiuUjjkjO$YG6iui5eQkcvMiw2d$Um`b}nmd z%fIOamlw_~p=uHTrSEq8`?pFL`6_Ly?oC1~S;mdt2R`nSyb95*kx^TfR}F;56=U_m z%Z}Vk;5(*9&vybDIC#ur5a#qtDAITN&uSuTMY+PkdE8`W)rwQK7MnPjq2}vKQ|g`P z-ZTN!u3)f;2bpQVXYKXrCkwr*2H%N#fkPs46Ablz;qIidY5sGA^%DhMyQs?H`$V{W zmlwZ^F0ylRU$h#+vIROVAFQn^n_gnZ*Q!h2u^vvm`8 zd@ZbvL0~CbHp3C`f-CFFdTYrq`(U&;{?D}*BMtH%YYMX;7~^ivM(Pumrjk@t2MoR;JEz~By zIe%br{Wo8MIQJXCiZ>ZOS)RfVE5zUC?Q0^2Y7QBYAbA{}R_w z(}@P!MGWH69o!juw50+Jb4C&Z9|G(lNNIKd)rllUXOnRLDRXI259eWAZoI`H9bU}- zaSy@SLg>a{4qVDk=mG?8xhd`EdULYU+G-;G1VHw8O-;?pN)CIC)9AC*cVMZYoDHb| zwa35D2?sEiatmiQ271(I#DW$xrBl6-9vNwH978y~&egv_{m7dt>E}a6myyI05e;0o zW(L6hOhp|gmB=mRBOBGh_`*5=DeC4P;Aa^4><) zPKSveba50|jI<$~!`y;#27oEw`EtzgvRRn}C|f*dyl&7~3RgiP0UEC) zV7ktqH%OBlOvV z#29LGvBf$u`}IW~aFzyOI@3+z2i6}5A8{ca>ldH|h50S7 z;W_(l#w*Fm$(wX0h~Umf6rOp|lrkg)m8ta}NqX~t7jo@0cN)%A4Sy+OgR*?!>Oc-H zztlW@O4;=u4#xsb%ob=7SG+U!EgkbBDyX*jdK^u}ZPniGZB;WF zTLNdpov&eiq8bjy?Xomi=h6L zDIeg6fe+r#ZV_GARleuA90~=fZya<0mwBe4J6M#V^TX!Unrj zv;~5kGbq2?P~7B!)JA9*|*XhWcR$^`8Zko$vH_fqrs_f3b5`5}2mmupRB zH7kGE<~cB*L)~i=z)F|Y%qPQ9f)LirhrJD{fsmgIK--4jehZznkJ6w}D8EOZ3H<(q z2lQj1QR;ez85y)}MVxdnS&k zROSlMv-0I)`(Jj4&F}O~yiysI*7wacaN~gy3u64A$j}YLQ6wvcP#_ z?ptkQJoIW(N3E~E4J&B%Q#i85GF{ELA8#2QDF$OC&LVkHR=DJL4`%OR^V7qpcc3KK zy`{>fmRAyl$XP^BaBK58{2AAcj5epwThzV`b;}WFQ=v3GfNDC%^I=(MSC?VE%4#w;@7O$Fd?KApKR!M zH0i{uq$_ZHP1&t=;gYR#mJblruAU+5YZP3lrXXJ^a#k7fi%#Fp zGsP`$Xe$X;w_==eOZ&y`sZtkO_4YzbGXU zJo9~G!nu7HZp9q9Nx$<#$9ta|zAedD_t&jey7AIyl20&=Q0u>zu0iH01`t?!Sz6_v zMDqI9%+&^lLMMhdo<^x2zr9pLbisey>*&QgAvh6LO*syn*;t1D%2G=5RjNf3f>nU? zvBzvVpGNp=jw2@eLUu(?r%;X#%X9f86nCjJ=`~-W*2e1VkBv-KH=CdrR<0ks55!KOU!SndK?jOmsMP?%$y?@DBcnkRh_^Xd#;`Xys?jz z1O3F5M>R9`dL|i)ghSiNSr0C+R@+R!eo6`PH(h-ut&0xS{l@oAIux0QcB!A&elg6< z^BT$QROB=$1!G#sSMg>Vln%q3b79rYroa_Nw%S0j+?mJXF`WbiF`2#I`1whlBeiV0 z3E?_vpU{zL*Sfp5_F<+;Ah+R?f2U@so>VF;9pHL9q05!?y<(!+@HifW*Ul@P_#||i z8f^ieRM;K8%R8OuKbNE5v8*DOR9-Z&*$DCxbGl3?z)$~lwAc4JJ?s^NUgECh1-|Jx zfu&7lvLUD5w=b`w+OQaXiQqgOkEpj{&J_&>vTq zxJFKDG{c9ow@>cQ);UU{AfqLlk^85hOV=2So$&Nn zze(lMiVFlGOpTFTwg62>S63zuiNoEBR?;6#h7zbRLO-E zS|o$h*s#PrbUQ{`)n<>ja|++T(;Gzy4*9asb&8#hmpc>W5;#Lpoq%!O;Jnm9-WAy# z^`idq*+wPDpNVVAy3-oM>1CD&h91i$pQa+=$D$<%$jE5J=j83bxG~ymNdm1@D9QJ? zvV08zofb#rbpe5ztn8QZZJBV9XvyR4OLwqN_)VkDsOpO0g&3n>vhM~|o)-{X!cHZ# z_PFTB8cCa-b!s8orD1{%imGmQOGVW2RU4BICr#}ul4(_E9;cPv4;V4u9DAY)-eDm7 zdXHR9a-dOO<^X+S2@u`)mhks;i&Fz-05J(K%~-bs+hRKk5@3<=i%Kd|DJr2mJ3gNY z444yHSiN)=zj|3b;Nyqt)jJ%UVZZv_KR;htGYnVtEwUgTM>-7_WEsgcdYh{~{H?_) zqCbb6ZkgylAtcpc764gXi>7cI*uQIEaEN{%WSkskl%VSwP_)+%l4SXc+_BqszTRrt zXG}a~psXEBd$_x+;7YTPgC=HiV7a^7Ghn->FRaRI*VwMxO3|1U%a`O(vXKO`H?V)* zLErl{axco5vSw)+oPB+ARzGQmvN?ApDcUU_Qrm4Zoq6vU)M+)fF+*4}dqI^Su?y`h zwU4Gz$KgA@KHGUS+e-q&Y|@d1^aSj3lmsEGxN@c6xjF;>ma(Ly(|5%lW^k=>Z#F~8 zYMT=)ZNNL~K0capJ6u4NjkZC3U^}~|o8Oy26Meq?nRCcFURv)~a>}7_Xgq#z`YV*3 zS21p}DX5Ved3rFUEgV@o;=}$)C-bF`&j4$8MNB&F!4z)S^Q4CGV{xO4;T0MyGGYBw zaU6R6OpR*Q3$gejv_8VmHpIt15q`mYMKjbJ?TTNfV`Q>DLbvEz02i&LIQ=F1w|P-aYiE=QyFO>agdfk)rDu?ARP7vQ!cdPrV~eaCC^SwR zxlA`&U(fB&b`%6hB@P^FkCB$+@xdn7dDivX&TU@%}Y!LO!c0d;yx4K=k)>L0=LN zu>JPvo0Nx#uRkfx>Vu4ul21K{)y&#GM808!96$FBE_H4llGbluAzJvcx3bM5B37Ec2GU10a~xtMi>4B%)QKaBf^|`y z9oTn1^G|AY-YQz83d+Q3${kC`DmQrCd}NOeV!~^<{n`mas}C$K*MsTxyX39Wxvu7B z1l%U5J+C92eX*MQr=)-#?d!Jbq37~wy{KS|oj@JTm_Q!#(IR>$VPI+9htBd)>C+jK9#D;tCK18OXz_!64|6@ zWuMPNnI{O=1mB7_Vv=s!QYja^pA{NFF*QmVf=PNZanX^7Te)6ieN6*+(ZRPY;dNxA z;v`9>InC<=WTiPp9XE-|sdep9y}a&Fp=jiV;?yg7?V-U^sHI!|LKJU_1f4e2*qxx2 zBSPSi_AtHZ<87$SlYMQlnwNCa^;?G_lWv9UkdHk*FQ&O3OPnpA)d8;&|9-<5{a=2= z_}_XR`Om@s&u?=7$IzW09u{~Eo{Xrdgh?(@{kGpI>6=?j6lZ9K`1AnVDCnO_QDpUM|YdZ{#&ouN_W z`2ZgK6K_!B`bWsC9N;0;JT2eJPSh_UFSnzj^5U~CpJ`UPm(GYes>CDBqS*bjJo$t-EA9kEYq-rfv(_I zgol`~fPk}jEV@9nBG+UQLE!m0Qb{2Du1u)=^*L{PIEns!WMc8I;nYvB+RwMgtCH61 z5^@Yq?ev~H)}PK4xRBy7Bs?ru_Pxjb0)LzZ3=*V!8mYoZf0YzYRCix~pEVGpJ!&au zR#i_96E!tVQ(JzkD3zm;BwnWD=fU{AA3{%YXddk{>4$+E7nIgqnccM4MG0Eh$F@pF zKt1x&&`MX-CZ#RRe|hwt%+5W&7O7F8Gjy(?yGOsONX;e(si-?#ZJnW0DVl+U8LABo z3>CKHe(`vlhR@?}DV!v?`J%E`Wp(gl?mN=5~jMyQ>6ZdUJ9URGqzbN)xAcKaT0doCX4z+a)8N z85{PJvGQzcR^rin0iB~No|oB-YWZB$QDh4_8lf@C{Mb}7k7>LLaZefhWb|6KNo8Qr zabBY;WcKSrsq#sGh^@CPkLHs`ev7erw3Y=k{YOZOG3?}70?)|Znltn26;+j$_03)( zqwZxctvM$ynPaXiLmsOd{e4Kl(_pw+W4+_(W_)mns5ZUgjCf*QmAmA9h{{_(1s`6) z^;${3;$reXbZk`uo}e3F;$l|sV5~yrk%S<@B_0xZ0<7c`0>4k2a<+ZErKJ=4mFP6I z&D4j|k^XL(pKNb{gYJTZ^rHzh>Y*)h3menn(cQB#e4?tt3mR2ZJy=Md7{79mLVeEF z*Ha8ys2KZlY`del^0qhxEGvqANMd>JZ7_cW&%u?V2|T=+SHDa>9Y6UHjkOjHT1)Z} zEaLiT^x9A1M?OKJvQdYPX#IBoO_%ieCKk+C5pq&*;Bc7K^pnhY^II)2->TD(KmE31 z+tT;w6a`b$QE$Fx8$mQY{2x1yil6MeXuqIgP8|t+b#9wWArVZ?F-TU^d^lt5*p~aR zke`oLKF!n%uw85;M*}2heDPOqI<^7)3tsw~zv6JB zQ+ex~^C>1i{gvvG{FOB5F zuM6(92w}&!#(J>b+XFpkAlpin+*MNQ3VV*_tuyCS;&&OP*JQ)@vDFkvj}Z23t1eRi6V_{oY*xWu^MUr%EygTJ^(Y z8CM=30ESn=8NW5Wm&cgk;W~gPGbz3qXZ0Mi2to#vR9Co0t3KAqnwGo32J6-?_R9^zxL^7v%X*{AwMT)hDlj^TaWl`kfg zkH=}grnZq47BVYA>V?qy?`Wx{TsAL5H9wCJ!6?f@PPp>?2FQ93%$vR$@7Qj!Ne>Ak z=(kTlsR8gVY7ZR#Q(9dipkC$6lqQR@o_rA7lR<*7iAFHnTtF6amdBqBD_6F~Z*VgG zJ{kZ`lPs7WrDaI$R5?SGPuO~i-r$+z8o2kfDl6*dLtB=lqEX1=4<{!8{AQoIpWc*9 zD0S5~3nz#MA#Dqz^=hPjLV5VQy=%66-P) z9dZUzXL)#cci66(>u1$UZr5|_3hxCLwb47{Jjp-sd%E%r=vCX>0;qsy5FgoJQB>H+ zSXns%>J693?{V?H9?lapDt|)Hej@al6KS!#Xiw!?Es@tbI#eRxfpy2F6`FDdX-UQW zeH5eei6kHD^v^wjYR0F6*7CDgL%0_o>F}ZgUk)DT#J@FN^5VZ&V+q3gMCr@aPQA+Z z)KfRzY$g8X`&^4_7f{3qZW5BG6-^i#>PzLZ(Qkh$@x#Ja>vLywVfhP= zJnUM?wuMe~MO8e|UBC6g$h$VGVVRl%wl{!aXwO#^KZsTt5)hRP@4(D=jSp8tO>Rd^ z5-Lh8xD|NGWv%DD%}p;~P@U&7UI{1-^r`7>s$@;GL)k$%BaO-Ca zjV$Of@sqz|l9?AWD<932<_q!{m{o3IaGn0J#q z%TQwpZte1&kAH#+TV)PVf>{i$p51bc$V2e{9@5J`_q-e_=g++S8mWbT$@P9MWrn1M(`94qN8Q-+dHJ~AO8zxc#QS{ literal 0 HcmV?d00001 diff --git a/models/LocateAnything/config/chat_template.json b/models/LocateAnything/config/chat_template.json new file mode 100644 index 00000000..701c0735 --- /dev/null +++ b/models/LocateAnything/config/chat_template.json @@ -0,0 +1,4 @@ +{ + "chat_template": "{% set image_count = namespace(value=0) %}{% set video_count = namespace(value=0) %}{% for message in messages %}{% if loop.first and message['role'] != 'system' %}<|im_start|>system\nYou are a helpful assistant.<|im_end|>\n{% endif %}<|im_start|>{{ message['role'] }}\n{% if message['content'] is string %}{{ message['content'] }}<|im_end|>\n{% else %}{% for content in message['content'] %}{% if content['type'] == 'image' or 'image' in content or 'image_url' in content %}{% set image_count.value = image_count.value + 1 %}{% if add_vision_id %}{% endif %}{% elif content['type'] == 'video' or 'video' in content %}{% set video_count.value = video_count.value + 1 %}{% if add_vision_id %}