Samridha Murali

ML QA @ Scale AI | Interested in Cyber Security, Computer Vision, 3D Reconstruction | University of Maryland

3D-Ready Web Application

3D-Ready is a web application that allows users to upload photos and generate high-fidelity 3D models of house interiors. This documentation provides an overview of the application’s architecture, setup, and usage.

Table of Contents

Overview

3D-Ready provides a complete end-to-end solution for generating and displaying 3D models from user-uploaded photos. It is optimized for the real estate industry to provide detailed 3D models of house interiors.

Architecture

Product 3

The application consists of the following components:

Frontend Setup

The frontend of the 3D-Ready application is built using React. Development was carried out using Google’s Cloud Shell Editor, which provides a cloud-based integrated development environment requiring no local installations.

Backend Setup

The backend of the 3D-Ready application is implemented using FastAPI. The backend setup includes running FastAPI with Gunicorn and managing the process using Supervisor for production readiness.

FastAPI

FastAPI is used to create the RESTful API for the backend. It provides high performance. 3D-Ready’s magic 3D model generator is sitting behind an API endpoint.

AWS Services

The 3D-Ready application leverages various AWS services to ensure a scalable, reliable, and efficient workflow.

S3

DynamoDB

Lambda

API Gateway

Amplify

Route 53

CloudFront

Detailed Integration

These services work together to provide a seamless and efficient workflow for the 3D-Ready application, ensuring high availability, scalability, and performance.

Deployment

Frontend Deployment

The application is hosted on AWS Amplify, utilizing its continuous deployment pipeline for seamless updates.

To set up the frontend, clone the repository within the Google Cloud Shell Editor, configure AWS Amplify for hosting, and push your changes. AWS Amplify automatically detects the changes, builds the project, and deploys it to the configured hosting environment.

Backend Deployment

Gunicorn

Gunicorn (Green Unicorn) is a Python WSGI HTTP server for UNIX. It is used to serve the FastAPI application in a production environment. Gunicorn handles multiple requests simultaneously, providing robust performance and scalability.

Supervisor

Supervisor is a process control system that allows for monitoring and controlling processes on UNIX-like operating systems. It ensures that the FastAPI application, served by Gunicorn, runs continuously and restarts automatically if it crashes. Supervisor also facilitates log collection for troubleshooting.

Usage

  1. Navigate to the deployed frontend URL.
  2. Upload photos through the interface.
  3. The backend processes the photos and generates a 3D model.
  4. The frontend polls for the status of the 3D model generation every 10 seconds.
  5. Once the model is ready, the frontend displays the 3D model URL.

Ideas Tried That Didn’t Work Out

During the development of the 3D-Ready application, we explored several approaches to optimize and scale the backend processing. One notable approach involved building a Docker image for the FastAPI application and pushing it to AWS Container Registry for use with AWS SageMaker. The goal was to leverage SageMaker’s powerful machine learning capabilities for 3D model generation.

However, we encountered size limitations with the Docker image, which prevented us from deploying it effectively via SageMaker. The image size exceeded the allowable limits, leading to issues with deployment and scalability. As a result, we decided to adopt an alternative approach using AWS Lambda for backend processing, which proved to be more efficient and scalable for our needs.