ObjectDetection / README.md
JaishnaCodz's picture
Sync from GitHub
423a25e
|
raw
history blame
4.56 kB

Transformer-Based Object Detection

This project implements an object detection system powered by state-of-the-art transformer models, including DETR (DEtection TRansformer) and YOLOS (You Only Look One-level Series). The system supports object detection from both uploaded images and image URLs. It comes with a user-friendly Gradio web interface and a FastAPI API for automated processing.

Try the demo on Hugging Face: [Demo Link].

Supported Models

Here’s a list of the available models for different detection and segmentation tasks:

DETR (DEtection TRansformer):

  • facebook/detr-resnet-50: Fast and efficient object detection.
  • facebook/detr-resnet-101: More accurate, but slower than ResNet-50.
  • facebook/detr-resnet-50-panoptic (currently has bugs): For panoptic segmentation. Detects and segments scenes.
  • facebook/detr-resnet-101-panoptic (currently has bugs): High-accuracy segmentation for complex scenes.

YOLOS (You Only Look One-level Series):

  • hustvl/yolos-tiny: Lightweight and quick. Ideal for environments with limited resources.
  • hustvl/yolos-base: Strikes a balance between speed and accuracy.

Key Features

  • Image Upload: Upload an image from your device to run detection via the Gradio interface.
  • URL Input: Input an image URL for detection through Gradio or the FastAPI.
  • Model Selection: Choose between DETR and YOLOS models for object detection or segmentation.
  • Object Detection: Detects objects and shows bounding boxes with confidence scores.
  • Panoptic Segmentation: Available with certain models for detailed scene segmentation using colored masks.
  • Image Info: Displays metadata such as size, format, aspect ratio, and file size.
  • API Access: Use the FastAPI /detect endpoint for programmatic processing.

How to Get Started

1. Cloning the Repository

Prerequisites:

  • Python 3.8 or higher
  • pip to install dependencies

Clone and Set Up:

git clone https://github.com/NeerajCodz/ObjectDetection.git
cd ObjectDetection
pip install -r requirements.txt

Run the Application:

  • FastAPI: Start the server with:
uvicorn objectdetection:app --reload
  • Gradio Interface: Launch with:
python app.py

Access the Application:

  • FastAPI: Navigate to http://localhost:8000 to interact with the API or view the Swagger UI.
  • Gradio: The Gradio interface will be available at http://127.0.0.1:7860 (URL will show up in the console).

2. Running via Docker

Prerequisites:

  • Install Docker on your machine (if you haven’t already).

Set Up with Docker:

  1. Clone the repository (if you haven’t):
git clone https://github.com/NeerajCodz/ObjectDetection.git
cd ObjectDetection
  1. Build the Docker image:
docker build -t objectdetection:latest .
  1. Run the container:
docker run -p 5000:5000 objectdetection:latest

Access the app at http://localhost:5000.

3. Try the Online Demo

Test the demo directly on Hugging Face’s Spaces: Object Detection Demo

API Usage

Use the /detect endpoint in FastAPI for image processing.

POST /detect

Parameters:

  • file (optional): Image file (must be of type image/*).
  • image_url (optional): URL of the image.
  • model_name (optional): Choose the model (e.g., facebook/detr-resnet-50, hustvl/yolos-tiny, etc.).

Example Request Body:

{
  "image_url": "https://example.com/image.jpg",
  "model_name": "facebook/detr-resnet-50"
}

Example Response:

{
  "image_url": "data:image/png;base64,...",
  "detected_objects": ["person", "car"],
  "confidence_scores": [0.95, 0.87],
  "unique_objects": ["person", "car"],
  "unique_confidence_scores": [0.95, 0.87]
}

Development & Contributions

To contribute or modify the project:

  1. Clone the repository:
git clone https://github.com/NeerajCodz/ObjectDetection.git
cd ObjectDetection
  1. Install dependencies:
pip install -r requirements.txt
  1. Run FastAPI or Gradio:
  • FastAPI: uvicorn objectdetection:app --reload
  • Gradio: python app.py

Access the app on http://localhost:8000 (FastAPI) or the Gradio interface at the displayed URL.

Contributing

Contributions are always welcome! Feel free to submit pull requests or open issues for bug fixes, new features, or improvements.