  In this paper, we introduce a memory-efficient CNN (convolutional neural
network), which enables resource-constrained low-end embedded and IoT devices
to perform on-device vision tasks, such as image classification and object
detection, using extremely low memory, i.e., only 63 KB on ImageNet
classification. Based on the bottleneck block of MobileNet, we propose three
design principles that significantly curtail the peak memory usage of a CNN so
that it can fit the limited KB memory of the low-end device. First, 'input
segmentation' divides an input image into a set of patches, including the
central patch overlapped with the others, reducing the size (and memory
requirement) of a large input image. Second, 'patch tunneling' builds
independent tunnel-like paths consisting of multiple bottleneck blocks per
patch, penetrating through the entire model from an input patch to the last
layer of the network, maintaining lightweight memory usage throughout the whole
network. Lastly, 'bottleneck reordering' rearranges the execution order of
convolution operations inside the bottleneck block such that the memory usage
remains constant regardless of the size of the convolution output channels. The
experiment result shows that the proposed network classifies ImageNet with
extremely low memory (i.e., 63 KB) while achieving competitive top-1 accuracy
(i.e., 61.58\%). To the best of our knowledge, the memory usage of the proposed
network is far smaller than state-of-the-art memory-efficient networks, i.e.,
up to 89x and 3.1x smaller than MobileNet (i.e., 5.6 MB) and MCUNet (i.e., 196
KB), respectively.
