+-+-+ +-+ +-+-+-+-+
|G|O| |4| |H|I|V|E|
+-+-+ +-+ +-+-+-+-+

 --- A GOPHER-LIKE INTERFACE FOR HIVE BLOCKCHAIN ---

Tensorflow: Image Recognition App in Kivy

BY: @faad | CREATED: June 12, 2018, 7:06 a.m. | VOTES: 34 | PAYOUT: $0.35 | [ VOTE ]

Repository

https://github.com/tensorflow/tensorflow

What Will I Learn?

Here, today we come up with a new tutorial, in this tutorial you will learn Image Recognition using Tensorflow and Kivy. Real time image recognition, open the camera to capture the image and the App automatically detect the objects from the image.

Requirements

Difficulty

Tutorial Contents

Introduction

In this tutorial we are going to develop Image Recognition App, the will allow you to detect the objects from the image. For this we'll use Tensorflow in order to detect the objects in the image, we'll talk about it in just a moment. We'll also use Kivy (a python library) to the App's GUI, if you know about our Kivy tutorial series then you know about the Kivy, but if not then please check our Kivy tutorial series.

TensorFlow

TensorFlow is an open source library and develop by researchers and engineers from the Google Brain team within Google’s AI organization for high performance numerical computation, and supports machine learning and deep learning. For more info visit TensorFlow.

Google trained Inception-v3 for ImageNet large visual recognition in which models try to classify the image into 1000 classes. For complete description please visit TensorFlow ImageRecognition.

Setting up the Environment

Before we move to develop our Image Recognition App, first we have to set a working environment that will allow us to develop our app. For this first of all install the TensorFlow and then install the Kivy library on your machine, visit their sites in order to install. You also have to install some other python packages to run it properly on the machine, these packages are argparse and numpy.

Develop Image Recognition App

In order to develop an Image Recognition App, first of all create a file in your text editor (we are using PyCharm) and save it with a name main.py.

First of all we'll develop our App in Kivy, for this first import the Kivy packages, write the following code in you file.

```

import kivy
kivy.require('1.9.0')

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.label import Label

These are the packages we'll use in order to develop our app. 

Next up we'll develop the App's GUI, for this write the following code. 


Builder.load_string('''
:
orientation: 'vertical'
Button:
text: 'Capture'
size_hint_y: None
height: '48dp'
''')

class CaputeImage(BoxLayout):
pass

class ImageRecognition(App):

def build(self):
    return CaputeImage()

if name == "main":
imagerecognition = ImageRecognition()
imagerecognition.run()


Output: 

![ImageRecognition-1.JPG](https://cdn.steemitimages.com/DQmaKnkQAN5MpFhMiba1zCms18F2dX9u42dQi69ScnZH7yK/ImageRecognition-1.JPG)

Now run the camera in the app in order to capture the images, for this write this code in the ```Builder.load_string ``` method. 

Camera:
    id: camera
    resolution: (720, 480)
    play: True
Place this code above to the capture Button code, by default we set the camera ```play:True ```, this means whenever you launch the App camera will automatically starts. 

Output: 

![ImageRecognition-2.gif](https://cdn.steemitimages.com/DQmNX5ENFbZVNLmLn9ziAM1KhryytauNSxjLqFfwrH2w4f3/ImageRecognition-2.gif)

You can see our camera is working fine, Now we'll capture the image using camera. For this develop a method ```def capture(self): ``` within ``` CameraClick ```  class and write the following code in order to capture the image. 

def capture(self):
    '''
    Function to capture the images and give them the names
    according to their captured time and date.
    '''

    camera = self.ids['camera']
    camera.export_to_png("test_images/IMG.png") 
    print("Captured")
    self.ids['camera'].play = False

Also call the method whenever you click the capture button, set the this in the button properties,  ``` on_press: root.capture() ``` 

``` camera.export_to_png("image/IMG.png") ```  allow us to export the image into image folder and save it with name ```  IMG.png ```  . So, also make a folder with the name ```  image ```   in the working directory in order to save the images. 

Now run the app and click over the capture button it will capture the image and export it to ``` image ``` folder.

Next up we'll move to our real work, detecting the objects from the image. For this first copy this code from [github](https://raw.githubusercontent.com/tensorflow/models/master/tutorials/image/imagenet/classify_image.py). Create a new file with name ```  imgrecog.py ```  and paste copied code in this file and save it.  And import this file in the ```  main.py ```  file for this write the code. ```   import imagrecog as ir ```  

Now made some changes to this code, first of all cut the main method and past it in the ```  main.py ```   file within the ```  CaputeImage ``` class. and remove the _ from the parameter body and write the self. and change the code as

 ``` 
    def main(self):
        ir.maybe_download_and_extract()
        image = (ir.FLAGS.image_file if ir.FLAGS.image_file else
                 ir.os.path.join('image/', 'IMG.png'))
        ir.run_inference_on_image(image) 

Now remove the if __name__ == '__main__': from imagerecog.py and remove indentation of the code within the if statement.

And lastly remove this line of cod tf.app.run(main=main, argv=[sys.argv[0]] + unparsed) from imagerecog.py file.

Now move toward main(self) method in the main.py file. And make a label to show the returning text from the imagerecog.py file. For this add the following code in the method.

self.add_widget(Label(text=string, text_size=(600, None), line_height=1.5))

Now move toward capture(self) method and call the main(self) method after capturing the image. Your code in the capture(self) method will be

    def capture(self):
        '''
        Function to capture the images and give them the names
        according to their captured time and date.
        '''

        camera = self.ids['camera']
        camera.export_to_png("test_images/IMG.png")
        print("Captured")
        self.ids['camera'].play = False
        self.clear_widgets()
        self.main()

At the last point open the imagerecog.py file and jump toward def run_inference_on_image(image): method and replace the for loop code with the following code in the method.

    string = ""
    top_k = predictions.argsort()[-FLAGS.num_top_predictions:][::-1]
    for node_id in top_k:
      human_string = node_lookup.id_to_string(node_id)
      score = predictions[node_id]
      string += '%s (score = %.5f)' % (human_string, score)
    return string

Here in my file it is the line no# 162 - 168

Now run the App, you will see whatever you capture in the image the App will detect it from the image.

Output:

[IMAGE: https://cdn.steemitimages.com/DQmettuJLWEF1sKVuACq8RKsDx79tdZXdku7CN1GQERiFni/ImageRecognition-3.gif]

You can see in the above image we capture the cellphone image and it detects all the possible results in the image.

Proof of Work Done

https://github.com/faad1/tensorflow-image-recognition

TAGS: [ #utopian-io ] [ #tutorials ] [ #tensorflow ] [ #kivy ]

Replies

@mcfarhat | June 12, 2018, 12:29 p.m. | Votes: 0 | [ VOTE ]

Thank you for your contribution.
- You have missed properly explaining in your tutorial what you are doing to the reader. Instructing readers to just copy and paste code, and add indentation does not really qualify to instruct the user or inform him how and why to do things as they are.
- You have also used an incorrect github repo for tensor, this here would be a better suited one
- You also referenced code that you have not used anywhere in your tutorial (about the on.press capture code). Please focus on proper explanations everywhere.

Need help? Write a ticket on https://support.utopian.io/.
Chat with us on Discord.
[utopian-moderator]

@faad | June 12, 2018, 2:11 p.m. | Votes: 0 | [ VOTE ]

Sorry for Mistake.
I have updated Github Repo.

@abusereports | July 16, 2018, 6:52 p.m. | Votes: 0 | [ VOTE ]

@faad you were flagged by a worthless gang of trolls, so, I gave you an upvote to counteract it! Enjoy!!

@steemitboard | Dec. 22, 2018, 2:36 a.m. | Votes: 0 | [ VOTE ]

Congratulations @faad! You received a personal award!

https://steemitimages.com/70x70/http://steemitboard.com/@faad/birthday1.png1 Year on Steemit

Click here to view your Board of Honor

> Support SteemitBoard's project! Vote for its witness and get one more award!

@steemitboard | Dec. 22, 2019, 3:29 a.m. | Votes: 0 | [ VOTE ]

Congratulations @faad! You received a personal award!

https://steemitimages.com/70x70/http://steemitboard.com/@faad/birthday2.pngHappy Birthday! - You are on the Steem blockchain for 2 years!

You can view your badges on your Steem Board and compare to others on the Steem Ranking

Vote for @Steemitboard as a witness to get one more award and increased upvotes!
[ BACK TO TRENDING ] [ BACK TO MENU ]
CMD>