Spaces:
Running
Running
| # 🚀 Object Detection with Transformer Models | |
| This project provides an object detection system using state-of-the-art transformer models, such as **DETR (DEtection TRansformer)** and **YOLOS (You Only Look One-level Series)**. The system can detect objects from uploaded images or image URLs, and it supports different models for detection and segmentation tasks. It includes a Gradio-based web interface and a FastAPI-based API for programmatic access. | |
| You can try the demo online on Hugging Face: [Demo Link](https://huggingface.co/spaces/NeerajCodz/ObjectDetection). | |
| ## Models Supported | |
| The following models are supported, as defined in the application: | |
| - **DETR (DEtection TRansformer)**: | |
| - `facebook/detr-resnet-50`: DETR with ResNet-50 backbone for object detection. Fast and accurate for general use. | |
| - `facebook/detr-resnet-101`: DETR with ResNet-101 backbone for object detection. More accurate but slower than ResNet-50. | |
| - `facebook/detr-resnet-50-panoptic`(currently has bugs): DETR with ResNet-50 for panoptic segmentation. Detects objects and segments scenes. | |
| - `facebook/detr-resnet-101-panoptic`(currently has bugs): DETR with ResNet-101 for panoptic segmentation. High accuracy for complex scenes. | |
| - **YOLOS (You Only Look One-level Series)**: | |
| - `hustvl/yolos-tiny`: YOLOS Tiny model. Lightweight and fast, ideal for resource-constrained environments. | |
| - `hustvl/yolos-base`: YOLOS Base model. Balances speed and accuracy for object detection. | |
| ## Features | |
| - **Image Upload**: Upload images from your device for object detection via the Gradio interface. | |
| - **URL Input**: Input an image URL for detection through the Gradio interface or API. | |
| - **Model Selection**: Choose between DETR and YOLOS models for detection or panoptic segmentation. | |
| - **Object Detection**: Detects objects and highlights them with bounding boxes and confidence scores. | |
| - **Panoptic Segmentation**: Some models (e.g., DETR panoptic variants) support detailed scene segmentation with colored masks. | |
| - **Image Properties**: Displays image metadata such as format, size, aspect ratio, file size, and color statistics. | |
| - **API Access**: Use the FastAPI endpoint `/detect` to programmatically process images and retrieve detection results. | |
| ## How to Use | |
| ### 1. **Normal Git Clone Method** | |
| Follow these steps to set up the application locally: | |
| #### Prerequisites | |
| - Python 3.8 or higher | |
| - Install dependencies using `pip` | |
| #### Clone the Repository | |
| ```bash | |
| git clone https://github.com/NeerajCodz/ObjectDetection.git | |
| cd ObjectDetection | |
| ``` | |
| #### Install Dependencies | |
| Install the required dependencies from `requirements.txt`: | |
| ```bash | |
| pip install -r requirements.txt | |
| ``` | |
| #### Run the Application | |
| Start the FastAPI server using uvicorn: | |
| ```bash | |
| uvicorn objectdetection:app --reload | |
| ``` | |
| Alternatively, launch the Gradio interface by running the main script: | |
| ```bash | |
| python app.py | |
| ``` | |
| #### Access the Application | |
| - For FastAPI: Open your browser and navigate to `http://localhost:8000` to use the API or view the Swagger UI. | |
| - For Gradio: The Gradio interface URL will be displayed in the console (typically `http://127.0.0.1:7860`). | |
| ### 2. **Running with Docker** | |
| If you prefer to use Docker to set up and run the application, follow these steps: | |
| #### Prerequisites | |
| - Docker installed on your machine. If you don’t have Docker, download and install it from [here](https://www.docker.com/get-started). | |
| #### Download the docker Image | |
| First, Pull the docker Image: | |
| ```bash | |
| docker pull neerajcodz/objectdetection:latest | |
| ``` | |
| #### Run the Docker Container | |
| Once the image is built, run the application using this command: | |
| ```bash | |
| docker run -d -p 8080:80 neerajcodz/objectdetection:latest | |
| ``` | |
| This will start the application on port 8080. | |
| Open your browser and go to `http://localhost:8080` to access the interface. | |
| ### 3. **Demo** | |
| You can try the demo directly online through Hugging Face's Spaces: | |
| [Object Detection Demo](https://huggingface.co/spaces/NeerajCodz/ObjectDetection) | |
| ## Using the API (Instable) | |
| You can interact with the application via the FastAPI `/detect` endpoint to send images and get detection results. | |
| **Endpoint**: `/detect` | |
| **POST**: `/detect` | |
| **Parameters**: | |
| - `file`: (optional) Image file (must be of type `image/*`). | |
| - `image_url`: (optional) URL of the image. | |
| - `model_name`: (optional) Choose from `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" | |
| } | |
| ``` | |
| **Response**: | |
| The response includes a base64-encoded image with detections, detected objects, confidence scores, and unique objects with their scores. | |
| ```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 Setup | |
| If you'd like to contribute or modify the application: | |
| 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 the FastAPI server or Gradio interface: | |
| ```bash | |
| uvicorn objectdetection:app --reload | |
| ``` | |
| or | |
| ```bash | |
| python app.py | |
| ``` | |
| 4. Open your browser and navigate to `http://localhost:8000` (FastAPI) or the Gradio URL (typically `http://127.0.0.1:7860`). | |
| ## Contributing | |
| Contributions are welcome! Feel free to open issues or submit pull requests for bug fixes or new features on the [GitHub repository](https://github.com/NeerajCodz/ObjectDetection). | |