Visual storytelling requires generating images that follow a narrative while preserving consistent character identities across frames. In free-form story generation, a character is fully described only when first introduced and is later referred to by a type-level mention or pronoun. Although this setting better reflects natural storytelling, later prompts may omit important identity-related semantics, making character consistency more difficult to maintain. We propose Sidecar, a plug-and-play semantic augmentation module that preserves entity-level information from the initial description and injects the missing semantics into later prompt embeddings. Sidecar requires no additional training and does not modify the architecture of the base diffusion model. Experiments on FreeStoryBench show that Sidecar consistently improves prompt-image alignment and character consistency across multiple SDXL- and FLUX-based baselines, with negligible computational overhead.
Figures & tables
Figure 1: Identity drift under different character references in free-form story generation. Starting from the same initial character, we generate the next frame using a state-of-the-art free-form visual storytelling method, FreeStory [ 2 ] , while keeping generation settings unchanged. Replacing the full description with a type or pronoun progressively removes explicit identity-related information from the prompt, leading to inconsistency. By incorporating our Sidecar method, improved character consistency is achieved under both settings.
Figure 2: Overview of Sidecar. Given the first story prompt, Sidecar extracts the hidden states corresponding to the complete character description at each text-encoder layer and stores them as layer-wise semantic representations. When encoding a later prompt, the corresponding representations are temporarily inserted after the begin-of-sentence token and interact with the current prompt tokens through self-attention. The temporary tokens are removed after each layer, preserving the original output length and interface of the text encoder. The resulting augmented text condition is then provided to the original image-generation pipeline, while any existing visual consistency mechanism remains unchanged.
Figure 3: Qualitative comparison on FreeStoryBench. Each story provides a complete character description only in the first prompt, while later prompts use type or pronouns. Compared with the original baselines, Sidecar better preserves character consistency across different scenes. Sidecar also maintains text-image alignment, indicating that the improved consistency does not prevent the character or scene from changing according to the narrative. Additional qualitative results are provided in the supplementary material.
Method
CLIP ↑
DINO ↑
DreamSim ↓
SDXL-based models
OnePromptOneStory [ 12 ]
0.791
0.361
0.495
SDXL
0.776
0.308
0.540
SDXL + Sidecar
0.859 (+0.083)
0.621 (+0.313)
0.333 (-0.207)
StoryDiffusion [ 26 ]
0.803
0.410
0.483
StoryDiffusion + Sidecar
0.886 (+0.083)
0.702 (+0.292)
0.272 (-0.211)
ConsiStory [ 23 ]
0.779
0.349
0.505
Table 1: Quantitative results on FreeStoryBench. We evaluate SDXL-based and FLUX-based methods with and without Sidecar. Higher CLIP and DINO scores are better, while lower DreamSim is better. For each Sidecar variant, the value in parentheses denotes the change relative to its corresponding baseline. Sidecar consistently improves character consistency and prompt-image alignment across all evaluated models, with particularly large gains on DINO and DreamSim.
Type-level Mention
Pronoun
Metric
Baseline
+Sidecar
Δ
Baseline
+Sidecar
Δ
FreeStory
CLIP ↑
0.844
0.850
0.007
0.771
0.849
0.078
DINO ↑
0.614
0.690
0.077
0.334
0.643
0.309
DreamSim ↓
0.331
0.270
0.061
0.506
0.301
0.206
SDXL
CLIP ↑
0.810
0.862
0.052
0.712
0.864
0.151
DINO ↑
0.503
0.636
0.133
0.201
0.602
0.401
Table 2: Effect of Sidecar under different character-reference types. Δ reports the improvement introduced by Sidecar. For DreamSim, improvement is measured by the reduction in distance.
CLIP
T5
CLIP ↑
DINO ↑
DreamSim ↓
Original
Original
0.801
0.421
0.448
Sidecar
Original
0.830
0.481
0.413
Original
Concatenation
0.809
0.432
0.444
Original
Sidecar
0.750
0.285
0.548
Sidecar
Sidecar
0.794
0.514
0.399
Concatenation
Concatenation
0.860
0.594
0.324
Table 3: Ablation of text-encoder integration strategies on FreeStory. The gray row denotes the FreeStory setting, while the green row denotes the FreeStory+Sidecar setting.
Method
CLIP ↑
DINO ↑
DreamSim ↓
SDXL
0.776
0.308
0.540
SDXL + Post-Encoder Expansion
0.835
0.488
0.407
SDXL + Sidecar
0.859
0.621
0.333
Table 4: Effect of semantic interaction location on SDXL. Post-encoder replacement substitutes the final mention representations with those of the full description, whereas Sidecar enables layer-wise interaction between the description and current prompt. Both are applied to both CLIP encoders.
Appendix figures & tables6 assets
Supplementary material from the paper’s appendix.
Appendix
Method
CLIP ↑
DINO ↑
DreamSim ↓
SDXL
0.808
0.327
0.496
SDXL + Sidecar
0.888 (+0.080)
0.506 (+0.179)
0.380 (−0.116)
StoryDiffusion
0.813
0.388
0.477
StoryDiffusion + Sidecar
0.884 (+0.071)
0.570 (+0.182)
0.340 (−0.137)
ConsiStory
0.823
0.359
0.478
ConsiStory + Sidecar
0.893 (+0.070)
0.589 (+0.230)
0.307 (−0.171)
Appendix
Table 5: Multi-character evaluation on FreeStoryBench. Higher is better for CLIP and DINO, while lower is better for DreamSim.
Method
CLIP-T ↑
DINO ↑
DreamSim ↓
SDXL
0.776
0.308
0.540
+ Sidecar (Early 1/3)
0.759 (-0.017)
0.326 (+0.018)
0.526 (-0.014)
+ Sidecar (Middle 1/3)
0.785 (+0.009)
0.401 (+0.093)
0.500 (-0.040)
+ Sidecar (Late 1/3)
0.840 (+0.064)
0.544 (+0.236)
0.394 (-0.146)
+ Sidecar (All)
0.859 (+0.083)
0.621 (+0.313)
0.333 (-0.207)
Appendix
Table 6: Ablation on Sidecar placement across CLIP encoder layers on SDXL. We only apply Sidecar to the first, middle, and last one-third of encoder layers, respectively.
Method
Peak Mem. (GB)
Avg. Time (s)
Δ Mem.
Δ Time
SDXL
10.49
35.68
–
–
SDXL + Sidecar
10.49
35.76
0.0%
+0.2%
StoryDiffusion
36.67
61.13
–
–
StoryDiffusion + Sidecar
36.68
62.61
0.0%
+2.4%
ConsiStory
21.66
151.41
–
–
ConsiStory + Sidecar
21.77
152.72
+0.5%
+0.9%
Appendix
Table 7: Computational efficiency on the full dataset evaluation. Runtime is averaged over all processed samples, and GPU memory reports the peak allocated memory during inference.
Figure 4: Qualitative comparison on FreeStoryBench.
Figure 5: Qualitative comparison on FreeStoryBench. Sidecar recovers identity semantics omitted from later prompts. Since vanilla T2I models do not contain an explicit cross-frame consistency mechanism, Sidecar improves identity preservation but does not guarantee complete visual consistency.
Figure 6: Qualitative comparison on FreeStoryBench. Sidecar recovers identity semantics omitted from later prompts. Since vanilla T2I models do not contain an explicit cross-frame consistency mechanism, Sidecar improves identity preservation but does not guarantee complete visual consistency.