PERSIST: Persistent-State Discrimination for Shot Boundary Detection
Organizations: Computer Vision Lab TU Wien Vienna, Austria · Institute of Creative\Media/Technologies St. Pölten University of Applied Sciences St. Pölten, Austria · Ludwig Boltzmann Institute for Digital History Ludwig Boltzmann Gesellschaft Vienna, Austria
Abstract
Shot boundary detection (SBD) is widely treated as the localisation of local visual discontinuities, yet many false positives such as hand-held shake, illumination flicker, motion blur, occlusion, and damaged archival material produce equally sharp local change without introducing a new shot. We reformulate SBD as boundary semantic discrimination: a frame is favoured as a boundary only when its local change evidence is accompanied by a persistent update of the video's latent temporal state, rather than a transient excursion that returns to the surrounding trend. This persistence test is operationalised with a continuous latent state from a FiLM-conditioned sinusoidal representation network and a structured discriminator that combines three semantic cues, local change, transient impulse, and return-to-trend, into a single interpretable per-frame signal over a dual-rate temporal backbone. The resulting framework, PERSIST, turns every decision into an inspectable one: the persistence criterion is trained into the classifier, its per-frame effect stays readable from the gate triple, and its learned latent state is measurably boundary-discriminative. On a 2,727-video per-subtype diagnostic it removes 33-80% of flash, text-overlay, and archival false positives relative to an identically trained cue detector, and at matched true-transition recall it roughly halves TransNetV2's pseudo-event false positives on that diagnostic and cuts its false positives on ClipShots footage by about a quarter, while preserving recall. It does so while reaching parity with the strongest public detector across online, broadcast, short-form, and historical-archive transfer evaluations, under markedly stricter training: it learns from ClipShots real transitions only, whereas the anchor draws on additional corpora whose transitions are 85% synthetic. Code is available at https://github.com/linty5/PERSIST.
Figures & tables
| Method | ClipShots | BBC | AutoShot | HIST-GST12 | ||||
|---|---|---|---|---|---|---|---|---|
| Fix-0.5 | Oracle | Fix-0.5 | Oracle | Fix-0.5 | Oracle | Fix-0.5 | Oracle | |
| Pixel difference [ 33 ] | 0.0351 | 0.5602 | 0.0074 | 0.8316 | 0.0683 | 0.7252 | 0.0000 | 0.8631 |
| HSV histogram [ 1 ] | 0.5737 | 0.6019 | 0.7786 | 0.9244 | 0.6792 | 0.7765 | 0.1544 | 0.6550 |
| Edge change ratio [ 33 ] | 0.3510 | 0.3813 | 0.5552 | 0.5660 | 0.3505 | 0.6561 | 0.6019 | 0.7117 |
| DeepSBD-AlexNet [ 11 ] | 0.6843 | 0.7456 | 0.8202 | 0.8770 | 0.7539 | 0.7604 | 0.8535 | 0.8767 |
| DeepSBD-ResNet18 [ 11 , 29 ] | 0.7555 | 0.7634 | 0.8622 | 0.8919 | 0.7303 | 0.7458 | 0.8611 | 0.8912 |
| ClipShots | BBC | AutoShot | HIST-GST12 | |||||
|---|---|---|---|---|---|---|---|---|
| Method | Fix-0.5 | Oracle | Fix-0.5 | Oracle | Fix-0.5 | Oracle | Fix-0.5 | Oracle |
| TNV2-cue baseline | ||||||||
| PERSIST | ||||||||
| (ours baseline) | ||||||||
| ClipShots | BBC | AutoShot | HIST-GST12 | |||||
|---|---|---|---|---|---|---|---|---|
| Variant | Fix-0.5 | Oracle | Fix-0.5 | Oracle | Fix-0.5 | Oracle | Fix-0.5 | Oracle |
| PERSIST | ||||||||
| w/o discriminator | ||||||||
| w/o shaping | ||||||||
| w/o dynamics auxiliary | ||||||||
| Single-rate (no slow path) | ||||||||
| Dataset | Role | Videos | AST | GST | Frames |
|---|---|---|---|---|---|
| ClipShots train [ 29 ] | training source | 4,876 | 110,575 | 34,810 | 26,649,843 |
| ClipShots test [ 29 ] | in-domain test | 500 | 4,903 | 2,301 | 3,241,806 |
| BBC Planet Earth [ 27 ] | transfer test | 11 | 4,708 | 136 | 809,827 |
| AutoShot/SHOT [ 34 ] | transfer test | 200 | 2,078 | 438 | 204,031 |
| HISTORIAN-GST12 [ 13 ] | historical transfer | 12 | 1,377 | 191 | 196,931 |
| Dataset | mean std (fix / oracle-best) | ENS (fix / oracle-best) | TNV2 (oracle-best) |
|---|---|---|---|
| ClipShots | / | / | |
| BBC | / | / | |
| AutoShot/SHOT | / | / | |
| HIST-GST12 | / | / | |
| synth diag | / | / |
| Model | Window | ClipShots | BBC | AutoShot | HIST-GST12 |
|---|---|---|---|---|---|
| PERSIST | 0.7937/0.7964 | 0.9672/0.9678 | 0.7992/0.8280 | 0.9319/0.9494 | |
| PERSIST | 0.7890/0.7938 | 0.9725/0.9729 | 0.7785/0.8182 | 0.9171/0.9419 | |
| TNV2 repro (single-rate) | 0.7260/0.7820 | 0.9517/0.9625 | 0.7981/0.8029 | 0.9305/0.9400 | |
| TNV2 repro (single-rate) | 0.7287/0.7845 | 0.9558/0.9648 | 0.8016/0.8016 | 0.9266/0.9331 |
| Return-gate offsets | ClipShots (fix / oracle-best) | synth FP |
|---|---|---|
| (short) | 0.7849 / 0.7929 | 769 |
| (default) | 0.7937 / 0.7964 | 723 |
| (long) | 0.7890 / 0.7949 | 766 |
| Model | ClipShots oracle | synth FP (flash/overlay) | natural FP | xdom oracle (BBC/AS/HIST) |
|---|---|---|---|---|
| PERSIST | 0.7964 | 723 (329/80) | 2147 | 0.968/0.828/0.949 |
| Cue + hard negatives | 0.7868 | 603 (146/196) | 2447 | 0.966/0.808/0.936 |
| Cue baseline (no hard neg.) | 0.7733 | 887 (396/181) | 2665 | 0.963/0.810/0.936 |
| Variant | ClipShots | BBC | AutoShot/SHOT | HIST-GST12 |
|---|---|---|---|---|
| fixed- | ||||
| PERSIST | ||||
| w/o discriminator | ||||
| w/o shaping | ||||
| w/o dynamics auxiliary | ||||
| Single-rate (no slow path) | ||||
| Method | clean cut (228) | jump cut (181) | dissolve (130) | fade-out (123) | fade-in (116) | wipe (64) |
|---|---|---|---|---|---|---|
| PERSIST | 0.901 | 0.123 | 0.880 | 0.926 | 0.903 | 0.581 |
| w/o discriminator | 0.903 | 0.118 | 0.866 | 0.922 | 0.903 | 0.619 |
| w/o shaping | 0.905 | 0.132 | 0.870 | 0.926 | 0.903 | 0.583 |
| w/o dynamics auxiliary | 0.904 | 0.111 | 0.860 | 0.941 | 0.900 | 0.559 |
| Single-rate (no slow path) | 0.906 | 0.127 | 0.851 | 0.930 | 0.908 | 0.634 |
| w/o all three shaping components | 0.911 | 0.115 | 0.871 | 0.937 | 0.900 | 0.500 |
| Method | flash (510) | fast pan (453) | overlay (391) | archival (349) | scratch (182) |
|---|---|---|---|---|---|
| PERSIST | 329 | 36 | 80 | 270 | 8 |
| w/o discriminator | 363 | 37 | 82 | 282 | 7 |
| w/o shaping | 339 | 34 | 68 | 292 | 8 |
| w/o dynamics auxiliary | 374 | 33 | 64 | 259 | 8 |
| Single-rate (no slow path) | 409 | 40 | 82 | 301 | 8 |
| w/o all three shaping components | 384 | 37 | 66 | 288 | 11 |
| Model | seed | seed | seed | mean std |
|---|---|---|---|---|
| PERSIST | ||||
| w/o discriminator | ||||
| w/o shaping |
| Category (frames) | |||||
|---|---|---|---|---|---|
| background ( M) | |||||
| true cut / AST ( k) | |||||
| gradual / GST ( k) | |||||
| pseudo-event ( k) |
| synthetic diagnostic | natural ClipShots | |||
|---|---|---|---|---|
| Arm | FP | paired | FP | paired |
| PERSIST (all three gates) | – | – | ||
| w/o transient-impulse gate | ||||
| w/o return gate | ||||
| change gate only | ||||
| Arm | flash | fast pan | overlay | archival | scratch | total |
|---|---|---|---|---|---|---|
| PERSIST | ||||||
| w/o transient gate | ||||||
| w/o return gate | ||||||
| change gate only | ||||||
| w/o discriminator | ||||||
| cue baseline |
Temporal Video Understanding
Temporal video understanding studies how models track actions, events, and changes over time to answer questions, locate moments, and predict what happens next.
See all 371 papers