Back to skills
SKILL.md
015 Cnn 223651d4
ASecurityComprehensive guide to CNN and Vision Transformer architectures for object detection, segmentation, and image classification.
- 9 stars
- 0 votes
- 0 copies
- 0 views
- Added October 11, 2026
Works with
Security analysis
100/100npx -y skills add tools-only/X-Skills --skill 015-cnn_223651d4 --agent claude-codeAre you the author of 015 Cnn 223651d4?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/tools-only-015-cnn-223651d4)# Computer Vision Architectures
Comprehensive guide to CNN and Vision Transformer architectures for object detection, segmentation, and image classification.
## Table of Contents
- [Backbone Architectures](#backbone-architectures)
- [Detection Architectures](#detection-architectures)
- [Segmentation Architectures](#segmentation-architectures)
- [Vision Transformers](#vision-transformers)
- [Feature Pyramid Networks](#feature-pyramid-networks)
- [Architecture Selection](#architecture-selection)
---
## Backbone Architectures
Backbone networks extract feature representations from images. The choice of backbone affects both accuracy and inference speed.
### ResNet Family
ResNet introduced residual connections that enable training of very deep networks.
| Variant | Params | GFLOPs | Top-1 Acc | Use Case |
|---------|--------|--------|-----------|----------|
| ResNet-18 | 11.7M | 1.8 | 69.8% | Edge, mobile |
| ResNet-34 | 21.8M | 3.7 | 73.3% | Balanced |
| ResNet-50 | 25.6M | 4.1 | 76.1% | Standard backbone |
| ResNet-101 | 44.5M | 7.8 | 77.4% | High accuracy |
| ResNet-152 | 60.2M | 11.6 | 78.3% | Maximum accuracy |
**Residual Block Architecture:**
```
Input
|
+---> Conv 1x1 (reduce channels)
| |
| Conv 3x3
| |
| Conv 1x1 (expand channels)
| |
+-----> Add <----+
|
ReLU
|
Output
```
**When to use ResNet:**
- Standard detection/segmentation tasks
- When pretrained weights are important
- Moderate compute budget
- Well-understood, stable architecture
### EfficientNet Family
EfficientNet uses compound scaling to balance depth, width, and resolution.
| Variant | Params | GFLOPs | Top-1 Acc | Relative Speed |
|---------|--------|--------|-----------|----------------|
| EfficientNet-B0 | 5.3M | 0.4 | 77.1% | 1x |
| EfficientNet-B1 | 7.8M | 0.7 | 79.1% | 0.7x |
| EfficientNet-B2 | 9.2M | 1.0 | 80.1% | 0.6x |
| EfficientNet-B3 | 12M | 1.8 | 81.6% | 0.4x |
| EfficientNet-B4 | 19M | 4.2 | 82.9% | 0.25x |
| EfficientNet-B5 | 30M | 9.9 | 83.6% | 0.15x |
| EfficientNet-B6 | 43M | 19 | 84.0% | 0.1x |
| EfficientNet-B7 | 66M | 37 | 84.3% | 0.05x |
**Key innovations:**
- Mobile Inverted Bottleneck (MBConv) blocks
- Squeeze-and-Excitation attention
- Compound scaling coefficients
- Swish activation function
**When to use EfficientNet:**
- Mobile and edge deployment
- When parameter efficiency matters
- Classification tasks
- Limited compute resources
### ConvNeXt
ConvNeXt modernizes ResNet with techniques from Vision Transformers.
| Variant | Params | GFLOPs | Top-1 Acc |
|---------|--------|--------|-----------|
| ConvNeXt-T | 29M | 4.5 | 82.1% |
| ConvNeXt-S | 50M | 8.7 | 83.1% |
| ConvNeXt-B | 89M | 15.4 | 83.8% |
| ConvNeXt-L | 198M | 34.4 | 84.3% |
| ConvNeXt-XL | 350M | 60.9 | 84.7% |
**Key design choices:**
- 7x7 depthwise convolutions (like ViT patch size)
- Layer normalization instead of batch norm
- GELU activation
- Fewer but wider stages
- Inverted bottleneck design
**ConvNeXt Block:**
```
Input
|
+---> DWConv 7x7
| |
| LayerNorm
| |
| Linear (4x channels)
| |
| GELU
| |
| Linear (1x channels)
| |
+-----> Add <----+
|
Output
```
### CSPNet (Cross Stage Partial)
CSPNet is the backbone design used in YOLO v4-v8.
**Key features:**
- Gradient flow optimization
- Reduced computation while maintaining accuracy
- Cross-stage partial connections
- Optimized for real-time detection
**CSP Block:**
```
Input
|
+----> Split ----+
| |
| Conv Block
| |
| Conv Block
| |
+----> Concat <--+
|
Output
```
---
## Detection Architectures
### Two-Stage Detectors
Two-stage detectors first propose regions, then classify and refine them.
#### Faster R-CNN
Architecture:
1. **Backbone**: Feature extraction (ResNet, etc.)
2. **RPN (Region Proposal Network)**: Generate object proposals
3. **RoI Pooling/Align**: Extract fixed-size features
4. **Classification Head**: Classify and refine boxes
```
Image → Backbone → Feature Map
|
+→ RPN → Proposals
| |
+→ RoI Align ← +
|
FC Layers
|
Class + BBox
```
**RPN Details:**
- Sliding window over feature map
- Anchor boxes at each position (3 scales × 3 ratios = 9)
- Predicts objectness score and box refinement
- NMS to reduce proposals (typically 300-2000)
**Performance characteristics:**
- mAP@50:95: ~40-42 (COCO, R50-FPN)
- Inference: ~50-100ms per image
- Better localization than single-stage
- Slower but more accurate
#### Cascade R-CNN
Multi-stage refinement with increasing IoU thresholds.
```
Stage 1 (IoU 0.5) → Stage 2 (IoU 0.6) → Stage 3 (IoU 0.7)
```
**Benefits:**
- Progressive refinement
- Better high-IoU predictions
- +3-4 mAP over Faster R-CNN
- Minimal additional cost per stage
### Single-Stage Detectors
Single-stage detectors predict boxes and classes in one pass.
#### YOLO Family
**YOLOv8 Architecture:**
```
Input Image
|
Backbone (CSPDarknet)
|
+--+--+--+
| | | |
P3 P4 P5 (multi-scale features)
| | |
Neck (PANet + C2f)
| | |
Head (Decoupled)
|
Boxes + Classes
```
**Key YOLOv8 innovations:**
- C2f module (faster CSP variant)
- Anchor-free detection head
- Decoupled classification/regression heads
- Task-aligned assigner (TAL)
- Distribution focal loss (DFL)
**YOLO variant comparison:**
| Model | Size (px) | Params | mAP@50:95 | Speed (ms) |
|-------|-----------|--------|-----------|------------|
| YOLOv5n | 640 | 1.9M | 28.0 | 1.2 |
| YOLOv5s | 640 | 7.2M | 37.4 | 1.8 |
| YOLOv5m | 640 | 21.2M | 45.4 | 3.5 |
| YOLOv8n | 640 | 3.2M | 37.3 | 1.2 |
| YOLOv8s | 640 | 11.2M | 44.9 | 2.1 |
| YOLOv8m | 640 | 25.9M | 50.2 | 4.2 |
| YOLOv8l | 640 | 43.7M | 52.9 | 6.8 |
| YOLOv8x | 640 | 68.2M | 53.9 | 10.1 |
#### SSD (Single Shot Detector)
Multi-scale detection with default boxes.
**Architecture:**
- VGG16 or MobileNet backbone
- Additional convolution layers for multi-scale
- Default boxes at each scale
- Direct classification and regression
**When to use SSD:**
- Edge deployment (SSD-MobileNet)
- When YOLO alternatives needed
- Simple architecture requirements
#### RetinaNet
Focal loss to handle class imbalance.
**Key innovation:**
```python
FL(p_t) = -α_t * (1 - p_t)^γ * log(p_t)
```
Where:
- γ (focusing parameter) = 2 typically
- α (class weight) = 0.25 for background
**Benefits:**
- Handles extreme foreground-background imbalance
- Matches two-stage accuracy
- Single-stage speed
---
## Segmentation Architectures
### Instance Segmentation
#### Mask R-CNN
Extends Faster R-CNN with mask prediction branch.
```
RoI Features → FC Layers → Class + BBox
|
+→ Conv Layers → Mask (28×28 per class)
```
**Key details:**
- RoI Align (bilinear interpolation, no quantization)
- Per-class binary mask prediction
- Decoupled mask and classification
- 14×14 or 28×28 mask resolution
**Performance:**
- mAP (box): ~39 on COCO
- mAP (mask): ~35 on COCO
- Inference: ~100-200ms
#### YOLACT / YOLACT++
Real-time instance segmentation.
**Approach:**
1. Generate prototype masks (global)
2. Predict mask coefficients per instance
3. Linear combination: mask = Σ(coefficients × prototypes)
**Benefits:**
- Real-time (~30 FPS)
- Simpler than Mask R-CNN
- Global prototypes capture spatial info
#### YOLOv8-Seg
Adds segmentation head to YOLOv8.
**Performance:**
- mAP (box): 44.6
- mAP (mask): 36.8
- Speed: 4.5ms
### Semantic Segmentation
#### DeepLabV3+
Atrous convolutions for multi-scale context.
**Key components:**
1. **ASPP (Atrous Spatial Pyramid Pooling)**
- Parallel atrous convolutions at different rates
- Captures multi-scale context
- Rates: 6, 12, 18 typically
2. **Encoder-Decoder**
- Encoder: Backbone + ASPP
- Decoder: Upsample with skip connections
```
Image → Backbone → ASPP → Decoder → Segmentation
↘ ↗
Low-level features
```
**Performance:**
- mIoU: 89.0 on Cityscapes
- Inference: ~25ms (ResNet-50)
#### SegFormer
Transformer-based semantic segmentation.
**Architecture:**
1. **Hierarchical Transformer Encoder**
- Multi-scale feature maps
- Efficient self-attention
- Overlapping patch embedding
2. **MLP Decoder**
- Simple MLP aggregation
- No complex decoders needed
**Benefits:**
- No positional encoding needed
- Efficient attention mechanism
- Strong multi-scale features
### Promptable Segmentation
#### SAM (Segment Anything Model)
Zero-shot segmentation with prompts.
**Architecture:**
1. **Image Encoder**: ViT-H (632M params)
2. **Prompt Encoder**: Points, boxes, masks, text
3. **Mask Decoder**: Lightweight transformer
**Prompts supported:**
- Points (foreground/background)
- Bounding boxes
- Rough masks
- Text (via CLIP integration)
**Usage patterns:**
```python
# Point prompt
masks = sam.predict(image, point_coords=[[500, 375]], point_labels=[1])
# Box prompt
masks = sam.predict(image, box=[100, 100, 400, 400])
# Multiple points
masks = sam.predict(image, point_coords=[[500, 375], [200, 300]],
point_labels=[1, 0]) # 1=foreground, 0=background
```
---
## Vision Transformers
### ViT (Vision Transformer)
Original vision transformer architecture.
**Architecture:**
```
Image → Patch Embedding → [CLS] + Position Embedding
↓
Transformer Encoder ×L
↓
[CLS] token
↓
Classification Head
```
**Key details:**
- Patch size: 16×16 or 14×14 typically
- Position embeddings: Learned 1D
- [CLS] token for classification
- Standard transformer encoder blocks
**Variants:**
| Model | Patch | Layers | Hidden | Heads | Params |
|-------|-------|--------|--------|-------|--------|
| ViT-Ti | 16 | 12 | 192 | 3 | 5.7M |
| ViT-S | 16 | 12 | 384 | 6 | 22M |
| ViT-B | 16 | 12 | 768 | 12 | 86M |
| ViT-L | 16 | 24 | 1024 | 16 | 304M |
| ViT-H | 14 | 32 | 1280 | 16 | 632M |
### DeiT (Data-efficient Image Transformers)
Training ViT without massive datasets.
**Key innovations:**
- Knowledge distillation from CNN teachers
- Strong data augmentation
- Regularization (stochastic depth, label smoothing)
- Distillation token (learns from teacher)
**Training recipe:**
- RandAugment
- Mixup (α=0.8)
- CutMix (α=1.0)
- Random erasing (p=0.25)
- Stochastic depth (p=0.1)
### Swin Transformer
Hierarchical transformer with shifted windows.
**Key innovations:**
1. **Shifted Window Attention**
- Local attention within windows
- Cross-window connection via shifting
- O(n) complexity vs O(n²) for global attention
2. **Hierarchical Feature Maps**
- Patch merging between stages
- Similar to CNN feature pyramids
- Direct use in detection/segmentation
**Architecture:**
```
Stage 1: 56×56, 96-dim → Patch Merge
Stage 2: 28×28, 192-dim → Patch Merge
Stage 3: 14×14, 384-dim → Patch Merge
Stage 4: 7×7, 768-dim
```
**Variants:**
| Model | Params | GFLOPs | Top-1 |
|-------|--------|--------|-------|
| Swin-T | 29M | 4.5 | 81.3% |
| Swin-S | 50M | 8.7 | 83.0% |
| Swin-B | 88M | 15.4 | 83.5% |
| Swin-L | 197M | 34.5 | 84.5% |
---
## Feature Pyramid Networks
FPN variants for multi-scale detection.
### Original FPN
Top-down pathway with lateral connections.
```
P5 ← C5 (1/32)
↓
P4 ← C4 + Upsample(P5) (1/16)
↓
P3 ← C3 + Upsample(P4) (1/8)
↓
P2 ← C2 + Upsample(P3) (1/4)
```
### PANet (Path Aggregation Network)
Bottom-up augmentation after FPN.
```
FPN top-down → Bottom-up augmentation
P2 → N2 ↘
P3 → N3 → N3 ↘
P4 → N4 → N4 → N4 ↘
P5 → N5 → N5 → N5 → N5
```
**Benefits:**
- Shorter path from low-level to high-level
- Better localization signals
- +1-2 mAP improvement
### BiFPN (Bidirectional FPN)
Weighted bidirectional feature fusion.
**Key innovations:**
- Learnable fusion weights
- Bidirectional cross-scale connections
- Repeated blocks for iterative refinement
**Fusion formula:**
```
O = Σ(w_i × I_i) / (ε + Σ w_i)
```
Where weights are learned via fast normalized fusion.
### NAS-FPN
Neural architecture search for FPN design.
**Searched on COCO:**
- 7 fusion cells
- Optimized connection patterns
- 3-4 mAP improvement over FPN
---
## Architecture Selection
### Decision Matrix
| Requirement | Recommended | Alternative |
|-------------|-------------|-------------|
| Real-time (>30 FPS) | YOLOv8s | RT-DETR-S |
| Edge (<4GB RAM) | YOLOv8n | MobileNetV3-SSD |
| High accuracy | DINO, Cascade R-CNN | YOLOv8x |
| Instance segmentation | Mask R-CNN | YOLOv8-seg |
| Semantic segmentation | SegFormer | DeepLabV3+ |
| Zero-shot | SAM | CLIP+segmentation |
| Small objects | YOLO+SAHI | Cascade R-CNN |
| Video real-time | YOLOv8 + ByteTrack | YOLOX + SORT |
### Training Data Requirements
| Architecture | Minimum Images | Recommended |
|--------------|----------------|-------------|
| YOLO (fine-tune) | 100-500 | 1,000-5,000 |
| YOLO (from scratch) | 5,000+ | 10,000+ |
| Faster R-CNN | 1,000+ | 5,000+ |
| DETR/DINO | 10,000+ | 50,000+ |
| ViT backbone | 10,000+ | 100,000+ |
| SAM (fine-tune) | 100-1,000 | 5,000+ |
### Compute Requirements
| Architecture | Training GPU | Inference GPU |
|--------------|--------------|---------------|
| YOLOv8n | 4GB VRAM | 2GB VRAM |
| YOLOv8m | 8GB VRAM | 4GB VRAM |
| YOLOv8x | 16GB VRAM | 8GB VRAM |
| Faster R-CNN R50 | 8GB VRAM | 4GB VRAM |
| Mask R-CNN R101 | 16GB VRAM | 8GB VRAM |
| DINO-4scale | 32GB VRAM | 16GB VRAM |
| SAM ViT-H | 32GB VRAM | 8GB VRAM |
---
## Code Examples
### Load Pretrained Backbone (timm)
```python
import timm
# List available models
print(timm.list_models('*resnet*'))
# Load pretrained
backbone = timm.create_model('resnet50', pretrained=True, features_only=True)
# Get feature maps
features = backbone(torch.randn(1, 3, 224, 224))
for f in features:
print(f.shape)
# torch.Size([1, 64, 56, 56])
# torch.Size([1, 256, 56, 56])
# torch.Size([1, 512, 28, 28])
# torch.Size([1, 1024, 14, 14])
# torch.Size([1, 2048, 7, 7])
```
### Custom Detection Backbone
```python
import torch.nn as nn
from torchvision.models import resnet50
from torchvision.ops import FeaturePyramidNetwork
class DetectionBackbone(nn.Module):
def __init__(self):
super().__init__()
backbone = resnet50(pretrained=True)
self.layer1 = nn.Sequential(backbone.conv1, backbone.bn1,
backbone.relu, backbone.maxpool,
backbone.layer1)
self.layer2 = backbone.layer2
self.layer3 = backbone.layer3
self.layer4 = backbone.layer4
self.fpn = FeaturePyramidNetwork(
in_channels_list=[256, 512, 1024, 2048],
out_channels=256
)
def forward(self, x):
c1 = self.layer1(x)
c2 = self.layer2(c1)
c3 = self.layer3(c2)
c4 = self.layer4(c3)
features = {'feat0': c1, 'feat1': c2, 'feat2': c3, 'feat3': c4}
pyramid = self.fpn(features)
return pyramid
```
### Vision Transformer with Detection Head
```python
import timm
# Swin Transformer for detection
swin = timm.create_model('swin_base_patch4_window7_224',
pretrained=True,
features_only=True,
out_indices=[0, 1, 2, 3])
# Get multi-scale features
x = torch.randn(1, 3, 224, 224)
features = swin(x)
for i, f in enumerate(features):
print(f"Stage {i}: {f.shape}")
# Stage 0: torch.Size([1, 128, 56, 56])
# Stage 1: torch.Size([1, 256, 28, 28])
# Stage 2: torch.Size([1, 512, 14, 14])
# Stage 3: torch.Size([1, 1024, 7, 7])
```
---
## Resources
- [torchvision models](https://pytorch.org/vision/stable/models.html)
- [timm library](https://github.com/huggingface/pytorch-image-models)
- [Detectron2 Model Zoo](https://github.com/facebookresearch/detectron2/blob/main/MODEL_ZOO.md)
- [MMDetection Model Zoo](https://github.com/open-mmlab/mmdetection/blob/main/docs/en/model_zoo.md)
- [Ultralytics YOLOv8](https://docs.ultralytics.com/)
Attribution
Comments
Loading comments…
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.