  In recent years, Artificial Intelligence (AI) and Machine learning (ML) have
gained significant interest from both, industry and academia. Notably,
conventional ML techniques require enormous amounts of power to meet the
desired accuracy, which has limited their use mainly to high-capability devices
such as network nodes. However, with many advancements in technologies such as
the Internet of Things (IoT) and edge computing, it is desirable to incorporate
ML techniques into resource-constrained embedded devices for distributed and
ubiquitous intelligence. This has motivated the emergence of the TinyML
paradigm which is an embedded ML technique that enables ML applications on
multiple cheap, resource- and power-constrained devices. However, during this
transition towards appropriate implementation of the TinyML technology,
multiple challenges such as processing capacity optimization, improved
reliability, and maintenance of learning models' accuracy require timely
solutions. In this article, various avenues available for TinyML implementation
are reviewed. Firstly, a background of TinyML is provided, followed by detailed
discussions on various tools supporting TinyML. Then, state-of-art applications
of TinyML using advanced technologies are detailed. Lastly, various research
challenges and future directions are identified.
