--- title: Object Detection ECS emoji: 🌖 colorFrom: purple colorTo: green sdk: gradio sdk_version: 5.5.0 app_file: app.py pinned: false short_description: Object detection ECS --- # Object detection via ECS endpoints [![](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/) [![Docker Pulls](https://img.shields.io/docker/pulls/cvachet/object-detection-ecs)](https://hub.docker.com/repository/docker/cvachet/object-detection-ecs) ![example workflow](https://github.com/clementsan/object_detection_ecs/actions/workflows/publish_docker_image.yml/badge.svg) ![example workflow](https://github.com/clementsan/object_detection_ecs/actions/workflows/sync_HFSpace.yml/badge.svg) **Aim: AI-driven object detection task** - Front-end: user interface via Gradio library - Back-end: use of AWS ECS endpoints to run Machine Learning models ---- **Table of contents:** - [Front-end user interface](#1-front-end-user-interface) - [Environment variables](#11-environment-variables) - [Local execution](#12-local-execution) - [Back-end Machine Learning models](#2-back-end-machine-learning-models) - [Information on ML models](#21-information-on-ml-models) - [Deployment on AWS ECS](#22-information-on-aws-ecs-deployment) - [Deployment on Hugging Face](#3-deployment-on-hugging-face) - [Deployment on Docker Hub](#4-deployment-on-docker-hub) ---- ## 1. Front-end user interface ### 1.1. Environment variables This web app uses two environment variables, corresponding to the endpoints for the deployed machine learning models (cf. [Section 2 - Back-end ML models](#2-back-end-ml-models)) Environment variables: - AWS_DETR_URL: endpoint for DETR model - AWS_YOLOS_URL: endpoint for YOLOS model ### 1.2. Local execution Use of Gradio library for web interface Command line: > python3 app.py Note: The Gradio app should now be accessible at http://localhost:7860 ## 2. Back-end machine learning models Machine Learning (ML) models are available on Docker Hub and have been deployed to AWS ECS (Elastic Container Service) ### 2.1. Information on ML models **Github repos:** - DETR API: https://github.com/clementsan/object_detection_detr_api - YOLOS API: https://github.com/clementsan/object_detection_yolos_api **Docker hub containers:** - DETR API: https://hub.docker.com/r/cvachet/object-detection-detr-api - YOLOS API: https://hub.docker.com/r/cvachet/object-detection-yolos-api ### 2.2 Information on AWS ECS deployment ECS: Elastic Container Service
Steps after docker images are available on Docker Hub ### Step 1. Create a new ECS task definition - Task name (e.g. ObjectDetectionDETRTask) - Infrastructure requirement: - Launch type: ```AWS Fargate``` - Architecture: ```Linux/X86_64``` - Task size: ```0.5 CPU, 3GB memory``` - Container: - Container name: (e.g. ```object-detection-detr```) - Image uri: point to Docker image URI (e.g. ```cvachet/object-detection-detr-api```) - Port mapping: assess port number (e.g. ```port 8000, TCP protocol```) ### Step 2. Create a new ECS cluster - Cluster name (e.g. ```ObjectDetectionCluster```) ### Step 3. Add a new service to the cluster - Compute configuration - Use capacity provider strategy (e.g. using Fargate or Fargate_spot) - Deployment configuration - Application Type: Service - Task Family: Select task definition family from prior instance (e.g. ```ObjectDetectionDETRTask```) - Assign a Service Name: (e.g. ```object-detection-detr-api```) ### Step 4. Update security group for new service - Go to Cluster -> service -> task -> configuration and networking - Click on ```Security Group``` - Adjust rules for inbound traffic (e.g. traffic only from my_ip)
### 3. Deployment on Hugging Face This web application has been deployed on Hugging Face. HF Space URL: https://huggingface.co./spaces/cvachet/object_detection_ecs ### 4. Deployment on Docker Hub This web application has been deployed on Docker Hub. URL: https://hub.docker.com/r/cvachet/object-detection-ecs