Understanding the Mathematics behind Principal Component Analysis

Articles

In this post, we’re going to learn the foundations of a very famous and interesting dimensionality reduction technique known as principal component analysis (PCA).

Specifically, we’re going to learn what principal components are, how data is concentrated within them, and learn about their orthogonality properties that make extraction of important data easier.

In other words, Principal component analysis (PCA) is a procedure for reducing the dimensionality of the variable space by representing it with a few orthogonal (uncorrelated) variables that capture most of its variability.

Continue reading Understanding the Mathematics behind Principal Component Analysis

Understanding the Mathematics Behind Naive Bayes

Articles

In this post, we’re going to dive deep into one of the most popular and simple machine learning classification algorithms—the Naive Bayes algorithm, which is based on the Bayes Theorem for calculating probabilities and conditional probabilities.

Before we jump into the Naive Bayes classifier/algorithm, we need to know the fundamentals of Bayes Theorem, on which it’s based.

Continue reading Understanding the Mathematics Behind Naive Bayes

Image Classification on Android using OpenCV

Articles

This tutorial uses the popular computer vision library OpenCV for building an image classifier that runs on Android devices.

The overall process looks like this. First, the color histogram of the hue channel from the HSV color space is extracted from the image dataset. Next, an artificial neural network (ANN) is built and trained by such features and then saved for later use in an Android app. An Android Studio project is then created, which imports the Android release of OpenCV. After being imported successfully, the saved trained ANN is loaded for making predictions.

Continue reading Image Classification on Android using OpenCV

TensorFlow MLIR: An Introduction

Articles

Currently, different domains of machine learning software and hardware have different compiler infrastructures. There are number of challenges posed by this dynamic, including:

MLIR seeks to address this software fragmentation by building a reusable and extensible compiler infrastructure. In this piece, we’ll look at a conceptual view of MLIR.

MLIR seeks to promote the design and implementation of code generators, optimizers, and translators at various stages of abstraction across different application domains. The need for MLIR arose from the realization that modern machine learning frameworks have different runtimes, compilers, and graph technologies. For example, TensorFlow itself has different compilers for different frameworks.

Continue reading TensorFlow MLIR: An Introduction

Swift 5: Memory Management

Articles

It would be great if we as devs got to play with limitless memory and never had to care about working with it judiciously. Unfortunately, that isn’t true, and hence, we have to behave like a renter to the OS—rent the memory for a while, use the memory, and then hand it back.

Swift is a smart language, and it knows that many devs don’t like handing the memory back to the environment; hence, it keeps track of the allocated memory using a mechanism called ARC (automatic reference counting).

Continue reading Swift 5: Memory Management

Introduction to CameraX on Android

Articles

Developing with the camera on Android can be difficult. When we need to develop a camera-based application, we need to do a lot of manual work, and we need to do handle a lot of complex things with the Camera API, like handling preview screens, image rotations, and much more

At Google IO 2019, Google added another powerful tool for camera development in Android called CameraX as part of Jetpack.

Continue reading Introduction to CameraX on Android