Clement Vachet
docs: Improve documentation
58d3f79
|
raw
history blame
3.38 kB
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

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

Menu:

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

1.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

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)