Welcome to my latest project, where I designed and built a containerized object detection system using multiple technologies. This system allows users to upload images, make prediction requests, and visualize predictions using uploaded images and bounding box JSON masks. It is a full-stack web application with numerous features such as model management, user authentication, dashboard visualization, logging, and more. In this project, I utilized a range of technologies, including Flask, Tensorflow Serving, Node.js, React.js, Express.js, MongoDB, and Docker, to build a production-ready web app that is efficient, scalable, and flexible. I believe this project is an excellent example of how different technologies can be combined to create a powerful and robust web application.
Tech Stack
- Flask is a micro web framework in Python used for building web applications. In this project, it was used to communicate with TFServing and serve object detection models through a dynamic predict endpoint.
- TensorFlow Serving (GPU support) is a flexible, high-performance serving system for machine learning models. It was utilized to serve multiple object detection models via gRPC and REST.
- Node.js is a JavaScript runtime built on Chrome’s V8 JavaScript engine. It was used for model management pages, versioning, upgrade, and rollback functionalities.
- React.js is a JavaScript library for building user interfaces. It was used to build the web interface and enable users to upload images, make prediction requests, and visualize predictions.
- Express.js is a web application framework for Node.js. It was utilized for creating the API endpoints that connect the web interface and the Flask API.
- MongoDB is a NoSQL document-oriented database program. It was used to store models, predictions, image URLs, users, and ratings.
- Docker is an open-source platform that allows developers to create, deploy, and run applications in containers. All microservices were containerized, including TFServing-GPU, Flask API, Node.js, and MongoDB.
- Nginx is an open-source web server that can also be used as a reverse proxy, load balancer, and HTTP cache. It was used as a reverse proxy in this project.
- Model Zoo: a huge selection of pre-trained object detection models ready to use