wikillm

Paper · 2022-07-06 · cs.CV, cs.MM

FAST-VQA: Efficient End-to-end Video Quality Assessment with Fragment Sampling

Scores video quality from fragments: a grid of raw-resolution mini-patches, sampled at fixed offsets across all frames and spliced into one canvas. A Swin-T backbone with gated relative position biases and a patch-wise regression head is trained end to end. Author-reported: SRCC 0.779 and PLCC 0.814 on LSVQ 1080p, using about 0.5% of PVQ's FLOPs at 1080P.

Vision Transformer (ViT) backbonesShifted-window attentionRelative positional encodingTransfer learningvideo-quality-assessmentsamplingtransformerend-to-end-trainingefficiency

arXivPDFCodeMarkdown15 min read

AI-compiled by claude-haiku-5-5 on 2026-11-01, not yet reviewed by a human. Every claim cites its source; check it when a detail matters.

In plain words

Judging how good a video looks is expensive when the model has to read every pixel of a high-definition clip. The obvious shortcut, shrinking the frame, blurs exactly the fine detail that tells a sharp video from a blurry one. Cutting out one corner loses the rest of the picture.

FAST-VQA takes a different route. It divides each frame into a grid, takes a small patch from every grid cell at full resolution, and glues those patches into one smaller picture. The same patch positions are reused in every frame, so motion such as shaking still shows up. A transformer then scores this picture. Two changes stop it from being confused by the seams between patches, which are not real damage in the video. The authors report that this is far cheaper than earlier methods on high-resolution video and that it is also more accurate.

TL;DR

  • Fragments are the input: raw-resolution mini-patches from a uniform grid, aligned across frames and spliced into one canvas.
  • A Video Swin-T backbone is modified in two places: gated relative position biases separate same-patch pairs from cross-patch pairs, and a regression head scores each patch before pooling.
  • The whole model is trained end to end with a PLCC-based loss, instead of regressing from frozen features.
  • Author-reported: SRCC 0.779 and PLCC 0.814 on LSVQ 1080p, 99.5% fewer FLOPs than PVQ at 1080P, and state-of-the-art transfer to five small VQA datasets.
  • The paper does not state the optimiser, learning rate, schedule, epoch count or augmentation, so the training recipe cannot be reproduced from this card alone.

Problem

Deep video quality assessment (VQA) models get expensive on high-resolution video. A 1080×1920 clip needs 42.5 times the FLOPs of a 224×224 input in the authors' measurement §1 tab. 4. Existing methods therefore freeze a pretrained recognition or quality backbone and train only a small regressor on its features §1 §2. The authors argue that frozen features are not tuned for quality and limit accuracy §1.

Naive down-sampling is ruled out. Bilinear resizing removes local texture that quality depends on, and random cropping breaks the match between a crop's quality and the whole video's quality §1 §3.1. The paper's goal is a sampling scheme that keeps local quality, covers the whole frame uniformly, keeps context, and keeps inter-frame motion, so that end-to-end training becomes practical §1.

Method

3.1 Grid Mini-patch Sampling (GMS)

GMS builds the model input, called a fragment, from one video of T frames §3.1 fig. 4.

  1. Uniform grid. Each frame is cut into G_f × G_f cells of equal size, where G_f is the grid count §3.1 eq. 1.
  2. Raw-resolution patch. From each cell, one mini-patch of size S_f × S_f is taken at original resolution with no resizing. The paper calls this random patch sampling §3.1 eq. 2.
  3. Temporal alignment. The sampling operation is shared across all T frames, so the patch in cell (i, j) sits at the same place in every frame §3.1 eq. 3.
  4. Splicing. Each patch is placed at its own cell position in a canvas of size (G_f·S_f) × (G_f·S_f), per frame, keeping the spatial layout §3.1 eq. 4.

The result is a fragment video with T frames of canvas size §3.1 tab. 2. Figure 2 shows fragments in spatial and temporal views, and states that fragments keep local detail and show shake across frames fig. 2. Figure 4 lays out the GMS pipeline (grid partition, patch sampling, splicing and temporal alignment), after which the fragments feed FANet fig. 4.

3.2 Fragment Attention Network (FANet)

FANet uses Video Swin Transformer Tiny (Swin-T) with four hierarchical self-attention stages as its backbone §3.2 fig. 5. The authors chose a patch-wise hierarchical transformer because its operations are naturally local to patches §2 §3.2. Two modifications address the discontinuities between mini-patches.

Gated Relative Position Biases (GRPB). Swin-T adds a learned relative position bias T to each attention score. In a fragment, two tokens can have the same relative offset but very different real distances if they lie in different mini-patches §3.2 fig. 3. GRPB learns two tables instead of one. T^real serves same-patch pairs and T^pseudo serves cross-patch pairs §3.2. A binary gate G marks same-patch pairs (1 if the pair lies in one mini-patch, else 0). The modified score matrix is M_A = QK^T + G ⊗ B_In + (1 − G) ⊗ B_Cr §3.2 eq. 5 eq. 6.

Intra-Patch Non-Linear Regression (IP-NLR). Pooling features before regression would mix quality across patches §3.2 fig. 3. IP-NLR passes each patch's features through non-linear regression layers R_NL first, then pools the resulting scores: s_pred = Pool(R_NL(f)) §3.2 eq. 7.

Training objective

The loss is a differentiable PLCC-based loss, l = (1 − PLCC(s_pred, s_gt)) / 2 §4.1. The paper states a batch size of 16 §4.1.

Pseudocode

The pseudocode below follows the paper's equations. The sampling-offset distribution and the pooling operator are not stated in the paper, so those lines are marked.

Pseudocode
# Fragment construction: Grid Mini-patch Sampling  [§3.1] [eq. 1-4]
# Input:  video (T, H, W, 3), raw resolution
# Output: fragment video (T, G * S, G * S, 3)
# G = grid count G_f, S = patch size S_f  [tab. 2]

def build_fragment(video, grid_count, patch_size):
    # Frame count and frame size  [§3.1]
    num_frames, height, width, _ = video.shape
    # One offset per cell, shared by all frames  [§3.1] [eq. 3]
    # The offset distribution is not stated; "random" is all the paper says
    offsets = sample_offsets(grid_count, height, width, patch_size)
    fragment = zeros(num_frames, grid_count * patch_size, grid_count * patch_size, 3)
    for row in range(grid_count):
        for col in range(grid_count):
            # Take an S x S raw-resolution patch from this cell  [eq. 2]
            top, left = offsets[row, col]
            patch = video[:, top:top + patch_size, left:left + patch_size]
            # Splice the patch at its cell position  [eq. 4]
            fragment[:, row * patch_size:(row + 1) * patch_size,
                     col * patch_size:(col + 1) * patch_size] = patch
    return fragment
Pseudocode
# Gated relative position bias for one attention window  [§3.2] [eq. 5-6]
# Table shape and index mapping are not stated

def gated_attention_scores(queries, keys, same_patch, relative_index):
    # Raw attention scores  [eq. 6]
    scores = queries @ keys.transpose()
    # Bias for same-patch pairs from the real-position table  [eq. 5]
    real_bias = real_position_table[relative_index]
    # Bias for cross-patch pairs from the pseudo-position table  [eq. 5]
    pseudo_bias = pseudo_position_table[relative_index]
    # Gate: 1 when the two tokens lie in the same mini-patch  [§3.2]
    gate = same_patch
    # Combine the two biases with the gate  [eq. 6]
    scores = scores + gate * real_bias + (1 - gate) * pseudo_bias
    return scores
Pseudocode
# Intra-Patch Non-Linear Regression head  [§3.2] [eq. 7]
# Pooling operator and regressor width are not stated

def ip_nlr_score(patch_features):
    # Regress each patch's features on its own  [§3.2]
    patch_scores = nonlinear_regressor(patch_features)
    # Pool after regression, not before  [eq. 7]
    score = pool(patch_scores)
    return score
Pseudocode
# Training loss  [§4.1]
# Taken over a batch of 16; the paper does not say which batch the PLCC uses

def plcc_loss(predicted, target):
    # Pearson correlation between predictions and labels  [§4.1]
    correlation = pearson(predicted, target)
    # Map correlation in [-1, 1] to a loss in [0, 1]  [§4.1]
    return (1 - correlation) / 2

Two sampling densities

FAST-VQA and FAST-VQA-M use the same patch size and differ in frame count and grid count. FAST-VQA-M is the lower-density, lower-cost version §4.1 tab. 2.

Hyperparameters

Values are from the main text and Table 2. Every item marked "not stated" is absent from the compiled paper.

NameValueWhereNotes
BackboneVideo Swin-T, four stages§3.2 §4.1initialised from Kinetics-400 pretraining §4.1
Frames T, FAST-VQA32tab. 2
Frames T, FAST-VQA-M16tab. 2
Patch size S_f32 (both variants)tab. 2raw resolution, no resizing §3.1
Grid count G_f, FAST-VQA7tab. 2canvas 7 × 32 = 224 per side (derived)
Grid count G_f, FAST-VQA-M4tab. 2canvas 4 × 32 = 128 per side (derived)
Window size, FAST-VQA(8, 7, 7)tab. 2adapted to the input size §4.1
Window size, FAST-VQA-M(4, 4, 4)tab. 2
Parameters, FAST-VQA27.7Mtab. 2
Parameters, FAST-VQA-M27.5Mtab. 2
FLOPs, FAST-VQA279Gtab. 2per sample, as reported
FLOPs, FAST-VQA-M46Gtab. 2
Batch size16§4.1
Loss(1 − PLCC)/2§4.1
MetricsPLCC, SRCC§4.1KRCC appears only in the robustness table tab. 9
Training setLSVQ train, 28,056 videos§4.1
Benchmark setsLSVQ test 7,400; LSVQ 1080p 3,600; KoNViD-1k; LIVE-VQC§4.1
Fine-tune protocol10 random splits, mean reported§4.4split ratio not stated
Optimisernot stated—
Learning rate and schedulenot stated—
Epochs or iterationsnot stated—
Augmentationnot stated—
Frame selection (which T frames, stride)not stated—
Sampling offsets distributionnot stated§3.1"random" only
Single sample or ensemble at testnot stated for headline results§4.76-sample ensemble appears only in the stability analysis
Non-linear regressor R_NL: depth, width, activationnot stated§3.2
Pooling operator in IP-NLRnot stated§3.2 eq. 7
Relative bias table shape and index mappingnot stated§3.2
Training hardwarenot stated—
Inference hardware for timingnot stated beyond "CPU/GPU"tab. 4

Results

Author-reported. All numbers below are from the paper's tables. Training is on LSVQ only, and KoNViD-1k and LIVE-VQC are cross-dataset tests unless noted §4.2.

Benchmark (SRCC / PLCC) tab. 3.

GroupMethodLSVQ test SRCCLSVQ test PLCCLSVQ 1080p SRCCLSVQ 1080p PLCCKoNViD-1k SRCCKoNViD-1k PLCCLIVE-VQC SRCCLIVE-VQC PLCC
ClassicalBRISQUE0.5690.5760.4970.5310.6460.6470.5240.536
ClassicalTLVQM0.7720.7740.5890.6160.7320.7240.6700.691
ClassicalVIDEVAL0.7940.7830.5450.5540.7510.7410.6300.640
DeepVSFA0.8010.7960.6750.7040.7840.7940.7340.772
DeepPVQ w/o patch0.8140.8160.6860.7080.7810.7810.7470.776
DeepPVQ w/ patch0.8270.8280.7110.7390.7910.7950.7700.807
BaselineFull-res Swin-T features0.8350.8330.7390.7530.8250.8280.7940.809
OursFAST-VQA-M0.8520.8540.7390.7730.8410.8320.7880.810
OursFAST-VQA0.8760.8770.7790.8140.8590.8550.8230.844

Improvement of FAST-VQA over PVQ w/ patch, as the table states: +6%, +6%, +10%, +10%, +9%, +8%, +7%, +5% in column order tab. 3. These are relative gains. On LSVQ 1080p PLCC the absolute gain is 0.814 − 0.739 = 0.075 (derived). The text says the accuracy gain on 1080p is 8.10% over the full-resolution Swin-T baseline on PLCC §4.2 tab. 3.

Efficiency: FLOPs (G) and time (s, GPU / CPU) tab. 4. The paper reports the average of ten runs per sample. Multipliers are relative to FAST-VQA.

Method540P FLOPs540P time720P FLOPs720P time1080P FLOPs1080P time
VSFA10249 (36.7×)2.603 / 92.76118184 (65.2×)3.571 / 134.940919 (147×)11.14 / 465.6
PVQ14646 (52.5×)3.091 / 97.8522029 (79.0×)4.143 / 144.658501 (210×)13.79 / 538.4
Full-res Swin-T features3032 (10.9×)3.226 / 102.05357 (19.2×)5.049 / 166.211852 (42.5×)8.753 / 234.9
FAST-VQA279 (1×)0.044 / 9.019279 (1×)0.043 / 9.530279 (1×)0.045 / 9.142
FAST-VQA-M46 (0.165×)0.019 / 0.72946 (0.165×)0.019 / 0.61346 (0.165×)0.019 / 0.714

Transfer after fine-tuning (SRCC / PLCC) tab. 5. Each target dataset is split at random 10 times, and the mean is reported §4.4.

MethodLIVE-VQCKoNViD-1kCVD2014LIVE-QualcommYouTube-UGC
TLVQM0.799 / 0.8030.773 / 0.7680.83 / 0.850.77 / 0.810.669 / 0.659
VIDEVAL0.752 / 0.7510.783 / 0.780NANA0.779 / 0.773
RAPIQUE0.755 / 0.7860.803 / 0.817NANA0.759 / 0.768
VSFA0.773 / 0.7950.773 / 0.7750.870 / 0.8680.737 / 0.7320.724 / 0.743
PVQ0.827 / 0.8370.791 / 0.786NANANA
GST-VQANA0.814 / 0.8250.831 / 0.8440.801 / 0.825NA
CoINVQNA0.767 / 0.764NANA0.816 / 0.802
CNN+TLVQM0.825 / 0.8340.816 / 0.8180.863 / 0.8800.810 / 0.833NA
CNN+VIDEVAL0.785 / 0.8100.815 / 0.817NANA0.808 / 0.803
Full-res Swin-T features0.799 / 0.8080.841 / 0.8380.868 / 0.8700.788 / 0.8030.798 / 0.796
FAST-VQA-M0.803 / 0.8280.873 / 0.8720.877 / 0.8920.804 / 0.8380.768 / 0.765
FAST-VQA without VQ representations0.765 / 0.7820.842 / 0.8440.871 / 0.8880.756 / 0.7780.794 / 0.784
FAST-VQA0.849 / 0.8650.891 / 0.8920.891 / 0.9030.819 / 0.8510.855 / 0.852

The table's own "Improvements led by VQ-representations" row gives +11.0% / +10.6% (LIVE-VQC), +5.8% / +5.7% (KoNViD-1k), +2.3% / +1.7% (CVD2014), +8.3% / +9.4% (LIVE-Qualcomm) and +7.7% / +8.7% (YouTube-UGC) tab. 5.

Ablation on fragments (SRCC / PLCC) tab. 6. The FANet structure is held fixed §4.5.

VariantLSVQ testLSVQ 1080pKoNViD-1kLIVE-VQC
Bilinear resizing0.857 / 0.8590.752 / 0.7860.841 / 0.8400.772 / 0.814
Random cropping, 1 crop0.807 / 0.8120.643 / 0.6770.734 / 0.7760.740 / 0.773
Random cropping, 3 crops0.838 / 0.8350.727 / 0.7540.841 / 0.8270.785 / 0.809
Random cropping, 6 crops0.843 / 0.8440.734 / 0.7610.845 / 0.8340.796 / 0.817
Random mini-patches (no grid)0.857 / 0.8610.754 / 0.7900.844 / 0.8450.792 / 0.818
Shuffled mini-patches0.858 / 0.8630.761 / 0.7990.849 / 0.8470.796 / 0.821
Without temporal alignment0.850 / 0.8530.736 / 0.7790.823 / 0.8160.764 / 0.802
Fragments (FAST-VQA)0.876 / 0.8770.779 / 0.8140.859 / 0.8550.823 / 0.844

Ablation on FANet tab. 7.

VariantLSVQ testLSVQ 1080pKoNViD-1kLIVE-VQC
Without GRPB0.873 / 0.8720.769 / 0.8050.854 / 0.8530.808 / 0.832
Semi-GRPB on layers 1/20.873 / 0.8750.772 / 0.8090.856 / 0.8510.812 / 0.838
Linear regression head0.872 / 0.8730.768 / 0.8030.847 / 0.8490.810 / 0.835
Pre-pool non-linear head0.873 / 0.8740.771 / 0.8050.851 / 0.8500.813 / 0.834
FANet (full)0.876 / 0.8770.779 / 0.8140.859 / 0.8550.823 / 0.844

Single-sample reliability tab. 8. The paper reports that a single sample is nearly as accurate as a 6-sample ensemble.

MeasureLSVQ testLSVQ 1080pKoNViD-1kLIVE-VQC
Score range0–1000–1001–50–100
Std. dev. of single samplings0.650.790.0461.07
Normalised std. dev.0.00650.00790.01150.0107
Pair accuracy vs 6-sample ensemble99.59%99.40%99.45%99.52%

Robustness by resolution on LIVE-VQC (SRCC / PLCC / KRCC) tab. 9. Group sizes: (A) 1080P, 110 videos; (B) 720P, 316 videos; (C) ≤540P, 159 videos.

Method(A) 1080P(B) 720P(C) ≤540P
Full-res Swin-T features (baseline)0.771 / 0.774 / 0.5840.796 / 0.811 / 0.6020.810 / 0.853 / 0.625
Bilinear resizing0.758 / 0.773 / 0.5730.790 / 0.822 / 0.5990.835 / 0.878 / 0.650
Random cropping0.765 / 0.768 / 0.5650.774 / 0.787 / 0.5810.730 / 0.809 / 0.535
Without GRPB0.796 / 0.785 / 0.5980.802 / 0.820 / 0.6080.834 / 0.883 / 0.649
FAST-VQA0.807 / 0.806 / 0.6100.803 / 0.825 / 0.6100.840 / 0.885 / 0.654

Dataset sizes tab. 1 §2 §4.1. LSVQ has 39,076 videos in total §2. The paper names 28,056 for training, 7,400 for LSVQ test and 3,600 for LSVQ 1080p §4.1. These sum to 39,056, so 20 videos are not accounted for (derived; not explained by the paper). The paper's dataset table also lists KoNViD-1k with 1,200 videos, LIVE-VQC with 585 and YouTube-UGC with 1,147 (an incomplete public release) tab. 1 §4.4.

Paper vs code

No code comparison was made. The authors' repository, timothyhtimothy/FAST-VQA, is linked from the abstract. Its LICENSE is the S-Lab License 1.0, which permits non-commercial use only [code_license]. wikillm publishes with advertising, so this card uses the paper alone and does not use or cite the repository's code. The code, code_commit and code_license fields record the repository for reference only. Anyone who wants the training recipe or the code-level choices should read the repository under the S-Lab terms.

Pitfalls

  • The training recipe is missing. The optimiser, learning rate, schedule, epoch or iteration count, augmentation, and training hardware are not in the compiled paper §4.1. The LaTeX source keeps an appendix inside a comment block, so it is not part of the published paper. This card does not use it. An implementer must choose these values and say so.
  • The sampling-offset distribution is undefined. The paper says "random" for the patch position inside a cell §3.1 eq. 2. It does not say whether the offset is uniform, whether it changes every iteration or epoch, or whether test-time inference uses one fixed offset or several.
  • Test-time protocol is not stated for the headline numbers. The single-versus-ensemble comparison is reported only in the stability analysis §4.7 tab. 8. Whether the benchmark numbers in tab. 3 use one sample or an ensemble is not stated.
  • Frame selection is undefined. The paper says the model uses T frames tab. 2 but does not say which frames are picked from a longer video, or with what stride.
  • Grid edges are fractional. Equation 1 uses i·H/G_f, which is not an integer for most resolutions. For example, 1080/7 ≈ 154.3 (derived). The paper does not state the rounding rule §3.1 eq. 1.
  • Small cells are not discussed. A cell must be at least S_f = 32 pixels in each direction for a raw patch to fit tab. 2 §3.1. The paper does not say what happens when a cell is smaller, for example in very small frames.
  • Mini-patch boundaries and token boundaries. The gate G is defined per pair of tokens in the same mini-patch §3.2. The paper does not state the backbone's token size or whether mini-patch edges fall on token edges. An implementer should check that the gate is well defined at the chosen token size.
  • Pool operator and regressor are not specified. IP-NLR pools after regression §3.2 eq. 7, but the pooling operator (mean, sum, max or other) and the regressor's layer count, width and activation are not stated. It is also not stated whether scores are per token or per mini-patch.
  • Relative bias table is underspecified. T^real and T^pseudo are indexed by FRP(i, j), the relative position in the fragment §3.2. The table shape and the index mapping are not stated.
  • Improvement percentages are mostly relative. The "+10%" over PVQ on 1080p is a relative gain. The absolute PLCC gain is 0.075 tab. 3 (derived). Read the percentages with that in mind.
  • The running-time claim does not match the table. The text says FAST-VQA runs "up to 247×" faster than PVQ §4.3. At 1080P, the table gives 13.79 / 0.045 ≈ 306× on GPU and 538.4 / 9.142 ≈ 59× on CPU (derived). The basis for 247× is not stated. The timing hardware is not named.
  • FLOPs are fixed by design, but accuracy is not. FAST-VQA's FLOPs are 279G at every resolution tab. 4. The per-sample input is always T × (G_f·S_f)², so cost does not grow with frame resolution. That is the source of the efficiency claim. Accuracy at 540P and 720P is reported separately tab. 4 tab. 9.
  • Coverage is small. A single fragment keeps about 2.4% of the pixels of a 1080P frame: 7² × 32² / (1080 × 1920) ≈ 2.42% (derived, matching the paper's "2.4%" §4.7). Sample stability is high tab. 8, but a single sample still sees a small part of each frame.
  • Small subsets in the robustness table. The 1080P group of LIVE-VQC has 110 videos §4.7 tab. 9. Differences of 0.01 between rows are within the noise that a 110-video subset allows. The paper does not report variance for that table.
  • Transfer baseline is undefined. "FAST-VQA without VQ representations" tab. 5 is described as competitive, but the main text does not say how it was initialised.
  • Fine-tuning split ratio is not stated. The paper says each dataset is split at random 10 times §4.4 but does not give the train/test ratio.
  • Equation and table numbers are inferred. No compiled PDF was available. Equation numbers were counted from the LaTeX source order: eq. 1 to 4 for GMS, eq. 5 and 6 for GRPB, eq. 7 for IP-NLR. Table and figure numbers follow the same order. Check these against the PDF before citing them publicly.
  • Mismatched labels in the source. The local quality map figure carries the LaTeX label fig:6 but is the seventh figure in order, so it is cited here as fig. 7.

Lineage

  • Builds on: Video Swin Transformer (Tiny) as the backbone, pretrained on Kinetics-400 §3.2 §4.1. Named in the paper, with no card in this wiki.
  • Compared against: BRISQUE, TLVQM, VIDEVAL, VSFA, PVQ (with and without patch labels), a full-resolution Swin-T with fixed features, RAPIQUE, GST-VQA, CoINVQ and CNN ensembles tab. 3 tab. 5.
  • Superseded by: not known from wiki content.

Source and license

Adapted from “FAST-VQA: Efficient End-to-end Video Quality Assessment with Fragment Sampling” by Haoning Wu, Chaofeng Chen, Jingwen Hou, Liang Liao, Annan Wang, Wenxiu Sun, Qiong Yan, Weisi Lin (arXiv:2207.02595), used under CC BY 4.0. Changes: condensed and restructured for implementation, with tables, equations and algorithms taken from the paper and its code, each cited to its source. Not affiliated with or endorsed by the authors. Code citations refer to https://github.com/timothyhtimothy/FAST-VQA at commit 8db452e2caa5 (S-Lab License 1.0 (non-commercial)). Any quoted code is shown under that license.