North Micro Vision 2.4B
Fit diagram
Read at 100%
Clear selection
Download SVG
Download PNG
Click a block to read its description, or select it with Tab and Enter.
North Micro Vision 2.4B
Detect. P = image patches; L = combined tokens (runtime axes). Model widths below are resolved.
LibreYOLO
North Micro Vision 2.4B
Detect. P = image patches; L = combined tokens (runtime axes). Model widths below are resolved.
Image encoder
Image processor
Nominal runner size 1024; native tiling/resize
Conv3d patch embedding
patch=16; output P × 1152
Learned/interpolated 2D positions
P × 1152
Vision blocks 0 to 8
n=9; width 1152
V0
Vision blocks 9 to 16
n=8; width 1152
V1
Vision blocks 17 to 24
n=8; width 1152
V2
Vision blocks 25 to 26
n=2; width 1152
V
V carries final visual features to the projector.
Patch counts vary with processor output, not model size.
V0/V1/V2 are the three intermediate visual taps.
Projection and multimodal sequence
V
Visual projector
1152 channels become 2048 channels
Visual token sequence
Patch grouping factor 2 per axis
Prompt and image placeholders
One query per class
Tokenizer
Runtime text length
Token embedding
Vocabulary 262144; width 2048
Replace image-token placeholders
L × 2048; image and text in one sequence
S
V0
Intermediate patch merger
Post-shuffle LayerNorm; output width 2048
D0
V1
Intermediate patch merger
Post-shuffle LayerNorm; output width 2048
D1
V2
Intermediate patch merger
Post-shuffle LayerNorm; output width 2048
D2
D0/D1/D2 add to visual positions in text layers 0/1/2.
S denotes the multimodal token sequence.
Language model and generated output
S
Text decoder layer 0
Width 2048
+
D0
Text decoder layer 1
Width 2048
+
D1
Text decoder layer 2
Width 2048
+
D2
Remaining text decoder layers
n=25
Final LayerNorm
2048 channels
Language head Linear
2048 to 262144; logits × 0.25
Greedy token generation
max_new_tokens=1024; do_sample=False
O
North: sliding window4096; every fourth layer uses full attention.
O is the generated reply; prompt tokens are removed.
Generation is repeated per vocabulary class.
Vision transformer layer
Input
S × 1152
LayerNorm
1152 channels
Vision attention
+
LayerNorm
1152 channels
Vision MLP
+
Output
S × 1152
S is the token count of this sublayer.
Text decoder layer
Input
S × 2048
LayerNorm
2048 channels
Causal attention
Gated MLP
+
+
Attention and MLP use the same normalized input.
One shared LayerNorm, parallel sublayers.
Output
S × 2048
S is the token count of this sublayer.
Vision attention
Input width 1152; Q heads 16; K/V heads 16.
Q Linear
1152 to 1152
Split heads
72 per head
K Linear
1152 to 1152
Split heads
72 per head
V Linear
1152 to 1152
Split heads
72 per head
Rotary position
cos/sin half rotation
Rotary position
cos/sin half rotation
Q × transpose(K)
Scale by 1/sqrt(72)
Softmax over keys
Within the image; padding mask
Attention weights × V
16 query heads, weighted values
Concat heads
Output Linear
1152 to 1152
RoPE: x*cos + rotate_half(x)*sin.
Distinct projections share the same normalized input.
Text attention
Input width 2048; Q heads 16; K/V heads 8.
Q Linear
2048 to 2048
Split heads
128 per head
K Linear
2048 to 1024
Split heads
128 per head
V Linear
2048 to 1024
Split heads
128 per head
Rotary position
Sliding layers only
Rotary position
Sliding layers only
Align K heads
8 to 16
Align V heads
8 to 16
Q × transpose(K)
Scale by 1/sqrt(128)
Softmax over keys
Causal mask; cached K/V optional
Attention weights × V
16 query heads, weighted values
Concat heads
Output Linear
2048 to 2048
RoPE: x*cos + rotate_half(x)*sin.
Full layers skip RoPE.
Vision MLP
Input
S × 1152
Linear
1152 to 4304
gelu_pytorch_tanh
Down Linear
4304 to 1152
Output
S × 1152
Residual addition is in the enclosing layer diagram.
S is the token count of this sublayer.
Text MLP
Input
S × 2048
Gate Linear
2048 to 6144
Up Linear
2048 to 6144
SiLU
Elementwise multiply
S × 6144
Down Linear
6144 to 2048
Output
S × 2048
Residual addition is in the enclosing layer diagram.
S is the token count of this sublayer.
Visual projector
LayerNorm
1152 channels (main merger)
Group spatial neighbors
2 × 2; packed width 4608
Linear
4608 to 4608
GELU
Linear
4608 to 2048
Deep-tap mergers normalize after grouping.
Output width equals the language-model embedding.
LibreYOLO output adapter
O
Decode generated tokens
Retain reply text
Parse bare boxes
Assign the queried class
Normalize coordinates
Divide by 1000; xyxy corners
Validate / class / confidence
Synthetic per-box score1; clamp valid boxes
Same-class deduplication
Rounded boxes and IoU filter before max_det
Results.boxes
Scale xyxy to original W,H; cap max_det
Scores are adapter placeholders, not calibrated confidence.
Scope: native backend architecture from pinned config metadata; no pretrained execution. The image path is shown.
Source: libreyolo/models/vlm/northmicro.py; Transformers 5.16.1. Revision a4d0ecc9e17f.
libreyolo.com