\documentclass[tikz,border=2pt]{standalone} \usepackage{amsmath} \usetikzlibrary{arrows.meta,calc,positioning} \definecolor{navy}{HTML}{17324D} \definecolor{bluefill}{HTML}{EAF2F8} \definecolor{teal}{HTML}{137C8B} \definecolor{tealfill}{HTML}{E8F6F5} \definecolor{orange}{HTML}{D97706} \definecolor{orangefill}{HTML}{FFF3E0} \definecolor{grayline}{HTML}{73808C} \begin{document} \begin{tikzpicture}[ font=\sffamily\scriptsize, >=Latex, flow/.style={-{Latex[length=1.8mm]},line width=0.65pt,draw=navy}, localflow/.style={flow,draw=teal}, box/.style={draw=navy,rounded corners=1.5pt,line width=0.65pt, fill=bluefill,minimum height=8mm,align=center,inner sep=2.2pt}, localbox/.style={box,draw=teal,fill=tealfill}, note/.style={font=\sffamily\tiny,text=grayline,align=center} ] \node[anchor=west,font=\sffamily\scriptsize\bfseries,text=navy] at (-0.15,3.15) {Model: global context + recent evidence}; \node[align=center,text=navy] (av) at (0.65,2.45) {full-scene AV\\observed prefix}; \node[box] (omni) at (3.05,2.45) {frozen Qwen2.5-Omni\\8-s maximum context}; \node[box] (global) at (5.65,2.45) {last-four-layer\\projection $G_n$}; \node[align=center,text=teal] (audio) at (0.65,1.28) {recent 1-s\\mixed audio}; \node[localbox] (ae) at (3.05,1.28) {frozen Qwen audio\\valid-token mean}; \node[localbox] (ap) at (5.65,1.28) {local projection\\$\widetilde A_n$ + validity}; \node[align=center,text=teal] (video) at (0.65,0.08) {recent 1-s\\person crops}; \node[localbox,dashed] (ve) at (3.05,0.08) {frozen Qwen visual\\recent crop pooling}; \node[localbox,dashed] (vp) at (5.65,0.08) {optional projection\\$\widetilde V_n$ + validity}; \node[box,minimum width=20mm] (fusion) at (8.35,1.28) {feature concatenation\\trainable MLP}; \node[box,minimum width=23mm] (out) at (11.15,1.28) {$10\times3$ future activity\\0.2--2.0 s}; \draw[flow] (av) -- (omni); \draw[flow] (omni) -- (global); \draw[localflow] (audio) -- (ae); \draw[localflow] (ae) -- (ap); \draw[localflow,dashed] (video) -- (ve); \draw[localflow,dashed] (ve) -- (vp); \draw[flow] (global.east) -- ++(0.35,0) |- (fusion.north); \draw[localflow] (ap) -- (fusion); \draw[localflow,dashed] (vp.east) -- ++(0.35,0) |- (fusion.south); \draw[flow] (fusion) -- (out); \node[note] at (10.95,0.22) {background / wearer / aggregate others\\no semantic event or identity output}; \draw[grayline,line width=0.45pt] (-0.15,-0.65) -- (12.5,-0.65); \node[anchor=west,font=\sffamily\scriptsize\bfseries,text=navy] at (-0.15,-0.98) {Stream: committed history + temporary current tail}; \node[anchor=east,text=navy] at (2.05,-1.65) {Omni media}; \foreach \a/\b/\lab in {2.3/3.9/2 s,3.9/5.5/2 s,5.5/7.1/2 s} { \draw[fill=bluefill,draw=navy,line width=0.55pt] (\a,-1.87) rectangle (\b,-1.43); \node[text=navy] at ({(\a+\b)/2},-1.65) {\lab}; } \draw[fill=orangefill,draw=orange,line width=0.65pt] (7.1,-1.87) rectangle (8.5,-1.43); \node[text=orange,font=\sffamily\tiny] at (7.8,-1.65) {partial tail}; \draw[fill=white,draw=grayline,dashed,line width=0.55pt] (8.5,-1.87) rectangle (8.7,-1.43); \node[note,anchor=west] at (9.0,-1.65) {three completed blocks + observed tail\\8-s maximum; future portion excluded}; \node[note,text=navy] at (4.7,-2.13) {reuse completed media payloads}; \node[note,text=orange] at (7.8,-2.13) {recompute at each cutoff}; \node[anchor=east,text=teal] at (2.05,-2.62) {local evidence}; \draw[draw=teal,line width=1.8pt] (7.7,-2.62) -- (8.5,-2.62); \node[note,anchor=west,text=teal] at (9.0,-2.62) {recent 1-s audio / optional vision\\refreshed on the common 5-Hz grid}; \node[anchor=east,text=navy] at (2.05,-3.18) {decision grid}; \draw[draw=navy,line width=0.6pt] (2.3,-3.18) -- (8.5,-3.18); \foreach \x in {2.42,2.58,...,8.34} { \draw[draw=navy,line width=0.5pt] (\x,-3.28) -- (\x,-3.08); } \draw[draw=navy,line width=0.9pt] (8.5,-3.3) -- (8.5,-3.06); \draw[dashed,draw=orange,line width=0.75pt] (8.5,-3.35) -- (8.5,-1.15); \node[anchor=south,text=orange,font=\sffamily\tiny\bfseries] at (8.5,-1.15) {cutoff $t_n$}; \node[note,anchor=west,text=navy] at (9.0,-3.18) {one prediction every 200 ms\\same cutoff and target index}; \end{tikzpicture} \end{document}