Solution architecture: Image classification with convolutional neural networks

Lean manufacturing, cost control and waste reduction are imperative for manufacturing to remain competitive. In circuit-board manufacturing, faulty boards can cost manufacturers money and productivity. Assembly lines rely on human operators to quickly review and validate boards flagged as potentially faulty by assembly-line test machines.

This solution analyses electronic component images generated by assembly-line cameras in a circuit-board manufacturing factory and detects their error status. The goal is to minimise or remove the need for human intervention. The solution builds an image classification system using a convolutional neural network with 50 hidden layers, pretrained on 350,000 images in an ImageNet dataset to generate visual features of the images by removing the last network layer. These features are then used to train a boosted decision tree to classify the image as “pass” or “fail” and final scoring conducted on edge machines at the factory. The classification performance results are good (time-based cross-validation AUC>0.9), which indicates that the solution is suitable to drastically minimise human intervention for electronic-component failure detection in assembled circuit boards.

Using this solution to automate failure detection instead of relying solely on human operators helps improve the identification of faulty electronic components and boost productivity.

Image classification with convolutional neural networksExplore transfer learning, convolutional neural networks and gradient-boosting decision tree algorithms.

Implementation guidance

Products/Description Documentation

Azure Blob Storage

Data is ingested and stored in Azure Blob Storage.

GPU-based Azure Data Science Virtual Machine

The core development environment is the Azure Ubuntu-based GPU DSVM. The data is pulled from blob onto an Azure virtual hard disk (VHD) attached to the DSVM. On that VHD, the data is processed, the images are featurised using a Deep Neural Network and a Boosted Tree model is trained. DSVM IPython Notebook server is used for solution development.

Azure Batch AI Training (BAIT)

As an alternative to DSVM-based training, for computing-intensive jobs that use deep-learning image processing, we use BAIT as a managed Azure Batch framework for parallel and distributed computing using clusters of GPU compute nodes.

Microsoft Machine Learning for Apache Spark HDInsight Spark Cluster

As an alternative to DSVM-based training, for big datasets, we use MMLSpark to build a highly scalable training solution.

Azure Container Registry

The model and web application are packaged into a Docker image and written to Azure Container Registry.

Azure Machine Learning Model Management Service

Azure Machine Learning Model Management service is used to deploy and manage the final model on a VM and to scale out using Azure Kubernetes Service to a Kubernetes managed Azure cluster. A predictive web service and a Java ETL service are also written onto the VM, each in its own container.

Azure Kubernetes Service (AKS)

Deployment for this solution uses Azure Kubernetes Service (AKS) running a Kubernetes-managed cluster. The containers are deployed from images stored in Azure Container Registry.