Clement Vachet
docs: edit style
ce38001

A newer version of the Gradio SDK is available: 5.20.1

Upgrade
metadata
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

Docker Pulls

example workflow example workflow

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 - Environment variables - Local execution - Back-end Machine Learning models - Information on ML models - Deployment on AWS ECS - Deployment on Hugging Face - 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)

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:

Docker hub containers:

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