DGCNN Dynamic Graph on Points
Points alone miss edges; connect each point to its neighbors and convolve the edges. DGCNN rebuilds that graph fresh in every layer.
Why Does This Exist?
PointNet reads points in isolation, so sharp blades and thin chair legs blur together. DGCNN exists to add edges: for each point it finds nearest neighbors and convolves the difference vectors, capturing local shape explicitly. Recomputing neighbors in feature space lets distant but similar parts link up in deeper layers.
Attention on points is Point Transformer; the kernel-point alternative is KPConv.
Think of It Like This
Friend groups that reform by interest
Seat students by dorm first, then re-seat by hobby each term: artists find artists even across dorms. Early groups are spatial; later groups are semantic.
Coordinates seat the first graph; features re-seat deeper ones. The analogy stops at cost: reseating students is free while NN per layer costs real time on large clouds.
How It Actually Works
EdgeConv computes with shared MLP over the center plus the edge difference. The first layer builds by Euclidean NN with ; deeper layers rebuild by feature-space NN, so semantically close points connect regardless of distance. Stacks of four EdgeConv blocks with shortcuts feed global max and average pooling into the classifier.
Worked numbers
Point with neighbors and gives edge vectors and . With summed, outputs are and , max . On -point ModelNet40 the reference rises from percent static-graph to about percent dynamic.
Code
def edgeconv_center(edges: list[float]) -> float: return max(edges) # symmetric over neighborhood
print(edgeconv_center([0.1, 0.1, 0.05])) # -> 0.1Watch Out For
Setting k blindly on sparse far clouds
Far cars hold points where near ones hold , so spans whole objects far away but tiny patches nearby. The symptom is range-dependent features. Scale or radius with range, or sample fixed neighborhoods instead.
The Quick Version
- DGCNN connects each point to neighbors and convolves edges.
- EdgeConv reads center plus difference, then max-pools the neighborhood.
- Graphs rebuild per layer in feature space, not just XYZ.
- Dynamic grouping lifts ModelNet40 near percent.
- The operator suits sharp local shape that global pooling misses.
- Sparse far clouds need range-aware neighborhoods.