Intelligent Invoice Processing Explained in Two Parts

Building an Intelligent Invoice Processing Solution: Part 1

Manual data entry presents a serious bottleneck for organizations that have a vast number of documents to process. With the coming of age of intelligent data extraction and document processing technologies (computer vision, natural language processing, machine learning, robotic process automation, etc.), they can now avail solutions that halve the labor and double the speed.

There are two major steps involved in intelligent invoice processing: text extraction from invoices and information extraction from the extracted text. We will cover these steps in a two-part series based on the intelligent invoice processing solution we built for a client.

(more…)
Node Classification Using GNN: A Case Study

Node Classification Using GNN: A Case Study

Graph Neural Networks (GNN) have proven their capability in traffic forecasting, recommendation systems, drug discovery, etc., with their ability to learn from graph representations. What I’m going to do here is take you through the working of a simple Graph Neural Network and show you how we can build a GNN in PyTorch to solve the famous Zachary Karate Club node classification problem.

(more…)
Best Practices for Building Docker Images

Best Practices for Building Docker Images

Well-made Docker images are the foundation for deploying secure and scalable Docker-based applications. Building quality images also improves image re-usability, readability, and maintainability. Here are some best practices you should follow while building Docker images.

(more…)
Device Authentication and Identity of Things

Device Authentication and Identity of Things

An ecosystem of Internet-tethered devices underpins many of the services the world relies on today. But this connectivity comes with a major caveat in that services can be brought to naught with a simple security breach. The largest ransomware attack on a major U.S. pipeline last year involved a single password leak. The breach was grave enough to force the pipeline company to temporarily halt its operations, sending fuel prices soaring for weeks.

Statista projects the total installed base of IoT-connected devices to reach 30.9 billion by 2025. Depending on the use case, a security breach can cause major disruptions or even disasters. So in the Internet of Things era, it is crucial to ensure that only trustworthy devices are connected to the Internet. This is where device authentication comes into the picture.

(more…)
Exploring the New Architecture for Android Apps

Exploring the New Architecture for Android Apps

The new architecture recommendation from Google is changing how we build Android apps. The architecture separates UI and data into distinct layers, with an optional “domain” layer in between. It doesn’t have a specific name like MVVM and is instead referred to as the “new architecture” or “layered architecture.” 

(more…)
Creating a High-Performance Image Resizer Proxy as a Dockerized Go Microservice

Creating a High-Performance Image Resizer Proxy as a Dockerized Go Microservice

While working on applications that process a large number of images, we often come across the requirement to resize images for different resolutions. An image generated by a typical 12MP mobile phone camera can be 5MB-12MB depending on the quality of the image. Once uploaded, the image must be optimized for different devices. As you know, image resizing is a complex mathematical process. The performance and quality of the optimized image really depend on the efficiency of the algorithms used. 

Let me walk you through a high-performance solution for image resizing. We will implement the solution using libvips, a fast open-source image processing library, along with Golang and expose the resize functionality via a proxy server. With even 20% resource usage improvement per image, it can make a world of difference when scaling up to millions.

(more…)
PyTorch Lightning: A Better Way to Write PyTorch Code

PyTorch Lightning: A Better Way to Write PyTorch Code

Scaling machine learning pipelines using PyTorch can be a pain. 

You typically start a PyTorch-based machine learning project by defining the model architecture. Then you run it on a CPU machine and progressively create a training pipeline. Once the pipeline is done, you run the same code on a GPU or TPU machine for faster gradient computations. You update the PyTorch code to load all the tensors to the GPU/TPU memory with a ‘.to(device)’ function call. Now comes the difficult part: what if you want to use distributed training for the same pipeline? You have to overhaul the code and test it to make sure nothing is broken.

Why sweat the small stuff? Let’s use PyTorch Lightning instead.

(more…)
Introduction to Multimodal Deep Learning

Multimodal Deep Learning—Challenges and Potential

Modality refers to how a particular subject is experienced or represented. Our experience of the world is multimodal—we see, feel, hear, smell and taste things. Multimodal deep learning tries to link and extract information from data of different modalities. Just as the human brain processes signals from all senses at once, a multimodal deep learning model extracts relevant information from different types of data in one go.

(more…)