Algorithms and low-power hardware for image processing applications

Image processing has become more important with the ever increasing amount of available image data. This has been accompanied by the development of new algorithms and hardware. However, dedicated hardware is often required to run these algorithms efficiently and conversely, algorithms need to be developed to exploit the benefits of the new hardware. For example, depth cameras have been created to add a new dimension to human-computer interaction. They can benefit applications that can operate on the raw depth data directly, such as breath monitoring. As for new algorithms, convolutional neural networks (CNNs) have become the standard for difficult image processing tasks due to their high accuracy. But to execute them efficiently, we need new hardware to fully exploit the parallelism inherent in these computations. The first part of the thesis presents an algorithm for breath monitoring using a low-resolution time-of-flight camera. It consists of automatic region-of-interest detection, followed by frequency estimation. It can be accurate to within 1 breath per minute, comparing with a respiratory belt as reference. The second part presents a processing element (PE) for a neural network accelerator supporting compressed weights and using a new technique called factored computation. The PE consists of an accumulator array, row decoder, and output combination block. Modifications to the row decoder can allow for reconfigurability of the compressed weight bit-widths. Several common layer operations in CNNs are described and mapped onto the proposed hardware. An energy model of the design is formulated and verified by synthesizing and simulating a basic processing element containing an 8 x 20 accumulator array. Simulations show the proposed design achieves up to 4.5 x reduction in the energy per MAC compared to a baseline 16-bit fixed-point MAC unit. Thesis Supervisor: Anantha P. Chandrakasan Title: Vannevar Bush Professor of Electrical Engineering and Computer Science Acknowledgments First, I would like to thank Prof. Anantha Chandrakasan for his guidance, support, and patience. He has given me the freedom to explore many different topics, always aiming to find the one that would excite me the most. This has exposed me to areas I never would have thought I would get to work on. Next, Wanyeong has been a great help throughout this process. As the lead of the machine learning project, he has kept the project moving smoothly with his detailed planning. I can always rely on him to discuss any new ideas or questions I might have. I also appreciate him taking the time to review and provide insightful comments on several drafts of this thesis. I would also like to thank Prof. Song Han for finding time in his busy schedule to meet with us and provide us with valuable feedback on our ideas. I would like to acknowledge TSMC for their funding for the machine learning project and Shih-Lien for consistently providing us with useful comments and ideas during our biweekly phone calls. My graduate school experience thus far has been made all the more enjoyable by the collaborative atmosphere of AnanthaGroup. In particular, I would like to thank Priyanka, Mehul, Chiraag, Utsav, and Mohamed for helping me prepare for presentations and for their technical support.