<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: ashish</title>
    <description>The latest articles on DEV Community by ashish (@ash11sh).</description>
    <link>https://dev.to/ash11sh</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F227229%2F06d1e892-9447-4ffb-835f-02cd2aaa4ec6.jpeg</url>
      <title>DEV Community: ashish</title>
      <link>https://dev.to/ash11sh</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ash11sh"/>
    <language>en</language>
    <item>
      <title>building an image dataset</title>
      <dc:creator>ashish</dc:creator>
      <pubDate>Sat, 21 Nov 2020 09:25:47 +0000</pubDate>
      <link>https://dev.to/ash11sh/building-a-image-dataset-4eph</link>
      <guid>https://dev.to/ash11sh/building-a-image-dataset-4eph</guid>
      <description>&lt;p&gt;It's bit of hectic process in creating image datasets. It Basically consists of below mentioned pipeline.(to my understanding)&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Model Bias.&lt;/li&gt;
&lt;li&gt;Whats your model goal?&lt;/li&gt;
&lt;li&gt;Ways to collect images.&lt;/li&gt;
&lt;li&gt;Cleaning the data.&lt;/li&gt;
&lt;li&gt;Resizing the images.&lt;/li&gt;
&lt;/ol&gt;




&lt;h3&gt;
  
  
  Model Bias
&lt;/h3&gt;

&lt;p&gt;Can you solve this riddle??&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A man and his son are in a terrible accident and are rushed to the hospital in critical care. The doctor looks at the boy and exclaims "I can't operate on this boy, he's my son!" How could this be?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Firstly most people generally think what i think😃, this is an example for human bias.&lt;/p&gt;

&lt;p&gt;If you train your model with more cat images and expect it to perform well on detecting cats and dogs, this happens&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YkOt4bKs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.pinimg.com/474x/e0/15/ab/e015aba63fad149f0fe9a83ca788fc52.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YkOt4bKs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.pinimg.com/474x/e0/15/ab/e015aba63fad149f0fe9a83ca788fc52.jpg" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;source: &lt;a href="http://www.sciencecartoonsplus.com/index.php"&gt;Sidney Harris&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For more details on data bias you can go through this excellent slides by cs224n: &lt;a href="https://web.stanford.edu/class/archive/cs/cs224n/cs224n.1194/slides/cs224n-2019-lecture19-bias.pdf"&gt;Bias in the Vision and Language of Artificial Intelligence&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Ways to collect data
&lt;/h3&gt;

&lt;p&gt;here's a just a sample list of sources to collect images data&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Search engines 🔍
(Google, Bing, Yandex, Duck Duck Go)&lt;/li&gt;
&lt;li&gt;Social Media &amp;gt; through hashtags#️⃣&lt;/li&gt;
&lt;li&gt;Youtube videos and flickr📹&lt;/li&gt;
&lt;li&gt;take a camera/mobile and go around collect data by yourself.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Cleaning the data.
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Trash the Images which can't be loaded/ corrupted.&lt;/li&gt;
&lt;li&gt;find out duplicate images(due to various search engines).&lt;/li&gt;
&lt;li&gt;Do what's necessary...&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Resizing the images
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Resize maintaining its aspect ratio. &lt;/li&gt;
&lt;li&gt;If you have images of different sizes, and you try using resize with padding(filling the pixels with black/white).&lt;/li&gt;
&lt;li&gt;Smaller your images &amp;gt;&amp;gt;&amp;gt; faster your model training.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Codes you need(💪 open source)
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Some of these requires chromedriver and selenium.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For images downloading based on Search engines:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Image Downloader by &lt;a href="https://github.com/sczhengyabin/Image-Downloader"&gt;sczhengyabin&lt;/a&gt;  [google | bing]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;google images download by &lt;a href="https://github.com/hardikvasa/google-images-download"&gt;hardikvasa&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;yandex images download by &lt;a href="https://github.com/bobokvsky/yandex-images-download"&gt;bobokvsky&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Bulk Bing Image downloader by &lt;a href="https://github.com/ostrolucky/Bulk-Bing-Image-downloader"&gt;ostrolucky&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Flickr image-scraping software developed by &lt;a href="https://github.com/ultralytics/flickr_scraper"&gt;Ultralytics LLC&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For downloading from instagram based on hashtags:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Instagram-scraper by &lt;a href="https://github.com/arc298/instagram-scraper"&gt;arc298&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For duplicate images cleaning:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Imagededup by &lt;a href="https://github.com/idealo/imagededup"&gt;idealo&lt;/a&gt;✨ 😎&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This "imagededup" package uses Convolutional Neural Network (CNN) and hashing algorithms to find duplicates in images.&lt;/p&gt;

</description>
      <category>machinelearning</category>
      <category>computervision</category>
    </item>
    <item>
      <title>Explore Computer Vision Datasets</title>
      <dc:creator>ashish</dc:creator>
      <pubDate>Mon, 16 Nov 2020 11:39:32 +0000</pubDate>
      <link>https://dev.to/ash11sh/explore-computer-vision-datasets-7ln</link>
      <guid>https://dev.to/ash11sh/explore-computer-vision-datasets-7ln</guid>
      <description>&lt;p&gt;This article list outs resources to find the trending data-sets in computer vision field useful for beginners and other practitioners.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--PBHzIL6X--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/65535/49469177806_762f088247_w_d.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--PBHzIL6X--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://live.staticflickr.com/65535/49469177806_762f088247_w_d.jpg" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Datasets&lt;/strong&gt;
&lt;/h2&gt;




&lt;p&gt;&lt;a href="https://storage.googleapis.com/openimages/web/index.html"&gt;Open Images Dataset&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://cocodataset.org/#home"&gt;MS-COCO&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.cs.toronto.edu/~kriz/cifar.html"&gt;CIFAR-10&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/zalandoresearch/fashion-mnist"&gt;Fashion MNIST&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.image-net.org/"&gt;ImageNet&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.objects365.org/overview.html"&gt;Objects365&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.cvlibs.net/datasets/kitti/"&gt;KITTI Vision&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Resources&lt;/strong&gt;
&lt;/h2&gt;




&lt;p&gt;&lt;a href="https://www.kaggle.com/datasets"&gt;Kaggle&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://datasetsearch.research.google.com/"&gt;Google Data Search&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.visualdata.io/"&gt;visualdata.io&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://homepages.inf.ed.ac.uk/rbf/CVonline/Imagedbase.htm"&gt;CVonline: Image Databases&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://riemenschneider.hayko.at/vision/dataset/"&gt;YACVID&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://computervisiononline.com/datasets"&gt;Computer Vision Online&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.datasetlist.com/"&gt;Datasetlist&lt;/a&gt;&lt;/p&gt;

</description>
      <category>machinelearning</category>
      <category>computervision</category>
    </item>
    <item>
      <title>Using telegram bot for Image Classification</title>
      <dc:creator>ashish</dc:creator>
      <pubDate>Mon, 16 Nov 2020 11:37:27 +0000</pubDate>
      <link>https://dev.to/ash11sh/using-telegram-bot-for-image-classification-3afk</link>
      <guid>https://dev.to/ash11sh/using-telegram-bot-for-image-classification-3afk</guid>
      <description>&lt;h2&gt;
  
  
  training the model:
&lt;/h2&gt;

&lt;p&gt;Pick any of your comfortable  framework PyTorch / Tensorflow. And then train your image classifier  /or/ use any trained model. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgflip.com%2F4mjmc9.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgflip.com%2F4mjmc9.jpg"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Training example: &lt;a href="https://www.tensorflow.org/tutorials/images/classification" rel="noopener noreferrer"&gt;tensorflow&lt;/a&gt; |  &lt;a href="https://pytorch.org/tutorials/beginner/blitz/cifar10_tutorial.html" rel="noopener noreferrer"&gt;pytorch&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I'm using tflite model as it serves best for edge and low computing devices. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  model conversion:
&lt;/h2&gt;

&lt;p&gt;If you want to convert from pytorch to tflite you can go through this code from &lt;a href="https://github.com/omerferhatt/torch2tflite" rel="noopener noreferrer"&gt;omerferhatt&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It converts from torch to ONNX and then TF2 &amp;gt;&amp;gt;&amp;gt; tflite&lt;/p&gt;

&lt;p&gt;Torch-&amp;gt;ONNX-&amp;gt;TF2-&amp;gt;TFLite&lt;/p&gt;

&lt;p&gt;Put the Inference code for this model in a '.py' file and place it along with model file and labels.txt (for tensorflow).&lt;/p&gt;

&lt;h2&gt;
  
  
  telegram bot:
&lt;/h2&gt;

&lt;p&gt;easy steps:&lt;/p&gt;

&lt;p&gt;1)  connect with &lt;a href="https://t.me/botfather" rel="noopener noreferrer"&gt;bot father&lt;/a&gt;  &lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcore.telegram.org%2Ffile%2F811140763%2F1%2FPihKNbjT8UE%2F03b57814e13713da37" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcore.telegram.org%2Ffile%2F811140763%2F1%2FPihKNbjT8UE%2F03b57814e13713da37"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2) create your bot and get token&lt;/p&gt;

&lt;p&gt;I used &lt;a href="https://github.com/python-telegram-bot/python-telegram-bot" rel="noopener noreferrer"&gt;python-telegram-bot&lt;/a&gt; library for building the bot. Just used the simple echo-bot template example and changed according to my need.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;logging&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;

&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;telegram&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Update&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;telegram.ext&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Updater&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;CommandHandler&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;MessageHandler&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Filters&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;CallbackContext&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;get_predictions&lt;/span&gt;  &lt;span class="c1"&gt;# calling model func
&lt;/span&gt;
&lt;span class="c1"&gt;# Enable logging
&lt;/span&gt;&lt;span class="n"&gt;logging&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;basicConfig&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="nb"&gt;format&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;%(asctime)s - %(name)s - %(levelname)s - %(message)s&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;level&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;logging&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;INFO&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;logger&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;logging&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getLogger&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;__name__&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


&lt;span class="c1"&gt;# Define a few command handlers. These usually take the two arguments update and
# context. Error handlers also receive the raised TelegramError object in error.
&lt;/span&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;start&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;update&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Update&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;CallbackContext&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;Send a message when the command /start is issued.&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
    &lt;span class="n"&gt;update&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;reply_text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Hi send an image to classify!&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;help_command&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;update&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Update&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;CallbackContext&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;Send a message when the command /help is issued.&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
    &lt;span class="n"&gt;update&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;reply_text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Help!&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;photo&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;update&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Update&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;CallbackContext&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;user&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;update&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;from_user&lt;/span&gt;
    &lt;span class="n"&gt;photo_file&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;update&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;photo&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;get_file&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;photo_file&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;download&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;user_photo.jpg&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;logger&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;info&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Photo of %s: %s&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;first_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;user_photo.jpg&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;update&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;reply_text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Okay now wait a few seconds!!!&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;update&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;reply_text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;get_prediction&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;user_photo.jpg&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;


&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;Start the bot.&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
    &lt;span class="c1"&gt;# Create the Updater and pass it your bot's token.
&lt;/span&gt;    &lt;span class="n"&gt;TOKEN&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt; &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt; &lt;span class="c1"&gt;# place your token here
&lt;/span&gt;    &lt;span class="n"&gt;updater&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Updater&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;TOKEN&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;use_context&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;PORT&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;PORT&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;8443&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

    &lt;span class="c1"&gt;# Get the dispatcher to register handlers
&lt;/span&gt;    &lt;span class="n"&gt;dispatcher&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;updater&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dispatcher&lt;/span&gt;

    &lt;span class="c1"&gt;# on different commands - answer in Telegram
&lt;/span&gt;    &lt;span class="n"&gt;dispatcher&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;add_handler&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;CommandHandler&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;start&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;start&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
    &lt;span class="n"&gt;dispatcher&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;add_handler&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;CommandHandler&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;help&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;help_command&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

    &lt;span class="c1"&gt;# on noncommand i.e message - echo the message on Telegram
&lt;/span&gt;    &lt;span class="n"&gt;dispatcher&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;add_handler&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;MessageHandler&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Filters&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;photo&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="n"&gt;Filters&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;command&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;photo&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

    &lt;span class="n"&gt;updater&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;start_webhook&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;listen&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;0.0.0.0&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                      &lt;span class="n"&gt;port&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;PORT&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                      &lt;span class="n"&gt;url_path&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;TOKEN&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;updater&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;bot&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;set_webhook&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://yourapp.herokuapp.com/&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;TOKEN&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;updater&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;idle&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;__name__&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;__main__&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In above code,  &lt;code&gt;update.message.reply_text(get_prediction('user_photo.jpg'))&lt;/code&gt; I'm passing the result predictions to user by calling the model, you can replace it according to your inferencing model code.&lt;/p&gt;

&lt;h3&gt;
  
  
  Final touch
&lt;/h3&gt;

&lt;p&gt;I choose Heroku platform for deploying my bot. For more hosting ideas visit this &lt;a href="https://github.com/python-telegram-bot/python-telegram-bot/wiki/Where-to-host-Telegram-Bots" rel="noopener noreferrer"&gt;link&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww3.assets.heroku.com%2Fassets%2Fhome%2Fhero%2Ffocus-647c57d2effb7d2dfb5871161afab3cf097de6339c02e85d84ea14747800fcb0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww3.assets.heroku.com%2Fassets%2Fhome%2Fhero%2Ffocus-647c57d2effb7d2dfb5871161afab3cf097de6339c02e85d84ea14747800fcb0.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Before moving forward, you need to create requirements file and Procfile.&lt;/p&gt;

&lt;p&gt;For tflite inference you don't need whole tensorflow library,  just install the tflite interpretor. See this &lt;a href="https://www.tensorflow.org/lite/guide/python" rel="noopener noreferrer"&gt;guide&lt;/a&gt; for full info. &lt;/p&gt;

&lt;p&gt;Put these lines in Procfile according to your need:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;web: python bot.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now my folder structure looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;└── img_classify_bot
    ├── model.py
    └── bot.py
    └── model.tflite
    └── labels.txt
    └── bot.py
    └── requirements.txt
    └── Procfile

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;finally, use heroku-cli for deploying the bot.(Your bot Token is sensitive info, don't reveal it publicly)&lt;/p&gt;

&lt;p&gt;​                                &lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;classifier-bot&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flive.staticflickr.com%2F65535%2F50607753803_a1da92fc79_o_d.gif"&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedia.tenor.com%2Fimages%2F0421e70227a98b91bce6e146bf9edaae%2Ftenor.gif"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

</description>
      <category>machinelearning</category>
      <category>tensorflow</category>
    </item>
  </channel>
</rss>
