Skip to content
MrJev

OpenJev-Vision

Encodes an image once and answers several typed questions from the shared distribution. Ships synthetic scenes, trained readouts, a dataset and reproducible evaluations.

View on GitHub →

Hands-on review

Encodes an image once and answers several typed questions from the shared posterior, offline on CPU. Its documented install cannot run its own test suite.

Good for

  • Several typed questions about one image from a single encoding
  • Downloadable checkpoints and a quick start that runs offline on CPU
  • A results section that publishes where its own method loses

Watch out for

  • The README's install omits the extra its test suite imports
  • Fixed event vocabularies and a limited parser, not a general visual assistant
  • Three narrow experiments; the pet and CLEVR-4 work needs their datasets

Tested Sep 24, 2026 at b83bec97243b · python:3.12-slim in Docker on CPU, the project's own uv environment and downloaded checkpoints, predictions run with --network none

How we reviewed this: in python:3.12-slim on CPU, using the project’s own uv environment and the checkpoints its download command fetches, with the prediction itself run under --network none. We then ran the test suite exactly as the README installs it. This is an open model, so nothing here is a Jev call or a measurement of Jev.

What it does

A research toolkit for visual typed decisions. An image is encoded once, and several questions are answered from the resulting posterior rather than from one pass per question. The repository ships three separate experiments — 8,192 synthetic scenes with a small CNN and a supplied prior, a 2,960-image Oxford-IIIT Pet subset, and 1,680 CLEVR-4 images — each with a fixed event vocabulary. The README says plainly that these are experiments with a limited English parser, not a general visual assistant, which is the right frame for what it does.

Setup

The quick start works as written, apart from one gap covered below:

uv sync --frozen --extra vision --extra dev
uv run --no-sync openjev-vision download
uv run --no-sync openjev-vision predict --checkpoint artifacts/openjev-vision-v0.1/synthetic-joint \
  --image examples/vision/scene-0.png --prior examples/vision/scene-0-prior.json \
  --questions examples/vision/questions.json

download fetches four checkpoints (synthetic-joint, pets-joint, clevr4-joint, clevr4-independent) plus a binding head, and the prediction then runs with the network off.

Using it

Four questions about one scene, answered together:

answers:  left_red   noul 0.5334
          right_red  noul 0.0128
          same_color noul 0.4683
          both_red   noul 0.0073
visual_encodings: 1

That last line is the claim the project is built around, and the output states it rather than leaving you to trust it: four questions, one encoding. The response also carries top_world and the full posterior, so the joint distribution the answers were read from is in the same payload — you can check that both_red is consistent with left_red and right_red instead of taking three independent numbers on faith.

The questions themselves are declarative events (red(left) and red(right)), not free text, which is the limitation the README states up front.

Permissions and data

Local throughout. No API key, no outbound call at prediction time, and the images are yours; the only network access is the checkpoint download. The vision path uses frozen DINOv2 features for public images and a small CNN for the synthetic scenes.

Maintenance

Apache-2.0, a CITATION file, a changelog, a contributing guide, and a CI badge that is green. Fourteen test files, and the README’s own install cannot collect them:

tests/test_v03_data.py:7: from openjev.data_v03 import world_records
src/openjev/branch_model.py:10: from peft import LoraConfig, PeftModel, get_peft_model
E   ModuleNotFoundError: No module named 'peft'

peft lives in the qwen extra. CI installs --extra dev --extra qwen --extra vision; the README’s quick start installs --extra vision --extra dev. So the person following the documentation gets a suite that stops at collection — two tests skipped, the other twelve files never reached — while the same suite is green in Actions. One word in the README, or a lazy import in branch_model.py, closes it — reported with both options.

The results are the part worth reading: three seeds, independent calibration, and negative findings kept in — the direct joint predictor degrades on new dependency structures, and independent attributes beat both the joint and the binding heads on unseen CLEVR-4 combinations. A repository that publishes the configuration in which its own idea loses is doing the thing we keep asking for.

Verdict

Take it as what it says it is: a reproducible experiment in reading several visual decisions off one encoding, with checkpoints you can run on a laptop and a results section that does not flatter itself. Install it with --extra qwen as well if you intend to run the tests.

For typed decisions about text from an open model, see AgentJev and SemIf; for the same many-questions-one-prefill idea on Apple Silicon, Jev Visual.

See how it compares with other tools in Best Jev tools, tested hands-on.

Review updated Sep 24, 2026. Numbers quoted from the project are its author's own; we don't publish our own measurements of Jev.

More in Open Models & Reproductions

Laya

★ 35k▲ 521

NandhaKishorM/laya

Non-autoregressive decision engine over 100+ languages: three checkpoints and a router that detects the script and dispatches per request. Its benchmarks end with a limits section naming the datasets it does not generalise to and the headline figure that came from a training split.

PythonReviewed

kev

★ 9.8k▲ 215

jaredpalmer/kev

Jev-style decision models from 0.5B to 8B, built as LoRA adapters on Qwen and served behind a Jev-compatible /v1/systemone API.

PythonReviewed

SemIf

★ 4.9k▲ 35

TheoLeeCJ/SemIf-OpenJev

Jev-style decisions from a frozen 4B model on a single RTX 3090, with a browser demo. Formerly OpenJev.

PythonReviewed

Get new Jev projects every week

New Jev releases, pricing changes, and the best new projects, once a week. No spam; unsubscribe anytime.

Powered by Buttondown. See our privacy policy.