It is worth noting that, despite that IndexNet in its current implementation may closely relate to attention, it focuses on upsampling rather than refining feature maps. IndexNet also shares the other characteristics mentioned above. It is implemented in a convolutional side-branch network, is trained without extra supervision and is generic and flexible. We demonstrate its effectiveness on four dense prediction tasks and five variants of IndexNet.

![image](indexnet_framework.pdf){width="5in"}

An Indexing Perspective of Upsampling
=====================================

With the argument that upsampling operators are index functions, here we offer a unified indexing perspective of upsampling operators. The unpooling operator is straightforward. We can define its index function in a $k\times k$ local region as an indicator function $$I_{max}(x)=\mathbbm{1}(x=\max ({\mbox{\boldsymbol{$X$}}}))\,,x\in{\mbox{\boldsymbol{$X$}}} \,,$$ where ${\mbox{\boldsymbol{$X$}}}\in\mathbb{R}^{k\times k}$. $ \mathbbm{1}( \cdot ) $ is the indicator function with output being a binary matrix. Similarly, if one extracts indices from average pooling, its index function takes the form $$I_{avg}(x)=\mathbbm{1}(x\in{\mbox{\boldsymbol{$X$}}})\,.$$ If further using $I_{avg}(x)$ during upsampling, it is equivalent to the nearest neighbor interpolation. As for the bilinear interpolation and deconvolution operators, their index functions have an identical form $$\label{eq:dconv}
I_{bilinear/dconv}(x)={\mbox{\boldsymbol{$W$}}}\otimes\mathbbm{1}(x\in{\mbox{\boldsymbol{$X$}}})\,,$$ where ${\mbox{\boldsymbol{$W$}}}$ is the weight/filter of the same size as ${\mbox{\boldsymbol{$X$}}}$, and $\otimes$ denotes the element-wise multiplication. The difference is 