
EE 641 - Unit 2
Fall 2026
[Pose] Z. Cao, G. Hidalgo, T. Simon, S.-E. Wei, and Y. Sheikh, “OpenPose: Realtime multi-person 2D pose estimation using part affinity fields,” IEEE Transactions on Pattern Analysis and Machine Intelligence, vol. 43, no. 1, pp. 172–186, 2019.
[Detection] S. Ren, K. He, R. Girshick, and J. Sun, “Faster R-CNN: Towards real-time object detection with region proposal networks,” IEEE Transactions on Pattern Analysis and Machine Intelligence, vol. 39, no. 6, pp. 1137–1149, 2016.
[Detection] J. Redmon, S. Divvala, R. Girshick, and A. Farhadi, “You only look once: Unified, real-time object detection,” in Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, 2016, pp. 779–788.
[Detection] T.-Y. Lin, P. Goyal, R. Girshick, K. He, and P. Dollár, “Focal loss for dense object detection,” in Proceedings of the IEEE International Conference on Computer Vision, 2017, pp. 2980–2988.
[Survey] Z. Zou, K. Chen, Z. Shi, Y. Guo, and J. Ye, “Object detection in 20 years: A survey,” Proceedings of the IEEE, vol. 111, no. 3, pp. 257–276, 2023.
Segmentation J. Long, E. Shelhamer, and T. Darrell, “Fully convolutional networks for semantic segmentation,” in Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, 2015, pp. 3431–3440.
Segmentation K. He, G. Gkioxari, P. Dollár, and R. Girshick, “Mask R-CNN,” in Proceedings of the IEEE International Conference on Computer Vision, 2017, pp. 2961–2969.
Segmentation A. Kirillov et al., “Segment anything,” in Proceedings of the IEEE/CVF International Conference on Computer Vision, 2023, pp. 4015–4026.
[3D] C. R. Qi, H. Su, K. Mo, and L. J. Guibas, “PointNet: Deep learning on point sets for 3D classification and segmentation,” in Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, 2017, pp. 652–660.
Each task trains one function approximator over images:
\[f_\theta: \mathbb{R}^{H \times W \times 3} \rightarrow \mathcal{Y}\]
| Question | Task | \(\mathcal{Y}\) |
|---|---|---|
| What is in the image? | Classification | \(\{1, ..., C\}\) |
| Where is it? | Localization | \(\{1, ..., C\} \times \mathbb{R}^4\) |
| Where is everything? | Detection | \(\mathcal{P}(\{1, ..., C\} \times \mathbb{R}^4)\) |
| Which pixels belong to what? | Segmentation | \(\{1, ..., C\}^{H \times W}\) |
\(\mathcal{P}\): finite sets - a variable number of labeled boxes.
Same domain
Increasingly spatial codomain

The output space sets the loss, the head, and the evaluation.
\[\mathcal{Y} = \bigcup_{n=0}^{N} \left(\{1, ..., C\} \times \mathbb{R}^4\right)^n\]
Output
Network

A fixed-width head cannot emit a scene-sized set directly.
Segmentation returns to a fixed-shape output - at every pixel:
Semantic - a class per pixel
Instance - an identity per pixel
Features are 32× coarser than the output

Dense output from downsampled features is the central segmentation problem.
Candidate boxes
Two approaches supply the candidates:
Dense - score every grid position (single-shot section)
Proposed - score a selected subset (region-based section)

Candidate count against per-candidate computation separates the two approaches.
Candidates must span every object size the scene contains.
Object scale is unbounded
A feature map’s range is bounded

Feature pyramids, multi-scale heads, and dilated convolutions are responses to these bounds.
Training and evaluation both need one measure - how well one box matches another. Intersection over union measures it by area:
\[\text{IoU}(B_1, B_2) = \frac{|B_1 \cap B_2|}{|B_1 \cup B_2|}\]
Properties
Uses

Parameterizations
Scale dependence
\[\mathcal{L}_{L2} = \|b - \hat{b}\|_2^2\]
Fixes
\[\text{smooth}_{L1}(x) = \begin{cases} 0.5\,x^2 & |x| < 1 \\ |x| - 0.5 & \text{otherwise} \end{cases}\]

Both appear again in the region-based and single-shot training losses.
\[\mathcal{L} = \frac{1}{N_{cls}} \sum_i \mathcal{L}_{cls}(p_i, p_i^*) \;+\; \lambda \, \frac{1}{N_{reg}} \sum_i \mathbb{1}[i \in \text{pos}] \, \mathcal{L}_{reg}(t_i, t_i^*)\]
The classification term scores what each candidate contains. The regression term refines where - only for candidates assigned to an object.
The indicator is label assignment
The classification term is dominated by background
The regression target is a choice
Assignment rule, imbalance treatment, and regression target differentiate detector training.
Mean average precision: the rank-based score of the full detection set.
Average precision, per class
Threshold sweep

A single reported mAP combines every class, threshold, and ranking into one number.
Detection and segmentation numbers are reported on four standard datasets.
| Benchmark | Images | Classes | Labels | Appears with |
|---|---|---|---|---|
| PASCAL VOC07 | 9,963 | 20 | 24,640 boxes | R-CNN-era detection results |
| COCO | 328,000 | 80 | 2.5M instance masks | modern detectors, Mask R-CNN |
| Cityscapes | 5,000 fine | 19 | per-pixel maps | semantic segmentation |
| KITTI | 7,481 train | 3 | 80,256 3D boxes | 3D detection |
COCO’s protocol is the modern standard
A reported number is meaningful only with its dataset and protocol attached.
Cost per label (crowdsourced, quality-controlled)
| Annotation | Time |
|---|---|
| Image-level class label | seconds |
| Bounding box | ~35 s |
| Instance mask | ~79 s |
| Cityscapes fine image | ~90 min |
Each step up in output density multiplies the cost of every training example.
Dataset size falls as label density rises
Detection and segmentation train on 10-100× less data than classification.
Label cost, not model capacity, bounds dense-prediction datasets.
Pose estimation: \(K\) named locations per person.
\[f_\theta: \mathbb{R}^{H \times W \times 3} \rightarrow \mathbb{R}^{K \times 2}\]
Task
Two regimes
Uses

\[\hat{p}_k = f_\theta(I) \in \mathbb{R}^2 \qquad \mathcal{L} = \sum_{k=1}^{K} \|\hat{p}_k - p_k^*\|^2\]
Structure
Properties

Ambiguity
L2 fits the posterior mean
Lost spatial structure
Regression scores consistently below heatmap methods on the standard pose benchmarks.

\[\hat{H} \in \mathbb{R}^{H' \times W' \times K}\]
Read \(\hat{H}_k[i,j]\) as the probability that keypoint \(k\) lies at \((i,j)\) - a spatial distribution over the map.
Targets
\[G_k(p) = \exp\!\left(-\frac{\|p - p_k^*\|^2}{2\sigma^2}\right)\]
Loss
\[\mathcal{L} = \frac{1}{KH'W'} \sum_{k} \sum_{i,j} \left(G_k[i,j] - \hat{H}_k[i,j]\right)^2\]
Ambiguity

\[\hat{p}_k = \arg\max_{(i,j)} \hat{H}_k[i,j]\]
Argmax takes the mode of the spatial distribution - the MAP estimate, where L2 regression fit the mean.
Resolution
Differentiability
Size

Backbone features sit at \(H/32\). Heatmaps are wanted near input resolution.
Hourglass
Stacking
\[\mathcal{L} = \sum_{t=1}^{T} \mathcal{L}_t\]

The same resolution recovery returns with semantic segmentation.
Top-down - people first
Bottom-up - parts first
Person count and crowding set which decomposition is cheaper.

Grouping needs evidence that two keypoints belong to one person. Part affinity fields (PAFs) turn the limb between them into that evidence.
Field
\[\mathbf{L}(p) = \begin{cases} \mathbf{v} & p \text{ on the limb} \\ \mathbf{0} & \text{otherwise} \end{cases} \qquad \mathbf{v} = \frac{j_2 - j_1}{\|j_2 - j_1\|}\]
Score
\[E = \int_0^1 \mathbf{L}(p(u)) \cdot \frac{d_{j_2} - d_{j_1}}{\|d_{j_2} - d_{j_1}\|} \, du\]

Per limb type: connect candidate joints so that no candidate is used twice and the summed PAF score is maximal.
\[\max \sum_{c \in \mathcal{C}} \sum_{(j_1, j_2) \in c} E_{j_1 j_2}\]
Per-limb matching (\(N\) = candidates per joint for that limb)
The full problem
The same bipartite matching, Hungarian included, returns with set-prediction detectors.

\[\pi(P_{3D}) = p_{2D}\]
Ambiguity
Lifting
Volumetric heatmaps
Volumetric heatmaps carry the regression-versus-map trade into 3D.

Detection in two stages: a class-agnostic proposal stage, then a classifier over its regions.

Propose
Classify
A missed object in the proposal stage is unrecoverable.

Figure: Girshick et al., 2014.
The first CNN detector (2014):
The loop body is a full network evaluation. No computation is shared between overlapping regions.
Pre-train
Fine-tune
SVMs, per class
Box regression
R-CNN caches features for every proposal of every image - hundreds of GB - before the SVMs train.
No gradients cross a stage boundary. End-to-end fine-tuning of the full pipeline was not yet standard practice.
Per image: 13 s on GPU, 53 s on CPU.


Figure: Girshick, 2015.
The 2015 revision inverts the order: one backbone pass first, regions read from its output.
| R-CNN | Fast R-CNN | |
|---|---|---|
| Time per image | 13 s | 0.32 s |
| VOC07 mAP | 66% | 70% |
146× faster at test time, one network instead of four training stages.
Region-of-interest (RoI) pooling - the heads require fixed-size input, and proposals come in every size.
Operation
Output: \(7 \times 7 \times C\) for any input region.
Quantization

\[L(p, u, t^u, v) = L_{cls}(p, u) + \lambda\,[u \geq 1]\, L_{loc}(t^u, v)\]
The two-term detection loss, instantiated:
What joint training changes


After the Fast R-CNN speedup, selective search takes 2 s and everything else 0.32 s.
What remains fixed
Object-or-not is a simpler task

Figure: Ren et al., 2015.
Faster R-CNN (2015): the region proposal network (RPN) - proposals from the shared feature map.
RPN
One network, two stages
A 1×1 conv head emits offsets. Anchors are the references the offsets refine.
Reference set, per position
Offset parameterization
\[t_x = \frac{x - x_a}{w_a} \quad t_y = \frac{y - y_a}{h_a} \quad t_w = \log\frac{w}{w_a} \quad t_h = \log\frac{h}{h_a}\]
Coverage

The indicator of the two-term loss, instantiated for the RPN:
| Label | Rule |
|---|---|
| Positive | IoU > 0.7 with any ground truth, or the highest-IoU anchor for a ground truth |
| Negative | IoU < 0.3 against all ground truth |
| Ignored | 0.3-0.7 - contributes no loss |
Sampling
The RPN uses 0.7/0.3, Fast R-CNN’s head uses 0.5, the SVMs used 0.3 - assignment is a per-detector design decision.

Non-maximum suppression (NMS) - the duplicate filter after scoring.
Why duplicates exist
Algorithm
The threshold is a trade

Faster R-CNN pools from one map at stride 16 - one size range, with small objects below it. The feature pyramid network (FPN) supplies every range.
Two pathways
\[P_\ell = \text{Conv}_{1\times1}(C_\ell) + \text{Upsample}(P_{\ell+1})\]
Level assignment
\[k = \lfloor k_0 + \log_2(\sqrt{wh}/224) \rfloor\]
Evidence

Faster R-CNN + FPN in three replaceable parts:
Backbone
Neck
Head
Single-shot detectors change the head, SSD changes the neck, Mask R-CNN adds a head.

Cascade R-CNN - re-refine at rising thresholds

Deformable convolution - learned sampling offsets
\[y(p) = \sum_{k=1}^{K} w_k \cdot x(p + p_k + \Delta p_k)\]

Both keep the propose-then-classify decomposition.
Faster R-CNN takes 0.2 s per image.
Where the time goes
What real time requires
Single-shot detectors drop the per-region stage and score every candidate inside the one backbone pass.

YOLO (2016): detection as one forward pass, one tensor out.
Divide the image into an \(S \times S\) grid (7×7 in v1)
Each grid cell:
Unified output tensor
\[S \times S \times (B \cdot 5 + C)\]

Each cell’s 30 values (\(B = 2\), \(C = 20\)) form a factored probability model.
Per box
Per cell, shared
Detection score - multiply the factors
\[P(c_i \mid \text{box}_j) = \underbrace{P(c_i \mid \text{object})}_{\text{cell}} \times \underbrace{P(\text{object}) \times \text{IoU}}_{\text{box } j}\]
Sharing the conditional across boxes costs expressiveness - one class distribution per cell - and reduces the class outputs from \(B \cdot C\) to \(C\), trained only where objects exist.

\[\mathcal{L} = \mathcal{L}_{\text{coord}} + \mathcal{L}_{\text{conf}} + \mathcal{L}_{\text{class}}\]
Localization - responsible boxes only:
\[\lambda_{\text{coord}} \sum_{i}^{S^2} \sum_{j}^{B} \mathbb{1}_{ij}^{\text{obj}} \left[(x_i - \hat{x}_i)^2 + (y_i - \hat{y}_i)^2 + (\sqrt{w_i} - \sqrt{\hat{w}_i})^2 + (\sqrt{h_i} - \sqrt{\hat{h}_i})^2\right]\]
Confidence - every box, background down-weighted:
\[\sum_{i}^{S^2} \sum_{j}^{B} \mathbb{1}_{ij}^{\text{obj}} (C_i - \hat{C}_i)^2 + \lambda_{\text{noobj}} \sum_{i}^{S^2} \sum_{j}^{B} \mathbb{1}_{ij}^{\text{noobj}} (C_i - \hat{C}_i)^2\]
Classification - responsible cells only:
\[\sum_{i}^{S^2} \mathbb{1}_i^{\text{obj}} \sum_{c} (p_i(c) - \hat{p}_i(c))^2\]
The two-term structure again - assignment indicators gate the regression - with squared error throughout, held together by two hand-tuned constants.
Each constant corrects a specific imbalance. Reason from the counts.
\(\sqrt{w}, \sqrt{h}\) - because absolute error is not what matters
\(\lambda_{\text{noobj}} = 0.5\) - because the grid is mostly empty
\(\lambda_{\text{coord}} = 5\) - because localization is 4 numbers among 30
Constants tuned by hand, once, for one dataset. Cross-entropy and IoU-based losses replace the squared errors in the successors.


Train in two resolutions
No neck, one scale
SSD (2016) changes the neck: attach a prediction head to maps at six scales.
One map per object-size range
Reason from the stride
Fully convolutional - no FC layers, any input size. 59 FPS at 300×300, above YOLO’s accuracy on VOC.


SSD’s references - the anchors of the region-based section, one set per map.
Set the scale from the map index
\[s_k = s_{\min} + \frac{s_{\max} - s_{\min}}{m - 1}(k - 1)\]
Fan out the shapes
Count them

The design question: 8,732 fixed boxes, a handful of objects - which boxes carry each object’s training signal?
Guarantee every object a signal
Use the near misses
Discard the easy background

\[L(x, c, l, g) = \frac{1}{N}\left(L_{\text{conf}}(x, c) + \alpha\, L_{\text{loc}}(x, l, g)\right)\]
Why each choice
Assignment by IoU, mined negatives, cross-entropy, smooth L1 - the general form with every choice filled in.

RetinaNet’s starting point: dense detectors score ~100k anchors per image, and mining is not the only answer.
Count the loss mass
The background term outweighs the foreground ~45×. Train on everything and the gradient follows the background.

Start from cross-entropy, multiply in a modulating factor:
\[\text{CE}(p_t) = -\log(p_t) \qquad \text{FL}(p_t) = \underbrace{(1 - p_t)^\gamma}_{\text{modulating factor}}\, \underbrace{\left(-\alpha_t \log(p_t)\right)}_{\text{weighted CE}}\]
The factor, at \(\gamma = 2\)
The gradient vanishes with confidence
\[\frac{\partial\,\text{FL}}{\partial p_t} = \alpha_t\,\frac{(1-p_t)^{\gamma-1}}{p_t}\left(\gamma\, p_t \ln p_t - (1-p_t)\right)\]
In use

YOLO’s loss minimizes coordinate error, but evaluation measures IoU.
Regress the metric
\[L_{\text{IoU}} = 1 - \text{IoU}(b, \hat{b})\]
Restore the gradient

Anchor-free detection, built from the pose-estimation pipeline: treat an object as a point.
Predict a center heatmap
What disappears
What returns

YOLOv2 (2017) rebuilds YOLO one change at a time and measures each on VOC - an ablation study:
| Change | Measured effect |
|---|---|
| Batch normalization | ~+2 mAP |
| Higher-resolution pretraining | ~+4 mAP |
| Anchor boxes replace the FC head | recall 81% → 88% |
| Clustered anchor shapes | better priors at equal count |
| Multi-scale training | one model, many input sizes |
Head redesign
YOLOv3 adds prediction at three scales with an FPN-style neck.

The two detector families now share anchors, offsets, and IoU-based losses - they differ in candidate source, assignment rules, and operating point.
Each detector fills in the indicator of the two-term loss differently: which candidates count as positive, and for which object.
| Detector | Candidates | Positive | Negative |
|---|---|---|---|
| R-CNN head | ~2,000 proposals | IoU ≥ 0.5 | IoU < 0.3, mined (SVM stage) |
| RPN | ~20,000 anchors | IoU > 0.7, or best per ground truth | IoU < 0.3, sampled 1:1 |
| SSD | 8,732 default boxes | best per ground truth, plus IoU > 0.5 | mined 3:1 by loss |
| YOLO | \(S^2\) grid cells | the cell holding the object center | every other cell |
| FCOS | every feature-map location | inside a box’s center region, at the matching pyramid level | elsewhere |
FCOS - assignment without anchors
Two detectors on the same data train against different positive sets - the assignment rule is part of the model, and its thresholds are tuned constants.
Background dominates every dense candidate set. The treatments used so far fall into two groups:
Sampling - choose what trains
Exact balance, at the cost of discarding examples the loss never sees.
Weighting - scale what everything contributes
Every example trains, with its weight set by confidence instead of a quota.
Per-pixel segmentation carries the same imbalance - Dice loss is the additional answer there, with the segmentation losses.
COCO test-dev, values as published, conditions attached:
| Detector | Backbone | mAP | Params | Reported time |
|---|---|---|---|---|
| SSD512 | VGG-16 | 28.8 | 36M | - |
| YOLOv3 | Darknet-53 | 33.0 | 62M | 51 ms, Titan X |
| Faster R-CNN + FPN | R-101 | 36.2 | 60M | - |
| RetinaNet | R-101-FPN | 39.1 | 57M | - |
| YOLOv8 (n → x) | scaled | 37.3-53.9 | 3M-68M | - |

Comparisons hold only at stated dataset, input size, backbone, and hardware.
Small objects
Crowded scenes
Occlusion

DETR predicts the detection set directly - Hungarian matching in place of assignment, no anchors, no NMS - developed with the transformer architectures.

Semantic - a class per pixel:
\[f: \mathbb{R}^{H \times W \times 3} \rightarrow \{1, ..., C\}^{H \times W}\]

Instance - a mask per object:
\[f: \mathbb{R}^{H \times W \times 3} \rightarrow \left(\{0,1\}^{H \times W}\right)^N\]
Predictions per image
Backbone resolutions (ResNet-50, 224² input)
Cost of not downsampling
Both directions lose
Segmentation needs deep context and fine resolution at once.

The fully convolutional network (FCN): convert the classifier’s head so one pass predicts at every position.
Conversion
Consequences

Bilinear interpolation
Transposed convolution
Checkerboard artifacts

FCN’s ablation: fuse finer layers into the prediction before the final upsample.
Variants
| Variant | VOC mIoU |
|---|---|
| FCN-32s | 59.4 |
| FCN-16s | 62.4 |
| FCN-8s | 62.7 |
Shape of the gains

The encoder-decoder from pose estimation, with a change at the skips.
Contracting path
Expanding path
Concatenate at the skips
~31M parameters at 64 initial filters. The default where training sets are small.

Downsampling grew the receptive field and lost resolution. Dilation grows the field with resolution kept.
Atrous convolution, rate \(r\)
\[y[i,j] = \sum_{m,n} h[m,n] \cdot x[i + rm,\, j + rn]\]
In a segmentation backbone

Atrous spatial pyramid pooling (ASPP): one rate sees one context size, so run several in parallel.
Branches over one map
Concatenate all five, fuse with a 1×1 convolution.
Against the detector necks

Upsampled predictions blur object boundaries. The conditional random field (CRF) refines the labels using the image itself.
Energy over a labeling \(x\)
\[E(x) = \sum_i \psi_u(x_i) + \sum_{i,j} \psi_p(x_i, x_j)\]
Unary - the network’s per-pixel scores
\[\psi_u(x_i) = -\log P(x_i)\]
Pairwise - penalize disagreement between similar pixels
Mean-field inference

Measured effect
Energy minimization over labelings returns with energy-based generative models.
Reuse the detection stack
\[\mathcal{L} = \mathcal{L}_{cls} + \mathcal{L}_{box} + \mathcal{L}_{mask}\]
Decoupled classes
The pooling cannot be reused

The two poolings, step for step:
| RoI pooling | RoIAlign | |
|---|---|---|
| Region boundary | floor to cells | kept fractional |
| Bin boundaries | floor to cells | kept fractional |
| Bin value | max over cells | bilinear samples, averaged |
| Error | up to 8 px at stride 16 | none |
| Gradient | through the max cell | through exact positions |
Measured on masks

Class imbalance returns per pixel - a small object is a few positive pixels in \(H \times W\).
Cross-entropy, per pixel
\[\mathcal{L}_{CE} = -\frac{1}{HW}\sum_{i,j} \sum_{c} y_{ijc} \log \hat{y}_{ijc}\]
Every pixel weighted equally - background dominates. Class weights \(w_c\) are the first correction.
Focal, per pixel
\[\mathcal{L}_{F} = -\frac{1}{HW}\sum_{i,j} (1-\hat{y}_{ij})^\gamma\, y_{ij} \log \hat{y}_{ij}\]
Confident pixels contribute less - the detection loss, reused.
Boundary weighting
\[w_{ij} = 1 + \alpha \exp\!\left(-\frac{d_{ij}^2}{2\sigma^2}\right)\]
Pixels near an edge count more, by distance \(d_{ij}\) to the boundary.
Dice
\[\mathcal{L}_{Dice} = 1 - \frac{2\,|Y \cap \hat{Y}|}{|Y| + |\hat{Y}|}\]
One overlap ratio for the whole mask - no per-pixel sum at all.
Three reweight the pixel sum - the weighting strategy from the detector comparison. Dice changes the quantity scored.
Dice - the region-ratio loss
\[\mathcal{L}_{Dice} = 1 - \frac{2\sum_{ij} y_{ij}\hat{y}_{ij} + \epsilon}{\sum_{ij} y_{ij} + \sum_{ij} \hat{y}_{ij} + \epsilon}\]

Mean IoU (mIoU): the box metrics reused on pixel sets.
\[\text{mIoU} = \frac{1}{C} \sum_{c=1}^{C} \frac{TP_c}{TP_c + FP_c + FN_c}\]
Per class
Instance masks
Two label families
Panoptic output
Panoptic quality
\[PQ = \underbrace{\frac{\sum_{(p,g) \in TP} \text{IoU}(p,g)}{|TP|}}_{\text{segmentation quality}} \times \underbrace{\frac{|TP|}{|TP| + \tfrac{1}{2}|FP| + \tfrac{1}{2}|FN|}}_{\text{recognition quality}}\]

Panoptic FPN
The backbone-neck-head decomposition again: two head groups, one backbone-neck pair.
Driving and mobile deployments need segmentation at video rate.
BiSeNet - two parallel paths
ENet - shrink early
| Model | Cityscapes mIoU | FPS | Params |
|---|---|---|---|
| BiSeNet | 68.4 | 65 | 13M |
| ENet | 58.3 | 135 | 0.4M |

Boundaries
Thin structures
Metrics hide both

An instance mask costs ~79 s of annotation (problem formulations).
Segment Anything Model (SAM), 2023
Training data
Cost per mask
HRNet avoids the recovery problem instead: parallel streams keep full resolution throughout. Transformer-based models, SAM included, are developed with the transformer architectures.

An image is an array. 3D data comes in three forms, none of them an array:
Voxels - a regular 3D grid
Point clouds - unordered sets
Meshes - vertices and faces

The representation determines the architecture - each of the three gets its own.
3D convolution
\[y[d,i,j] = \sum_{c} \sum_{k,m,n} w[k,m,n,c] \cdot x[d{+}k,\, i{+}m,\, j{+}n,\, c]\]
nn.Conv2d - one added depth axis in weights and activationsOccupancy
Sparse convolutions

\[\mathcal{P} = \{p_i\}_{i=1}^{N}, \quad p_i \in \mathbb{R}^3\]
Requirement
\[f(\{p_1, ..., p_N\}) = f(\pi\{p_1, ..., p_N\}) \;\; \forall \pi\]
Why an ordinary network fails
The set problem from the problem formulations, on the input side this time - detection produced sets, point networks consume them.

\[f(\{p_1, ..., p_N\}) = \gamma\!\left(\max_{i=1..N} h(p_i)\right)\]
Three parts
Why this form suffices
T-Net - learned alignment

Each of the 1,024 feature dimensions keeps one point’s value - the maximum. Everything else vanishes from the global feature.
Consequences, both directions
The cost

The CNN stage pattern, rebuilt for sets: local features, then coarser resolution, repeated.
Set abstraction, one stage
Stack the stages
Density varies

3D detection without 3D convolution.
The two predecessors
The pillar pipeline
Then everything transfers

Multi-view classification
| Representation | ModelNet40 accuracy |
|---|---|
| Multi-view CNN | 90.1% |
| PointNet | 89.2% |
| Voxel 3D CNN | 77.0% |
Meshes, in brief

One depth per pixel: \(D \in \mathbb{R}^{H \times W}\) - a dense map again, with a regression target.
Scale-invariant loss - with \(d_i = \log \hat{D}_i - \log D_i\):
\[\mathcal{L}_{si} = \frac{1}{n}\sum_i d_i^2 - \frac{\lambda}{n^2}\Big(\sum_i d_i\Big)^2\]
Ordinal loss - over pairs \((i, j)\) with known order:
\[\mathcal{L}_{ord} = \sum_{(i,j)} -\log \sigma(z_i - z_j)\]
Photometric loss - no labels at all:
\[\mathcal{L}_{photo} = \|I_{t+1} - \text{warp}(I_t, D_t, T)\|_1 + \text{SSIM terms}\]

Video supplies unlimited training pairs with no depth labels - the annotation constraint from the problem formulations does not bind here.