CaptchaKraken MidnightV2-4B (bf16)

Full-precision weights. Also available: the unmerged adapter CaptchaKraken/MidnightV2-4B-LoRA and CPU builds for llama.cpp in CaptchaKraken/MidnightV2-4B-GGUF. Smaller models: CaptchaKraken/TwilightV2-2B, CaptchaKraken/SunlightV2-0.8B.

The Midnight V2 family (4B)

Midnight V2 is the 4B CaptchaKraken v2 pointer model. Every repo below holds the same trained model:

Repo What
CaptchaKraken/MidnightV2-4B merged bf16 weights, for vLLM (GPU) โ€” this repo
CaptchaKraken/MidnightV2-4B-q4 4-bit GPTQ (W4A16) weights, for vLLM (GPU)
CaptchaKraken/MidnightV2-4B-LoRA unmerged LoRA adapter + pointer heads, for further training
CaptchaKraken/MidnightV2-4B-GGUF llama.cpp builds (Q4_K_M, BF16, mmproj), for CPU

The other v2 pointer families: Sunlight V2 (0.8B, CaptchaKraken/SunlightV2-0.8B), Twilight V2 (2B, CaptchaKraken/TwilightV2-2B). The numbered element marks come from the v2 CNN element detector, CaptchaKraken/CaptchaKrakenV2-CNN-large (CPU-lite build: CaptchaKraken/CaptchaKrakenV2-CNN-lite).

What this is

The generation-3 pointer model: Qwen/Qwen3.5-4B, LoRA-trained (rank 16, merged) with small heads (pointer_heads.safetensors) that read the whole answer (action, points, drags, text, video moment, and the number of the marked element under each point) from one prefill of the prompt. There is no text generation. vLLM runs it as a pooling model through the CaptchaPointerForConditionalGeneration plugin.

  • Training run 20261103-qwen-4b-44k-offload: 43,963 boards (2 epochs over 23,343 rows), lr 1e-4 (heads 1e-3), accum 8, gradient checkpointing, half the boards drawn with numbered element marks. Trained on one RTX 5080 (1.27 s/board, 14.6 GiB peak). The 828 boards with 28โ€“32-frame videos had their saved activations offloaded to host RAM instead of being skipped (the previous 4B run skipped 830); 3 boards were still skipped for memory.
  • Prompt: the fixed single prompt ("every captcha is asked the same prompt").

Loading it (read this first)

The heads match client commit c5c1620 of CaptchaKraken plus client-fixes.patch (in this repo; it changes python/src/captchakraken/pointer/ only). The patch adds the element-number head these weights were trained with (elem, 6-wide slots, PACKED = 225), the marks cross-check, and the two vLLM serving fixes from the 0.8B card (full video markers; prefix caching off). The unpatched c5c1620 client will refuse these heads.

from captchakraken.pointer.service import PointerService   # client c5c1620 + client-fixes.patch
svc = PointerService("<this repo, downloaded>", detector="detector_r18.pt")  # CaptchaKrakenV2-CNN-large
svc.solve(image=pil_image, marked=True)      # or frames=[...] for a clipvideo-cut video

On vLLM 0.25.1 the plugin is registered in the calling process only. Set VLLM_ENABLE_V1_MULTIPROCESSING=0, or the engine process will report the architecture as unsupported.

Gate results (Tier 2 gate set, 1,067 hand-labelled real boards)

Solved rate, run through transformers on an RTX 5080 (median 151 ms per board), not through vLLM. Marked = the CNN detector's numbered element marks drawn on the board; plain = the bare board.

marked plain
All 74.2% (1,061) 75.2% (1,067)
All stills 76.9% 77.9%
Click (674) 76.2 78.3
Grid (223) 79.4 78.5
Type (12) 62.5 (8 marked) 41.7
Video (158) 58.9 59.5

Against the previous 4B run (20261102-qwen-4b-44k, same recipe, but the 830 longest videos skipped instead of offloaded): stills 76.1% / 76.7% โ†’ 76.9% / 77.9% (marked / plain), video 59.5% / 59.5% โ†’ 58.9% / 59.5%. Keeping the long videos did not move the video score; the stills gained about a point.

These numbers are from transformers, so they are not directly comparable with the TwilightV2-2B card's vLLM numbers (72.6% plain / 68.2% marked).

Per-board results (eval/eval_gate.jsonl, one line per board and mode) and the run's validation split scores (eval/val.json) are in eval/.

Results across the family

This model is in the 4B column. The bold heading marks this size.

Every v2 pointer size, on the same 1,067 hand-labelled real boards, served through vLLM 0.25.1 on an RTX 5080. Percent of boards solved; higher is better. q4 is 4-bit GPTQ (W4A16); the others are bf16.

Plain (the bare board):

0.8B 0.8B q4 2B 4B 4B q4
All (1,067) 53.5% 53.9% 72.6% 75.4% 75.1%
Click (674) 60.4 61.6 76.3 78.3 77.9
Grid (223) 31.8 29.6 75.8 78.9 78.9
Video (158) 56.3 57.0 54.4 59.5 59.5
Type (12) 33.3 33.3 50.0 50.0 50.0

Marked (the CNN detector's numbered marks drawn on the board), stills only, on the boards all five runs marked:

0.8B 0.8B q4 2B 4B 4B q4
All (904) 50.2% 49.8% 70.5% 71.6% 71.0%
Click (673) 58.5 58.8 73.3 73.7 73.6
Grid (223) 26.0 22.9 62.3 65.5 63.7
Type (8) 25.0 37.5 62.5 62.5 62.5
  • 2B solves about 19 points more than 0.8B on the plain boards, split about evenly between clicks and grids. Grids are the sharpest jump (31.8 to 75.8). 4B adds about 3 more.
  • Video barely follows size: 0.8B is ahead of 2B there, and 4B leads by about 3 points.
  • 4-bit moves the totals by less than a point. Its largest cost is on marked grids (2 to 3 points). A 2B q4 has not been measured or published.

How far to trust the gaps:

  • The 0.8B was trained on an earlier build of the data (2026-10-30), so not all of its gap is model size.
  • Compare sizes on the plain table. Marked scores also depend on the detector, and the 4B card names a different detector checkpoint from the 0.8B and 2B cards.
  • The 4B run did not score marked video, so marked video is left out for every size. That is why these marked totals differ from the ones quoted elsewhere on the cards, which cover different board sets.
  • Type has only 12 boards plain and 8 marked, so treat those rows as rough.
  • MidnightV2-4B's own gate results were run through transformers, so use this table, not those, to compare it with the other sizes.

Per-board results: 0.8B, 0.8B q4, 2B, 4B, 4B q4.

License: LGPL-3.0.

Downloads last month
2
Safetensors
Model size
5B params
Tensor type
BF16
ยท
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for CaptchaKraken/MidnightV2-4B

Finetuned
Qwen/Qwen3.5-4B
Finetuned
(1,287)
this model
Quantizations
1 model

Collection including CaptchaKraken/MidnightV2-4B