177. PIDNet

PIDNet

Today I’ve learned about PIDNet, so I’d like to share it here.

Previously, I learned about BiSeNet which had a two-branched architecture to solve high latency problems.

However, this architecture suffers another problem called “overshoot” where the boundary of an object is corroded by its surrounding pixels leading to small-scale object having a high chance to be overwhelmed by its adjacent large objects. This is due to direct fusion in the aggregation layer.

PIDnet tackles this challenge.

PID Module

PIDNet is inspired by the PID module, therefore, having 3 routes.


Proportional(P) branch:

This branch learns detailed information in high resolution by combining low-level features learned in this branch with semantic information from the “I” Branch. This is similar to BiSeNet.

Integral(I) branch:

This branch aggregates context information locally and globally to parse long-range dependencies.


Derivative(D) branch:

This branch helps solves the “overshoot” problem, by extracting high-frequency features to predict boundary regions.