Indicode.io header image

Indicode.io

In December 2020, I co-founded Indicode.io with my friends Nick & Eryl to improve manufacturing quality control through deep learning. Our goal was to create a defect detection system that could work with manufacturers’ existing hardware while leveraging deep learning to identify issues. After two years of development and market exploration, we made the difficult decision to wind down the company.

Our Technical Journey

Initial Prototyping with Autoencoders

We started with autoencoders as anomaly detectors, training on synthetic data to mimic real-world scenarios. Autoencoders were an accessible first step, but we quickly noticed their limitations. Although they could detect certain types of anomalies, they didn’t generalize well to diverse manufacturing defects, which led us to reevaluate our approach.

Moving to Advanced Anomaly Detection with PaDiM

To address these challenges, we explored more sophisticated anomaly detection models, eventually selecting PaDiM (Patch Distribution Modeling) due to its effective use of the Mahalanobis distance in detecting anomalies. PaDiM operates by calculating this distance from a multivariate Gaussian distribution, allowing for more accurate anomaly detection. However, open-source versions of PaDiM weren’t optimized for our use case—they required storing every incoming sample’s latent representation and only calculated the multivariate Gaussian at the end of training, creating a substantial memory bottleneck.

Incremental Variance Calculation: To make PaDiM more efficient for edge devices, I enhanced the model by implementing an incremental approach to calculating the Gaussian parameters. This eliminated the need to store every sample, significantly reducing memory usage and enabling real-time processing on limited hardware.

Segmentation of the MVTec dataset using a PaDiM model

Building the Hardware Demo Platform

While refining our model, we also developed a hardware demo platform that incorporated third-party industrial cameras and specialized lighting. This platform became a powerful tool to demonstrate our system in real-world conditions to potential buyers. By integrating with existing industrial equipment, we could showcase our technology’s potential in action, building credibility and creating a tangible experience for skeptical prospects.

Hardware demo showing real-time defect detection on our edge test platform

Model Optimization and Edge Deployment

A major challenge for us was ensuring that our models could operate efficiently on consumer-grade hardware. We chose to deploy on Intel NUC i3 8th gen devices, which are affordable and widely available. I utilized ONNX to compress and optimize the PaDiM models, achieving inference times of 50ms or less. This optimization allowed our solution to run effectively within existing manufacturing workflows, removing the need for costly hardware upgrades.

By optimizing our models for edge deployment, we provided a highly accessible solution for manufacturers with limited IT infrastructure.

The Indicode Web Application

To streamline defect detection and provide a comprehensive solution for users, we developed a web application using Django, PyTorch Lightning, Celery, and DigitalOcean. This platform enabled users to manage their defect detection data, train models, and deploy them seamlessly.

Key Features of the Platform

The application offered an end-to-end experience for users, allowing them to train, deploy, and monitor models without needing to leave the platform. By building this comprehensive system, we addressed the need for both model management and real-time analytics, creating a valuable tool that could grow with users’ needs.

Image
The Indicode web application

Where We Stumbled

Despite our technical progress, entering the manufacturing industry proved more difficult than anticipated:

  1. Long Sales Cycles: What we thought would be 3-month sales cycles stretched into 6+ months of conversations and demonstrations.

  2. Trust Deficit: Manufacturers were hesitant to work with an unknown startup, even when our technology showed promise.

  3. Misaligned Incentives: Production managers had little motivation to change their existing processes, often seeing potential disruption as a greater risk than the potential benefits.

  4. PoC Paralysis: We were frequently stuck in proof-of-concept projects that rarely converted into long-term partnerships.

Key Lessons Learned

Reflecting on our journey, several critical lessons became clear:

Technical Growth

The Indicode.io project taught me a lot about:

Tech Stack

Frontend & UI

Backend & Storage

Infrastructure

Conclusion

Although Indicode didn’t succeed, it reshaped my understanding of building startups, particularly in a complex field like manufacturing. While good technology is essential, having a market-ready product requires a deep understanding of customer needs and sales processes. Despite the hurdles, I’m proud of what we achieved with Indicode.io and the lessons it provided for future projects.