FOMO-M
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.
FOMO-M
Point detection; 1 foreground class + background; unfused PyTorch eval. Sizes exclude batch (batch = 1).
LibreYOLO
FOMO-M
Point detection; 1 foreground class + background; unfused PyTorch eval. Sizes exclude batch (batch = 1).
Truncated MobileNetV2
Input
3 × 192 × 192
ConvBNReLU6 3×3, s=2
16 × 96 × 96
InvertedResidual (expansion 1)
8 × 96 × 96
InvertedResidual (block 1, s=2)
16 × 48 × 48
InvertedResidual (block 2)
16 × 48 × 48
InvertedResidual (block 3, s=2)
16 × 24 × 24
InvertedResidual (block 4)
16 × 24 × 24
InvertedResidual (block 5)
16 × 24 × 24
ConvBNReLU6 1×1
96 × 24 × 24
No box-regression tower or anchor decoding.
Feature F
Point head and postprocessing
Feature map
96 × 24 × 24
Conv2d 1×1, bias=True
2 × 24 × 24
Softmax over 2 classes
2 × 24 × 24
Foreground probability
1 × 24 × 24
Threshold, sort scores
Descending foreground confidence
Grid-radius suppression
Default radius = 1 cell
Grid-cell centers
x + 0.5; y + 0.5
Rescale to original image
Rows: x, y, class, confidence
The neural network ends at logits. Softmax and point selection run in utils.postprocess().
Random-weight CPU output: 1 × 2 × 24 × 24. Input resolution is fixed when building the model.
Feature F from backbone
Initial block
Input
16 channels
Static zero padding
L, R, T, B: (1, 1, 1, 1)
Depthwise Conv2d 3×3
16 ch; groups=16; s=1
BatchNorm2d + ReLU6
eps=0.001
Conv2d 1×1
8 ch; bias=False
BatchNorm2d
eps=0.001; no activation
No residual connection.
Block 1
Input
8 channels
Conv2d 1×1
48 ch; bias=False
BatchNorm2d + ReLU6
eps=0.001
Static zero padding
L, R, T, B: (0, 1, 0, 1)
Depthwise Conv2d 3×3
48 ch; groups=48; s=2
BatchNorm2d + ReLU6
eps=0.001
Conv2d 1×1
16 ch; bias=False
BatchNorm2d
eps=0.001; no activation
No residual connection.
Block 2
Input
16 channels
Conv2d 1×1
96 ch; bias=False
BatchNorm2d + ReLU6
eps=0.001
Static zero padding
L, R, T, B: (1, 1, 1, 1)
Depthwise Conv2d 3×3
96 ch; groups=96; s=1
BatchNorm2d + ReLU6
eps=0.001
Conv2d 1×1
16 ch; bias=False
BatchNorm2d
eps=0.001; no activation
+
identity
Residual enabled.
Block 3
Input
16 channels
Conv2d 1×1
96 ch; bias=False
BatchNorm2d + ReLU6
eps=0.001
Static zero padding
L, R, T, B: (0, 1, 0, 1)
Depthwise Conv2d 3×3
96 ch; groups=96; s=2
BatchNorm2d + ReLU6
eps=0.001
Conv2d 1×1
16 ch; bias=False
BatchNorm2d
eps=0.001; no activation
No residual connection.
Blocks 4 and 5
Input
16 channels
Conv2d 1×1
96 ch; bias=False
BatchNorm2d + ReLU6
eps=0.001
Static zero padding
L, R, T, B: (1, 1, 1, 1)
Depthwise Conv2d 3×3
96 ch; groups=96; s=1
BatchNorm2d + ReLU6
eps=0.001
Conv2d 1×1
16 ch; bias=False
BatchNorm2d
eps=0.001; no activation
+
identity
Each block has its own weights.
ConvBNReLU6
Static zero padding
SAME for the model input geometry
Conv2d
k and stride given by stage
BatchNorm2d
eps=0.001
ReLU6
Clamp activations to [0, 6]
Depthwise uses one group per input channel.
Projection Conv2d has no ReLU6.
Source-verified architecture. CPU shape evidence covers s, m, l with no downloaded weights. Point postprocessing is shown separately.
Source: models/fomo/nn.py; models/fomo/utils.py. Revision a4d0ecc9e17f.
libreyolo.com