{"id":31747,"date":"2017-05-16T19:15:15","date_gmt":"2017-05-16T16:15:15","guid":{"rendered":"https:\/\/www.altoros.com\/blog\/?p=31747"},"modified":"2018-03-19T17:56:30","modified_gmt":"2018-03-19T14:56:30","slug":"enabling-tensorflow-to-recognize-images-via-a-mobile-device","status":"publish","type":"post","link":"https:\/\/www.altoros.com\/blog\/enabling-tensorflow-to-recognize-images-via-a-mobile-device\/","title":{"rendered":"Enabling TensorFlow to Recognize Images via a Mobile Device"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_79_2 counter-hierarchy ez-toc-counter ez-toc-transparent ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.altoros.com\/blog\/enabling-tensorflow-to-recognize-images-via-a-mobile-device\/#What_can_mobile_add_to_AI\" >What can mobile add to AI?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.altoros.com\/blog\/enabling-tensorflow-to-recognize-images-via-a-mobile-device\/#Convolutional_neural_networks_behind_the_scene\" >Convolutional neural networks behind the scene<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.altoros.com\/blog\/enabling-tensorflow-to-recognize-images-via-a-mobile-device\/#Downsizing_the_model\" >Downsizing the model<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.altoros.com\/blog\/enabling-tensorflow-to-recognize-images-via-a-mobile-device\/#Want_details_Watch_the_video\" >Want details? Watch the video!<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.altoros.com\/blog\/enabling-tensorflow-to-recognize-images-via-a-mobile-device\/#Further_reading\" >Further reading<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.altoros.com\/blog\/enabling-tensorflow-to-recognize-images-via-a-mobile-device\/#About_the_expert\" >About the expert<\/a><\/li><\/ul><\/nav><\/div>\n<h3><span class=\"ez-toc-section\" id=\"What_can_mobile_add_to_AI\"><\/span>What can mobile add to AI?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Things have dramatically changed as half of the Fortune 500 have disappeared since the year of 2000. Just a few years ago, startups and companies would promote artificial intelligence merely as an \u201cextra add-on\u201d to their business models. What we observe today is that you can hardly find a startup, which is not trying to exploit the perks of artificial intelligence to the fullest.<\/p>\n<p>When it comes to machine learning, training a model is still seen as a very compute-intensive action, thus carried out on a server. In <a href=\"https:\/\/cloud.withgoogle.com\/next#target=on-device-machine-learning-tensorflow-on-android-74d29b82-02fa-431b-95e3-271fea793af6\" target=\"_blank\">his session<\/a> at Google Cloud Next 2017, <a href=\"https:\/\/www.linkedin.com\/in\/yufeng\/\" target=\"_blank\">Yufeng Guo<\/a>, a developer advocate for Google, explored whether it is possible to bring machine learning training to mobile, which is considered lower-powered and can\u2019t flex out to multiple virtual machines.<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/05\/google-cloud-next-2017-yufeng-guo-tensorflow-and-mobile-v1.jpg\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/05\/google-cloud-next-2017-yufeng-guo-tensorflow-and-mobile-v1-1024x678.jpg\" alt=\"\" width=\"640\" class=\"aligncenter size-large wp-image-31752\" \/><\/a><\/center><\/p>\n<blockquote><p><em>\u201cArtificial intelligence is well-poised to revolutionize how we compute, how we connect, and where we do all these things, and make it ubiquitous.\u201d \u2014Yufeng Guo, Google<\/em><\/p><\/blockquote>\n<p>Using mobile to connect to a server for prediction, like a web app or a website do, is all nice. However, enabling prediction\u2014by implementing machine learning\u2014on a physical device itself brings along unsurpassed user experience. A good example is Google Translate, which employs <a href=\"https:\/\/www.altoros.com\/blog\/the-magic-behind-google-translate-sequence-to-sequence-models-and-tensorflow\/\">on-board machine learning<\/a> to overlay the translated text.<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/05\/google-cloud-next-2017-yufeng-guo-tensorflow-translate-v1.jpg\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/05\/google-cloud-next-2017-yufeng-guo-tensorflow-translate-v1-1024x572.jpg\" alt=\"\" width=\"640\" class=\"aligncenter size-large wp-image-31765\" \/><\/a><\/center><\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Convolutional_neural_networks_behind_the_scene\"><\/span>Convolutional neural networks behind the scene<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Yufeng demonstrated how to do custom <a href=\"https:\/\/www.altoros.com\/blog\/building-a-keras-based-image-classifier-using-tensorflow-for-a-back-end\/\">image classification<\/a>, using a model that will \u201clive on the device\u201d with no tedious data collection, labeling, or weeks of training and writing distributed code involved.<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/05\/google-cloud-next-2017-yufeng-guo-tensorflow-and-mobile-the-inception-v3-model-v11.jpg\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/05\/google-cloud-next-2017-yufeng-guo-tensorflow-and-mobile-the-inception-v3-model-v11-1024x678.jpg\" alt=\"\" width=\"640\" class=\"aligncenter size-large wp-image-31751\" \/><\/a><\/center><\/p>\n<p>So, what are the steps to go from training to an app?<\/p>\n<ul>\n<li style=\"margin-bottom: 6px;\"><b>Gather training data.<\/b> Basically, you\u2019ve got to take a video with a smartphone of whatever you want a model to recognize. Then, a video should be split into frames. Since those frames are all batched together, one gets a folderful of images to train on. Yufeng used FFmpeg to convert a video into a bunch of images.<\/li>\n<li style=\"margin-bottom: 6px;\"><b>Upload the images to the cloud.<\/b> In his case, Yufeng trained data on Cloud ML Engine, while storing pictures in Google Cloud Storage.<\/li>\n<li><b>Kick off the training.<\/b> Surely, <a href=\"https:\/\/www.altoros.com\/blog\/using-long-short-term-memory-networks-and-tensorflow-for-image-captioning\/\">convolutional neural networks<\/a> are behind the scene. Furthermore, <a href=\"https:\/\/github.com\/tensorflow\/models\/tree\/master\/inception\" target=\"_blank\">the Inception V3 model<\/a>\u201448 layers deep\u2014was applied. (Note: Back in 2011, it was impossible to train a model with more than just four layers deep, while the neural network to win <a href=\"https:\/\/en.wikipedia.org\/wiki\/ImageNet#ImageNet_Challenge\" target=\"_blank\">the ImageNet challenge<\/a> in 2016 comprised 22 layers.) Actually, the training is going to happen only within the last layer. One needs to separate different classes recognized out into buckets, while making all the values within the network \u201cfrozen\u201d (i.e., not training them).<\/li>\n<\/ul>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/05\/google-cloud-next-2017-yufeng-guo-the-inception-v3-model-v12.png\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/05\/google-cloud-next-2017-yufeng-guo-the-inception-v3-model-v12-1024x573.png\" alt=\"\" width=\"640\" class=\"aligncenter size-large wp-image-31754\" \/><\/a><\/center><\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Downsizing_the_model\"><\/span>Downsizing the model<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Then comes the challenge to make it work with mobile, Android in this particular case. The thing is that the libraries used on the Android version of TensorFlow lack certain operations. To overcome the burden of little compute power on mobile, one has to strip down the model. (The output of Yufeng\u2019s experiment is 84 megabytes, which is just too much.)<\/p>\n<p>One may utilize <a href=\"https:\/\/github.com\/tensorflow\/tensorflow\/blob\/master\/tensorflow\/tools\/graph_transforms\/README.md\" target=\"_blank\">the Graph Transform tool<\/a> to downsize the model. Thus, you can quantize the space-taking 32-bit values to just 8-bit ones. Needless to highlight that now we\u2019ve got a 20-megabyte model, accuracy still decent thanks to neural networks doing their job.<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/05\/google-cloud-next-2017-yufeng-guo-tensorflow-from-training-to-app-v12.png\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/05\/google-cloud-next-2017-yufeng-guo-tensorflow-from-training-to-app-v12-1024x573.png\" alt=\"\" width=\"640\" class=\"aligncenter size-large wp-image-31753\" \/><\/a><\/center><\/p>\n<p>There are two major options of finally delivering the model to users:<\/p>\n<ul>\n<li>built in the app (thus making it heavier)<\/li>\n<li>as a separate file to download<\/li>\n<\/ul>\n<p>Both options drive certain bargain. The built-in option secures the model, while putting it as a separate file provides flexibility in introducing updates. So, the choice is up to your priorities.<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/05\/google-cloud-next-2017-yufeng-guo-tensorflow-and-mobile-combined-v11.jpg\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/05\/google-cloud-next-2017-yufeng-guo-tensorflow-and-mobile-combined-v11-1024x678.jpg\" alt=\"\" width=\"640\" class=\"aligncenter size-large wp-image-31750\" \/><\/a><\/center><\/p>\n<p>With TensorFlow, it is possible to combine the powers of mobile and machine learning on Android and iOS (do not forget support for Raspberry Pi, GPU, CPU, and TPU).<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Want_details_Watch_the_video\"><\/span>Want details? Watch the video!<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><center><iframe loading=\"lazy\" width=\"640\" height=\"360\" src=\"https:\/\/www.youtube.com\/embed\/EnFyneRScQ8\" frameborder=\"0\" allowfullscreen><\/iframe><\/center><\/ul>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Further_reading\"><\/span>Further reading<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/text-prediction-with-tensorflow-and-long-short-term-memory-in-six-steps\/\">Text Prediction with TensorFlow and Long Short-Term Memory\u2014in Six Steps<\/a><\/li>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/using-long-short-term-memory-networks-and-tensorflow-for-image-captioning\/\">Using Long Short-Term Memory Networks and TensorFlow for Image Captioning<\/a><\/li>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/the-magic-behind-google-translate-sequence-to-sequence-models-and-tensorflow\/\">The Magic Behind Google Translate: Sequence-to-Sequence Models and TensorFlow<\/a><\/li>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/monitoring-and-visualizing-tensorflow-operations-in-real-time-with-guild-ai\/\">Mobile Devices Are Propelling Industrial IoT Scenarios<\/a><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"About_the_expert\"><\/span>About the expert<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><small><a href=\"https:\/\/www.linkedin.com\/in\/yufeng\/\" target=\"_blank\">Yufeng Guo<\/a> is a developer advocate for the Google Cloud Platform, where he is trying to make machine learning more understandable and usable for all. He is interested in combining IoT devices, big data, and machine learning, while always enthusiastic about learning new technologies.<\/small><\/p>\n","protected":false},"excerpt":{"rendered":"<p>What can mobile add to AI?<\/p>\n<p>Things have dramatically changed as half of the Fortune 500 have disappeared since the year of 2000. Just a few years ago, startups and companies would promote artificial intelligence merely as an \u201cextra add-on\u201d to their business models. What we observe today is that you [&#8230;]<\/p>\n","protected":false},"author":3,"featured_media":31760,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","footnotes":"","_links_to":"","_links_to_target":""},"categories":[214],"tags":[117,748,749],"class_list":["post-31747","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorials","tag-iot","tag-machine-learning","tag-tensorflow"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Enabling TensorFlow to Recognize Images via a Mobile Device | Altoros<\/title>\n<meta name=\"description\" content=\"Learn what steps to take to build a convolutional neural network that will recognize and classify images via a mobile device.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.altoros.com\/blog\/enabling-tensorflow-to-recognize-images-via-a-mobile-device\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Enabling TensorFlow to Recognize Images via a Mobile Device | Altoros\" \/>\n<meta property=\"og:description\" content=\"What can mobile add to AI? Things have dramatically changed as half of the Fortune 500 have disappeared since the year of 2000. Just a few years ago, startups and companies would promote artificial intelligence merely as an \u201cextra add-on\u201d to their business models. What we observe today is that you [...]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.altoros.com\/blog\/enabling-tensorflow-to-recognize-images-via-a-mobile-device\/\" \/>\n<meta property=\"og:site_name\" content=\"Altoros\" \/>\n<meta property=\"article:published_time\" content=\"2017-05-16T16:15:15+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-03-19T14:56:30+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/05\/google-cloud-next-2017-tensorflow-to-recognize-images-via-a-mobile-device.gif\" \/>\n\t<meta property=\"og:image:width\" content=\"640\" \/>\n\t<meta property=\"og:image:height\" content=\"424\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/gif\" \/>\n<meta name=\"author\" content=\"Sophia Turol\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Sophia Turol\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.altoros.com\/blog\/enabling-tensorflow-to-recognize-images-via-a-mobile-device\/\",\"url\":\"https:\/\/www.altoros.com\/blog\/enabling-tensorflow-to-recognize-images-via-a-mobile-device\/\",\"name\":\"Enabling TensorFlow to Recognize Images via a Mobile Device | Altoros\",\"isPartOf\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/enabling-tensorflow-to-recognize-images-via-a-mobile-device\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/enabling-tensorflow-to-recognize-images-via-a-mobile-device\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/05\/google-cloud-next-2017-tensorflow-to-recognize-images-via-a-mobile-device.gif\",\"datePublished\":\"2017-05-16T16:15:15+00:00\",\"dateModified\":\"2018-03-19T14:56:30+00:00\",\"author\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/58194952af19fe7b2b830846e077a58e\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/enabling-tensorflow-to-recognize-images-via-a-mobile-device\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.altoros.com\/blog\/enabling-tensorflow-to-recognize-images-via-a-mobile-device\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.altoros.com\/blog\/enabling-tensorflow-to-recognize-images-via-a-mobile-device\/#primaryimage\",\"url\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/05\/google-cloud-next-2017-tensorflow-to-recognize-images-via-a-mobile-device.gif\",\"contentUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/05\/google-cloud-next-2017-tensorflow-to-recognize-images-via-a-mobile-device.gif\",\"width\":640,\"height\":424},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.altoros.com\/blog\/enabling-tensorflow-to-recognize-images-via-a-mobile-device\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.altoros.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Enabling TensorFlow to Recognize Images via a Mobile Device\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.altoros.com\/blog\/#website\",\"url\":\"https:\/\/www.altoros.com\/blog\/\",\"name\":\"Altoros\",\"description\":\"Insight\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.altoros.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/58194952af19fe7b2b830846e077a58e\",\"name\":\"Sophia Turol\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/05\/trello_card-96x96.jpg\",\"contentUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/05\/trello_card-96x96.jpg\",\"caption\":\"Sophia Turol\"},\"description\":\"Sophia Turol is passionate about delivering well-structured articles that cater for picky technical audience. With 3+ years in technical writing and 5+ years in editorship, she enjoys collaboration with developers to create insightful, yet intelligible technical tutorials, overviews, and case studies. Sophie is enthusiastic about deep learning solutions\u2014TensorFlow in particular\u2014and PaaS systems, such as Cloud Foundry.\",\"url\":\"https:\/\/www.altoros.com\/blog\/author\/sophie-turol\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Enabling TensorFlow to Recognize Images via a Mobile Device | Altoros","description":"Learn what steps to take to build a convolutional neural network that will recognize and classify images via a mobile device.","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:\/\/www.altoros.com\/blog\/enabling-tensorflow-to-recognize-images-via-a-mobile-device\/","og_locale":"en_US","og_type":"article","og_title":"Enabling TensorFlow to Recognize Images via a Mobile Device | Altoros","og_description":"What can mobile add to AI? Things have dramatically changed as half of the Fortune 500 have disappeared since the year of 2000. Just a few years ago, startups and companies would promote artificial intelligence merely as an \u201cextra add-on\u201d to their business models. What we observe today is that you [...]","og_url":"https:\/\/www.altoros.com\/blog\/enabling-tensorflow-to-recognize-images-via-a-mobile-device\/","og_site_name":"Altoros","article_published_time":"2017-05-16T16:15:15+00:00","article_modified_time":"2018-03-19T14:56:30+00:00","og_image":[{"width":640,"height":424,"url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/05\/google-cloud-next-2017-tensorflow-to-recognize-images-via-a-mobile-device.gif","type":"image\/gif"}],"author":"Sophia Turol","twitter_misc":{"Written by":"Sophia Turol","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.altoros.com\/blog\/enabling-tensorflow-to-recognize-images-via-a-mobile-device\/","url":"https:\/\/www.altoros.com\/blog\/enabling-tensorflow-to-recognize-images-via-a-mobile-device\/","name":"Enabling TensorFlow to Recognize Images via a Mobile Device | Altoros","isPartOf":{"@id":"https:\/\/www.altoros.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.altoros.com\/blog\/enabling-tensorflow-to-recognize-images-via-a-mobile-device\/#primaryimage"},"image":{"@id":"https:\/\/www.altoros.com\/blog\/enabling-tensorflow-to-recognize-images-via-a-mobile-device\/#primaryimage"},"thumbnailUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/05\/google-cloud-next-2017-tensorflow-to-recognize-images-via-a-mobile-device.gif","datePublished":"2017-05-16T16:15:15+00:00","dateModified":"2018-03-19T14:56:30+00:00","author":{"@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/58194952af19fe7b2b830846e077a58e"},"breadcrumb":{"@id":"https:\/\/www.altoros.com\/blog\/enabling-tensorflow-to-recognize-images-via-a-mobile-device\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.altoros.com\/blog\/enabling-tensorflow-to-recognize-images-via-a-mobile-device\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.altoros.com\/blog\/enabling-tensorflow-to-recognize-images-via-a-mobile-device\/#primaryimage","url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/05\/google-cloud-next-2017-tensorflow-to-recognize-images-via-a-mobile-device.gif","contentUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/05\/google-cloud-next-2017-tensorflow-to-recognize-images-via-a-mobile-device.gif","width":640,"height":424},{"@type":"BreadcrumbList","@id":"https:\/\/www.altoros.com\/blog\/enabling-tensorflow-to-recognize-images-via-a-mobile-device\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.altoros.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Enabling TensorFlow to Recognize Images via a Mobile Device"}]},{"@type":"WebSite","@id":"https:\/\/www.altoros.com\/blog\/#website","url":"https:\/\/www.altoros.com\/blog\/","name":"Altoros","description":"Insight","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.altoros.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/58194952af19fe7b2b830846e077a58e","name":"Sophia Turol","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/05\/trello_card-96x96.jpg","contentUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/05\/trello_card-96x96.jpg","caption":"Sophia Turol"},"description":"Sophia Turol is passionate about delivering well-structured articles that cater for picky technical audience. With 3+ years in technical writing and 5+ years in editorship, she enjoys collaboration with developers to create insightful, yet intelligible technical tutorials, overviews, and case studies. Sophie is enthusiastic about deep learning solutions\u2014TensorFlow in particular\u2014and PaaS systems, such as Cloud Foundry.","url":"https:\/\/www.altoros.com\/blog\/author\/sophie-turol\/"}]}},"_links":{"self":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/31747","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/comments?post=31747"}],"version-history":[{"count":10,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/31747\/revisions"}],"predecessor-version":[{"id":31769,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/31747\/revisions\/31769"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/media\/31760"}],"wp:attachment":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/media?parent=31747"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/categories?post=31747"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/tags?post=31747"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}