and upsampling rates to be $2$, and the pooling operator to use a kernel size of $2\times2$. The IndexNet module dynamically generates indices given the feature map. The proposed indexed pooling and indexed upsampling operators further receive generated indices to guide downsampling and upsampling, respectively. In practice, multiple such modules can be combined and used analogous to the max pooling layers for every downsampling and upsampling stage. *IndexNet* models the index as a function of the feature map $\mathcal{X}\in\mathbb{R}^{H\times W\times C}$. Given $\mathcal{X}$, it generates two index maps for downsampling and upsampling, respectively. An important concept for the index is that an index can either be represented in a natural order, e.g., 1, 2, 3, ..., or be represented in a logical form, i.e., 0, 1, 0, ..., meaning that an index map can be used as a mask. This is exactly how we use the index map in downsampling/upsampling. The predicted index shares the same definition of the index in computer science, except that we generate *soft* indices for smooth optimization, i.e., for any index $i$, $i\in[0,1]$.

IndexNet consists of a predefined index block and two index normalization layers. An index block can simply be a heuristically defined function, 