Viewpoint policy-gradient actor — ADE20K, c64, T=5
Glimpse-placement policy for a frozen CanViT, over a discrete grid of candidate viewpoints (2 scales x 16x16 centres): scores per candidate are policy logits trained on-policy by score-function credit (loss -(z * log pi) - entropy_bonus * H, K=1 fractional-CE rewards); deploy = full-scene glimpse at t0, argmax afterwards — the same deploy rule as the Q-regression policies. Method + code: CanViT-PyTorch-RL.
Provenance: run 20260705-170816_pg_s0, git b7936f87c7b1a7471f3f0b9956bdfdeeba6892b6, seed 0, step 5000
(deploy ckpt = best mean(t1-t4) validation CE over the run's evals). Backbone canvit/canvitb16-add-vpe-pretrain-g128px-s512px-in21k-dv3b16-2026-02-02;
probe resolved for canvas grid 64. Full-val metrics at this step:
| glimpse step t | val CE | val mIoU % |
|---|---|---|
| t0 | 0.7649 | 39.60 |
| t1 | 0.7157 | 42.61 |
| t2 | 0.6886 | 44.01 |
| t3 | 0.6764 | 44.40 |
| t4 | 0.6669 | 44.76 |
from canvit_pytorch_rl.policy.net import ViewpointScorer
net = ViewpointScorer.from_pretrained("canvit/pgpolicy-ade20k-c64-t5-2026-07-05-s0").eval()
Drive it through canvit_pytorch_rl.policy.deploy.ArgmaxPolicy + canvit_eval.run_episode for
protocol-exact rollouts; canvit_pytorch_rl.policy.eval is the standalone evaluator.