Files
icassp2027-experiment/manuscript/targeted/figures/system_overview.tex
T

72 lines
3.3 KiB
TeX

\documentclass[tikz,border=2pt]{standalone}
\usepackage{amsmath}
\usetikzlibrary{arrows.meta,positioning,calc}
\definecolor{navy}{HTML}{19324A}
\definecolor{bluefill}{HTML}{EAF1F7}
\definecolor{teal}{HTML}{087F78}
\definecolor{tealfill}{HTML}{E6F4F1}
\definecolor{orange}{HTML}{B85D0F}
\definecolor{orangefill}{HTML}{FFF0DF}
\definecolor{grayline}{HTML}{687782}
\begin{document}
\begin{tikzpicture}[
font=\sffamily\scriptsize,>=Latex,
flow/.style={-{Latex[length=1.6mm]},line width=.65pt,draw=navy},
localflow/.style={flow,draw=teal},
block/.style={draw=navy,fill=bluefill,rounded corners=1.6pt,
line width=.6pt,minimum height=8.5mm,align=center,inner sep=2pt},
local/.style={block,draw=teal,fill=tealfill},
hint/.style={font=\sffamily\tiny,text=grayline,align=center}]
\node[anchor=west,font=\sffamily\scriptsize\bfseries,text=navy]
at (0,3.12) {Deployable prediction path at the same causal cutoff $t_n$};
\node[block,minimum width=25mm] (history) at (1.35,2.26)
{observed AV history\\8-s maximum budget};
\node[block,minimum width=25mm] (omni) at (4.15,2.26)
{frozen Omni Thinker\\last-four-layer state};
\node[local,minimum width=25mm] (audio) at (1.35,1.13)
{last 1-s mixed audio\\cropped at $t_n$};
\node[local,minimum width=25mm] (ae) at (4.15,1.13)
{frozen audio encoder\\valid-token mean};
\node[local,dashed,minimum width=25mm] (video) at (1.35,0)
{optional recent frames\\provided person boxes};
\node[local,dashed,minimum width=25mm] (ve) at (4.15,0)
{frozen visual encoder\\pooled person tokens};
\node[block,minimum width=20mm] (head) at (7.15,1.13)
{normalized features\\+ validity $\to$ MLP};
\node[block,minimum width=26mm] (out) at (10.4,1.13)
{$10\times3$ forecast\\0.2--2.0-s horizons};
\draw[flow] (history) -- (omni);
\draw[localflow] (audio) -- (ae);
\draw[localflow,dashed] (video) -- (ve);
\draw[flow] (omni.east) -- ++(.38,0) |- (head.north);
\draw[localflow] (ae) -- (head);
\draw[localflow,dashed] (ve.east) -- ++(.38,0) |- (head.south);
\draw[flow] (head) -- (out);
\node[hint,text=navy] at (10.4,.17)
{background / wearer / aggregate others};
\draw[draw=grayline,line width=.45pt] (0,-.62)--(11.85,-.62);
\node[anchor=west,font=\sffamily\scriptsize\bfseries,text=navy]
at (0,-.94) {Bounded streaming state: no media after $t_n$};
\node[anchor=east,text=navy] at (1.9,-1.62) {Omni blocks};
\foreach \a/\b in {2.12/3.55,3.55/4.98,4.98/6.41} {
\draw[draw=navy,fill=bluefill,line width=.55pt]
(\a,-1.84) rectangle (\b,-1.39);
\node[font=\sffamily\tiny,text=navy] at ({(\a+\b)/2},-1.615) {completed};
}
\draw[draw=orange,fill=orangefill,line width=.65pt]
(6.41,-1.84) rectangle (7.85,-1.39);
\node[font=\sffamily\tiny,text=orange] at (7.13,-1.615) {observed tail};
\draw[draw=orange,dashed,line width=.7pt] (7.85,-2.43)--(7.85,-1.12);
\node[anchor=south,font=\sffamily\tiny\bfseries,text=orange]
at (7.85,-1.12) {$t_n$};
\node[hint,anchor=west] at (8.16,-1.62)
{reuse completed payloads;\\recompute temporary tail only};
\node[anchor=east,text=teal] at (1.9,-2.33) {local 1 s};
\draw[draw=teal,line width=2pt] (7.14,-2.33)--(7.85,-2.33);
\node[hint,anchor=west,text=teal] at (8.16,-2.33)
{recent evidence refreshed every 200 ms};
\node[hint,anchor=west] at (2.12,-2.74)
{Privileged past-activity labels are evaluated separately as an information audit; they never enter this prediction path.};
\end{tikzpicture}
\end{document}