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:
```bash
git clone https://github.com/NeerajCodz/ObjectDetection.git
cd ObjectDetection
pip install -r requirements.txt
```
#### Run the Application:
* **FastAPI**: Start the server with:
```bash
uvicorn objectdetection:app --reload
```
* **Gradio Interface**: Launch with:
```bash
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):
```bash
git clone https://github.com/NeerajCodz/ObjectDetection.git
cd ObjectDetection
```
2. Build the Docker image:
```bash
docker build -t objectdetection:latest .
```
3. Run the container:
```bash
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**](https://huggingface.co/spaces/NeerajCodz/ObjectDetection)
## 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:
```json
{
"image_url": "https://example.com/image.jpg",
"model_name": "facebook/detr-resnet-50"
}
```
Example Response:
```json
{
"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:
```bash
git clone https://github.com/NeerajCodz/ObjectDetection.git
cd ObjectDetection
```
2. Install dependencies:
```bash
pip install -r requirements.txt
```
3. 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.