{"id":250,"date":"2020-05-14T11:17:10","date_gmt":"2020-05-14T09:17:10","guid":{"rendered":"http:\/\/blog.zhaw.ch\/high-performance\/?p=250"},"modified":"2020-05-14T11:17:10","modified_gmt":"2020-05-14T09:17:10","slug":"artificial-intelligence-on-microcontrollers","status":"publish","type":"post","link":"https:\/\/blog.zhaw.ch\/high-performance\/2020\/05\/14\/artificial-intelligence-on-microcontrollers\/","title":{"rendered":"Artificial Intelligence on Microcontrollers"},"content":{"rendered":"\n<p>Using artificial intelligence algorithms, specifically neural networks on microcontrollers offers several possibilities but reveals challenges: limited memory, low computing power and no operating system. In addition, an efficient workflow to port neural networks algorithms to microcontrollers is required. Currently, several frameworks that can be used to port neural networks to microcontrollers are available. We evaluated and compared four of them:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Google:&nbsp;<a href=\"https:\/\/www.tensorflow.org\/lite\/microcontrollers\">&#8220;TensorFlow Lite for Microcontrollers\u201d<\/a><\/li><li>Jianjia Ma:&nbsp;<a href=\"https:\/\/github.com\/majianjia\/nnom\">&#8220;Neural Network on Microcontroller (NNoM)&#8221;<\/a>&nbsp;with&nbsp;<a href=\"https:\/\/github.com\/ARM-software\/CMSIS_5\/tree\/develop\/CMSIS\/NN\">ARM CMSIS-NN<\/a>&nbsp;backend<\/li><li>STMicroelectronics:&nbsp;<a href=\"https:\/\/www.st.com\/en\/embedded-software\/x-cube-ai.html\">&#8220;X-CUBE-AI&#8221;<\/a><\/li><li>Renesas:&nbsp;<a href=\"https:\/\/www.renesas.com\/cn\/en\/solutions\/key-technology\/e-ai.html\">&#8220;e-Ai Solution&#8221;<\/a><\/li><\/ul>\n\n\n\n<p>The frameworks differ considerably in terms of workflow, features and performance. Depending on the application, one has to select the best suited framework. On our&nbsp;<a href=\"https:\/\/github.com\/InES-HPMM\/ai_on_mcu\/tree\/master\/frameworks\">github<\/a>&nbsp;page we offer guides and example applications which can help you to get started with those frameworks!<\/p>\n\n\n\n<p>The neural networks that are generated with all those frameworks are static. This means that once they are integrated into the firmware they cant be changed anymore. However, it would be beneficial if the neural network running on the microcontroller could adapt itself to a changing domain. We developed an algorithm (emb-adta) which could be used for unsupervised domain adaptation on microcontrollers. The prototype python implementation is also available on&nbsp;<a href=\"https:\/\/github.com\/InES-HPMM\/ai_on_mcu\/tree\/master\/emb-atda\">github<\/a>!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Using artificial intelligence algorithms, specifically neural networks on microcontrollers offers several possibilities but reveals challenges: limited memory, low computing power and no operating system. In addition, an efficient workflow to port neural networks algorithms to microcontrollers is required. Currently, several frameworks that can be used to port neural networks to microcontrollers are available. We evaluated [&hellip;]<\/p>\n","protected":false},"author":270,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[1],"tags":[],"features":[],"class_list":["post-250","post","type-post","status-publish","format-standard","hentry","category-allgemein"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Artificial Intelligence on Microcontrollers - Embedded High Performance Multimedia Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.zhaw.ch\/high-performance\/2020\/05\/14\/artificial-intelligence-on-microcontrollers\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Artificial Intelligence on Microcontrollers\" \/>\n<meta property=\"og:description\" content=\"Using artificial intelligence algorithms, specifically neural networks on microcontrollers offers several possibilities but reveals challenges: limited memory, low computing power and no operating system. In addition, an efficient workflow to port neural networks algorithms to microcontrollers is required. Currently, several frameworks that can be used to port neural networks to microcontrollers are available. We evaluated [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.zhaw.ch\/high-performance\/2020\/05\/14\/artificial-intelligence-on-microcontrollers\/\" \/>\n<meta property=\"og:site_name\" content=\"Embedded High Performance Multimedia Blog\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-14T09:17:10+00:00\" \/>\n<meta name=\"author\" content=\"rosn\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"rosn\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/blog.zhaw.ch\/high-performance\/2020\/05\/14\/artificial-intelligence-on-microcontrollers\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/blog.zhaw.ch\/high-performance\/2020\/05\/14\/artificial-intelligence-on-microcontrollers\/\"},\"author\":{\"name\":\"rosn\",\"@id\":\"https:\/\/blog.zhaw.ch\/high-performance\/#\/schema\/person\/e1a77329f74257615afa71bc883106c9\"},\"headline\":\"Artificial Intelligence on Microcontrollers\",\"datePublished\":\"2020-05-14T09:17:10+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/blog.zhaw.ch\/high-performance\/2020\/05\/14\/artificial-intelligence-on-microcontrollers\/\"},\"wordCount\":209,\"commentCount\":0,\"articleSection\":[\"Allgemein\"],\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/blog.zhaw.ch\/high-performance\/2020\/05\/14\/artificial-intelligence-on-microcontrollers\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.zhaw.ch\/high-performance\/2020\/05\/14\/artificial-intelligence-on-microcontrollers\/\",\"url\":\"https:\/\/blog.zhaw.ch\/high-performance\/2020\/05\/14\/artificial-intelligence-on-microcontrollers\/\",\"name\":\"Artificial Intelligence on Microcontrollers - Embedded High Performance Multimedia Blog\",\"isPartOf\":{\"@id\":\"https:\/\/blog.zhaw.ch\/high-performance\/#website\"},\"datePublished\":\"2020-05-14T09:17:10+00:00\",\"author\":{\"@id\":\"https:\/\/blog.zhaw.ch\/high-performance\/#\/schema\/person\/e1a77329f74257615afa71bc883106c9\"},\"breadcrumb\":{\"@id\":\"https:\/\/blog.zhaw.ch\/high-performance\/2020\/05\/14\/artificial-intelligence-on-microcontrollers\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.zhaw.ch\/high-performance\/2020\/05\/14\/artificial-intelligence-on-microcontrollers\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.zhaw.ch\/high-performance\/2020\/05\/14\/artificial-intelligence-on-microcontrollers\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\/\/blog.zhaw.ch\/high-performance\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Artificial Intelligence on Microcontrollers\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blog.zhaw.ch\/high-performance\/#website\",\"url\":\"https:\/\/blog.zhaw.ch\/high-performance\/\",\"name\":\"Embedded High Performance Multimedia Blog\",\"description\":\"A Blog of the ZHAW Zurich University of Applied Sciences\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blog.zhaw.ch\/high-performance\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/blog.zhaw.ch\/high-performance\/#\/schema\/person\/e1a77329f74257615afa71bc883106c9\",\"name\":\"rosn\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/eec853590b797a7cdaea9a010f9e4424a21362148edf1b8d8d51fc8c5bced337?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/eec853590b797a7cdaea9a010f9e4424a21362148edf1b8d8d51fc8c5bced337?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/eec853590b797a7cdaea9a010f9e4424a21362148edf1b8d8d51fc8c5bced337?s=96&d=mm&r=g\",\"caption\":\"rosn\"},\"url\":\"https:\/\/blog.zhaw.ch\/high-performance\/author\/rosn\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Artificial Intelligence on Microcontrollers - Embedded High Performance Multimedia Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.zhaw.ch\/high-performance\/2020\/05\/14\/artificial-intelligence-on-microcontrollers\/","og_locale":"en_GB","og_type":"article","og_title":"Artificial Intelligence on Microcontrollers","og_description":"Using artificial intelligence algorithms, specifically neural networks on microcontrollers offers several possibilities but reveals challenges: limited memory, low computing power and no operating system. In addition, an efficient workflow to port neural networks algorithms to microcontrollers is required. Currently, several frameworks that can be used to port neural networks to microcontrollers are available. We evaluated [&hellip;]","og_url":"https:\/\/blog.zhaw.ch\/high-performance\/2020\/05\/14\/artificial-intelligence-on-microcontrollers\/","og_site_name":"Embedded High Performance Multimedia Blog","article_published_time":"2020-05-14T09:17:10+00:00","author":"rosn","twitter_card":"summary_large_image","twitter_misc":{"Written by":"rosn","Estimated reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.zhaw.ch\/high-performance\/2020\/05\/14\/artificial-intelligence-on-microcontrollers\/#article","isPartOf":{"@id":"https:\/\/blog.zhaw.ch\/high-performance\/2020\/05\/14\/artificial-intelligence-on-microcontrollers\/"},"author":{"name":"rosn","@id":"https:\/\/blog.zhaw.ch\/high-performance\/#\/schema\/person\/e1a77329f74257615afa71bc883106c9"},"headline":"Artificial Intelligence on Microcontrollers","datePublished":"2020-05-14T09:17:10+00:00","mainEntityOfPage":{"@id":"https:\/\/blog.zhaw.ch\/high-performance\/2020\/05\/14\/artificial-intelligence-on-microcontrollers\/"},"wordCount":209,"commentCount":0,"articleSection":["Allgemein"],"inLanguage":"en-GB","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blog.zhaw.ch\/high-performance\/2020\/05\/14\/artificial-intelligence-on-microcontrollers\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blog.zhaw.ch\/high-performance\/2020\/05\/14\/artificial-intelligence-on-microcontrollers\/","url":"https:\/\/blog.zhaw.ch\/high-performance\/2020\/05\/14\/artificial-intelligence-on-microcontrollers\/","name":"Artificial Intelligence on Microcontrollers - Embedded High Performance Multimedia Blog","isPartOf":{"@id":"https:\/\/blog.zhaw.ch\/high-performance\/#website"},"datePublished":"2020-05-14T09:17:10+00:00","author":{"@id":"https:\/\/blog.zhaw.ch\/high-performance\/#\/schema\/person\/e1a77329f74257615afa71bc883106c9"},"breadcrumb":{"@id":"https:\/\/blog.zhaw.ch\/high-performance\/2020\/05\/14\/artificial-intelligence-on-microcontrollers\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.zhaw.ch\/high-performance\/2020\/05\/14\/artificial-intelligence-on-microcontrollers\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/blog.zhaw.ch\/high-performance\/2020\/05\/14\/artificial-intelligence-on-microcontrollers\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/blog.zhaw.ch\/high-performance\/"},{"@type":"ListItem","position":2,"name":"Artificial Intelligence on Microcontrollers"}]},{"@type":"WebSite","@id":"https:\/\/blog.zhaw.ch\/high-performance\/#website","url":"https:\/\/blog.zhaw.ch\/high-performance\/","name":"Embedded High Performance Multimedia Blog","description":"A Blog of the ZHAW Zurich University of Applied Sciences","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.zhaw.ch\/high-performance\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":"Person","@id":"https:\/\/blog.zhaw.ch\/high-performance\/#\/schema\/person\/e1a77329f74257615afa71bc883106c9","name":"rosn","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/secure.gravatar.com\/avatar\/eec853590b797a7cdaea9a010f9e4424a21362148edf1b8d8d51fc8c5bced337?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/eec853590b797a7cdaea9a010f9e4424a21362148edf1b8d8d51fc8c5bced337?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/eec853590b797a7cdaea9a010f9e4424a21362148edf1b8d8d51fc8c5bced337?s=96&d=mm&r=g","caption":"rosn"},"url":"https:\/\/blog.zhaw.ch\/high-performance\/author\/rosn\/"}]}},"_links":{"self":[{"href":"https:\/\/blog.zhaw.ch\/high-performance\/wp-json\/wp\/v2\/posts\/250","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.zhaw.ch\/high-performance\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.zhaw.ch\/high-performance\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.zhaw.ch\/high-performance\/wp-json\/wp\/v2\/users\/270"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.zhaw.ch\/high-performance\/wp-json\/wp\/v2\/comments?post=250"}],"version-history":[{"count":1,"href":"https:\/\/blog.zhaw.ch\/high-performance\/wp-json\/wp\/v2\/posts\/250\/revisions"}],"predecessor-version":[{"id":251,"href":"https:\/\/blog.zhaw.ch\/high-performance\/wp-json\/wp\/v2\/posts\/250\/revisions\/251"}],"wp:attachment":[{"href":"https:\/\/blog.zhaw.ch\/high-performance\/wp-json\/wp\/v2\/media?parent=250"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.zhaw.ch\/high-performance\/wp-json\/wp\/v2\/categories?post=250"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.zhaw.ch\/high-performance\/wp-json\/wp\/v2\/tags?post=250"},{"taxonomy":"features","embeddable":true,"href":"https:\/\/blog.zhaw.ch\/high-performance\/wp-json\/wp\/v2\/features?post=250"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}