Spaces:
Sleeping
Sleeping
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:
- 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
- Launch type:
- 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
)
- Container name: (e.g.
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)