Category: Deep Learning

  • Google Vision API Quick Test on Gym Schedule

    While driving back with the next weeks Gym schedule, a startup idea struck me. Wouldn’t it be niceĀ if I could just snap a picture of the gym schedule and all the classes get added to my calendar? Even though the schedule is available online, but i felt it would be convenient for some people just to add it calendar with a snap. Also been looking into Google vision api that GoogleĀ released in the recently concluded GCP Next Ā . Ā Thought this would be a nice test for usability of the API. In order to use Google cloud API, one needs to sign up for the free trial (needs credit card). To get started with vision API, hereĀ is Ā a quick tutorial. So I tried it out. Took theĀ snap of the gym schedule and uploaded this image to cloud platform storage bucket. Then modified the URL for the image to my uploaded image.Ā The request type was modifiedĀ toĀ TEXT_DETECTION.Ā The request tookĀ less then a second to complete, and returned Ā json response. The json response is divided in 2 sections. The first has a list of all the text it has detected. The second section has coordinates of the bounding rectangle for each word it has detected. I was specifically looking if it Ā detected the Bodypump class at 7:30pm for Thursday apr-21. My hope was that using the coordinates of the bodypump sections I could determine the date from the column header, and time from the row header, using some geometry/math.

    • It was not able to detect all the times ending in p.m. in the row headers.
    • It did detect the bodypumpĀ blobs even though they were in white font with black background, which i felt was smart work by the api.
    • It was not able to detect the smaller text under bodypump e.g. Studio 1, Ā 45 mins, Nancy
    • It was able to detect some variations of the fonts. Notice it detects Fitness, but not the 24 Hour on the top of the page.

    The Google vision does a nice job detecting some of the text. But the accuracy is not good enough that I can base myĀ app idea on i.e. capture the text and use coordinates to find the time and date for the class, and automatically add to my calendar. Will have to wait till the api is either more accurate.

    See schedule image, request and response below.

    24ScheduleMine

    I was specifically interested if the response from

    The following is the API request

    POST https://vision.googleapis.com/v1/images:annotate?key={YOUR_API_KEY}
    {
     "requests": [
      {
       "features": [
        {
         "type": "TEXT_DETECTION"
        }
       ],
       "image": {
        "source": {
         "gcsImageUri": "gs://emailclassification/24ScheduleMine.JPG"
        }
       }
      }
     ]
    }
    

    The following is the API response

    {
     "responses": [
      {
       "textAnnotations": [
        {
         "locale": "en",
         "description": "FITITESS\nHOUR\nGROUP X\nweek of april 18, 2016\nmon apr 18\ntue apr-19\nwed apr 20\nthu apr 21\nfri apr 22\nsat apr 23\nsun apr 24\n5:30am\n8:00am\n9:00am\nBODYPUMP\nBODYCOMBAT BODYPUMP BODYPUMP\nBODYCOMBAT\n0 M\n9:30am\nPop\n30 M\nBODYPUMP\nZUMBA\n10:00am\nOZVMSA\nBODYFLOW\nZUMBA\nStudio\nZUMBA\nBODY FLOW\n11:00am\nBODYPUMP\nPLYO\nGRIT STRENGTH 30M\nStudeo 2\nBODYPUMP\nchedule\n8 AM and 9 PM only. The\nmembers may attend ca\ny Aq\nd Zumba Gold\nd by S\n",
         "boundingPoly": {
          "vertices": [
           {
            "x": 66,
            "y": 142
           },
           {
            "x": 1962,
            "y": 142
           },
           {
            "x": 1962,
            "y": 1449
           },
           {
            "x": 66,
            "y": 1449
           }
          ]
         }
        },
        {
         "description": "FITITESS",
         "boundingPoly": {
          "vertices": [
           {
            "x": 66,
            "y": 921
           },
           {
            "x": 67,
            "y": 535
           },
           {
            "x": 143,
            "y": 535
           },
           {
            "x": 142,
            "y": 921
           }
          ]
         }
        },
    
     ]
    }
    

    Full API Response Text File

  • Deep Learning – My Painting Picaso Style – Neural Algorithm of Artistic Style

     

    Ā Naveed Portrait Deep Art

    appendsigns

    Weekend project reading through this interesting paper. The gist of the paper is that it is possible to extract the content of oneĀ image, and the style from another and produce a thirdĀ with the content and style mixed. This is enabled by deep convolution neural networks. Convolution networks learn features in a hierarchy, where lower layers learn features such as line segments, and each layer above learn higher abstractions, such as nose, face or a scenery. Ā Example above is my own school picture plus Picaso art work produced a fascinating painting of me.

    The paper is available here,Ā A Neural Algorithm of Artistic Style

    The source code for it is available hereĀ GitHub Source

    The fastest way to get started on a mac or pc is to use a docker image, with precompiled dependencies. It took about 10 hours to generate the master piece. On a GPU based machine it would take 15 or so minutes.

    Get DockerĀ and start docker terminal. Set the docker virtual box memory to a higher number 8GB, stop the virtual machine and change the system settings in virtual box.

    docker pull kchentw/neural-style
    
    docker run -i -t kchentw/neural-style /bin/bash
    
    #To exit shell without terminating container do CTRL P, Q
    
    docker ps  # will show container id
    
    docker cp picaso.jpg :/tmp
    
    docker cp kid.jpg :/tmp
    
    docker attach 
    
    cd ~/neural-style
    
    th neural_style.lua -gpu -1 -style_image /tmp/picaso.jpgĀ -content_image /tmp/kid.jpg
    

    Wait for about 10 or so hours and it will produce out.png, the picaso master piece!