Brief human action recognition literature survey of work published between 2014 and 2019.

Photo by Kamil Pietrzak on Unsplash

Over the last couple of months, I have been going through a lot of literature about human action recognition using computer vision. In this post, I will share a brief survey of Human Action Recognition. I will focus on literature from 2012–2019, as most of the earlier literature, relied on feature extraction and for the past few years neural networks have been outperforming the manual techniques.


Human action recognition is a standard Computer Vision problem and has been well studied. The fundamental goal is to analyze a video to identify the actions taking place in the video. Essentially a video…

The NFC Data Exchange Format (NDEF) is a standardized data format that can be used to exchange information between any compatible NFC device and another NFC device or tag. The data format consists of NDEF Messages and NDEF Records.

In this series of articles, I will explain how an NDEF message can be constructed and stored on an NFC tag. Assume a company wants to issue tags that can be used in public transport systems as a replacement for paper tickets. These tags can be tapped on an NFC-enabled Android device which will scan the tag and register the entry…

Photo by Louis Reed on Unsplash

In this short post, I will walk you through the steps for streaming a live camera feed from a DSLR connected to the Raspberry Pi. We will be using gphoto2 for interfacing with the camera, FFmpeg for encoding the video, and FFserver for hosting the feed on a local webserver.



For this tutorial, I am assuming that you have a Raspberry Pi with Raspbian or Noob OS installed on it. You can get a Raspberry Pi from Amazon if you don’t already have one.

Also, I am assuming that you already have one of the supported cameras listed here:


Photo by Oscar Ivan Esquivel Arteaga on Unsplash

In this short post, I will walk you through the steps for controlling and capturing pictures from a DSLR connected to the Raspberry Pi using a USB cable. There are numerous tutorials out there for this setup but I found them to be outdated to some extent. This post covers the installation of libgphoto2 and ghoto2 from the source and also covers the steps for capturing pictures using Python scripts.


For this tutorial, I am assuming that you have a Raspberry Pi with Raspbian or Noob OS installed on it. …

Recently while working on a project, I needed to install FFmpeg on a Raspberry Pi. I also required FFServer along with FFmpeg. There are two issues here, firstly a standard binary of FFMpeg is not available for Raspberry, and secondly, FFServer is no longer packaged along with FFmpeg. It was removed after version 3.4.

This post illustrates all the steps for installing FFmpeg and FFServer on Raspberry Pi. You can get a Raspberry Pi from Amazon if you don’t already have one.

Install prerequisites

First, we will install the prerequisites for the FFmpeg library. …

Source: Covid-19 Radiography Dataset [1]

In this post, we will try to classify images from the Covid-19 Radiography Dataset[1] using a pre-trained ResNet-18 network. We will be using the PyTorch library for building our network.

Disclaimer: This model should be used only for learning purposes as Covid-19 diagnosis is an ongoing research topic.

Download the dataset

Firstly, you need to download the dataset from Kaggle. Check these steps for detailed instructions.

Data preprocessing

As a first, step download the dataset from Kaggle and create a new PyTorch dataset using the ImageFolder method.

Also, we are defining a transformer to Resize the images to 224x224 px and then converting the…

Neo4J Database visualization.

In this post, we will see how to import data to the Neo4J database from CSV files.

Recently, I worked with Graph databases for the first time and was really amazed by the capabilities it offers. Initially, I struggled to find a good resource that guides beginners to import CSV data to the Neo4J database. So I thought it might be useful to share the steps using a real-world example.


Download and install Neo4J on your machine.

Next, start Neo4J and create a new “Local Graph” named “user_sample”.

Custom Data Generator, Layer, Loss function and Learning Rate Scheduler

Photo by Nathan Dumlao on Unsplash

In this post, I will demonstrate how you can use custom building blocks for your deep learning model. Specifically, we will see how to use custom data generators, custom Keras layer, custom loss function, and a custom learning rate scheduler.

Custom Data Generator

Tensorflow provides tf.keras.preprocessing.image.ImageDataGenerator (link) which is apt for most of the use cases but in some cases you might want to use a custom data generator. You can implement the keras.utils.Sequence interface to define a custom generator for your problem statement.

Note: The __getitem__ function returns a batch of images and labels.

Once, you define the generator, you can…

Photo by Joshua Sortino on Unsplash

Tensorflow 2.0 comes with a set of pre-defined ready to use datasets. It is quite easy to use and is often handy when you are just playing around with new models.

In this short post, I will show you how you can use a pre-defined Tensorflow Dataset.


Make sure that you have tensorflow and tensorflow-datasets installed.

pip install -q tensorflow-datasets tensorflow

Using a Tensorflow dataset

In this example, we will use a small imagenette dataset.

You can visit this link to get a complete list of available datasets.

Load the dataset

We will use the tfds.builder function to load the dataset.


  • we are setting as_supervised

In this post, I will explain how to use the Android Paged list with a boundary callback. The idea is to see an example where both the network and the local database is involved. We would be using Kotlin for the whole example.


In this post, we will be using the Android Paged List to populate a RecyclerView with data from the DB. The DB is populated using network calls. Here’s the flow:

  • The RecyclerView will observe the local DB to display the items in the list.
  • The calls are paginated ie. at a time 10–20 items are loaded and…

Vivek Maskara

Grad Student at ASU | Student Researcher at The Luminosity Lab | Ex Senior Software Engineer, Zeta | Volunteer, Wikimedia Foundation

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store