Smart-Statue-Detector / DOCUMENTATION .md
morefaat69's picture
Update DOCUMENTATION .md
e2d961a verified
|
Raw
History Blame Contribute Delete
5.43 kB

Smart Statue Detector API - Documentation

Overview

REST API built with FastAPI + YOLOv8 for detecting persons and Egyptian statues in images.

  • 🟢 Green box → Person
  • 🔴 Red box → Statue (with real name)

Base URL:

https://morefaat69-smart-statue-detector.hf.space

Endpoints

GET /

Health check - تأكد إن الـ API شغال.

Response:

{
  "message": "AI API is running "
}

POST /predict-image

Upload an image → get detections + annotated output image.

Request

Field Type Description
file multipart/form-data Image file (jpg, jpeg, png)

Response

Field Type Description
total_count int Total detections (persons + statues)
persons int Number of persons detected
statues int Number of statues detected
output_image_url string URL of annotated image (temporary)
output_image_base64 string Base64 encoded annotated image
detections array List of all detections

Detection Object

Field Type Description
type string "person" or "statue"
name string "Person" or statue name (e.g. "Hathor Capital")
confidence float Confidence score (0.0 → 1.0)
bbox array Bounding box [x1, y1, x2, y2]

Example Response

{
  "total_count": 2,
  "persons": 1,
  "statues": 1,
  "output_image_url": "https://morefaat69-smart-statue-detector.hf.space/uploads/output_test.jpeg",
  "output_image_base64": "data:image/jpeg;base64,/9j/4AAQSkZJRgAB...",
  "detections": [
    {
      "type": "person",
      "name": "Person",
      "confidence": 0.9128,
      "bbox": [56, 399, 577, 892]
    },
    {
      "type": "statue",
      "name": "Hathor Capital",
      "confidence": 0.3147,
      "bbox": [329, 0, 683, 721]
    }
  ]
}

How to Connect (Integration Examples)

cURL

curl -X POST "https://morefaat69-smart-statue-detector.hf.space/predict-image" \
  -H "accept: application/json" \
  -F "file=@your_image.jpg;type=image/jpeg"

Python

import requests
import base64
from PIL import Image
from io import BytesIO

url = "https://morefaat69-smart-statue-detector.hf.space/predict-image"

with open("your_image.jpg", "rb") as f:
    response = requests.post(url, files={"file": f})

data = response.json()

print(f"Persons: {data['persons']}")
print(f"Statues: {data['statues']}")

for d in data["detections"]:
    print(f"{d['type']}{d['name']} ({d['confidence']:.2%})")

# عرض الصورة الناتجة
img_data = base64.b64decode(data["output_image_base64"].split(",")[1])
img = Image.open(BytesIO(img_data))
img.show()

JavaScript / React

const detectObjects = async (imageFile) => {
  const formData = new FormData();
  formData.append("file", imageFile);

  const response = await fetch(
    "https://morefaat69-smart-statue-detector.hf.space/predict-image",
    {
      method: "POST",
      body: formData,
    }
  );

  const data = await response.json();

  console.log(`Persons: ${data.persons}`);
  console.log(`Statues: ${data.statues}`);

  // عرض الصورة الناتجة مباشرة
  return (
    <div>
      <img src={data.output_image_base64} alt="Detection Result" />
      {data.detections.map((d, i) => (
        <p key={i}>
          {d.type === "statue" ? "🏛️" : "👤"} {d.name} — {(d.confidence * 100).toFixed(1)}%
        </p>
      ))}
    </div>
  );
};

Flutter / Dart

import 'dart:convert';
import 'dart:io';
import 'package:http/http.dart' as http;

Future<Map<String, dynamic>> detectObjects(File imageFile) async {
  final uri = Uri.parse(
    'https://morefaat69-smart-statue-detector.hf.space/predict-image'
  );

  final request = http.MultipartRequest('POST', uri);
  request.files.add(
    await http.MultipartFile.fromPath('file', imageFile.path)
  );

  final response = await request.send();
  final body = await response.stream.bytesToString();
  final data = jsonDecode(body);

  print('Persons: ${data['persons']}');
  print('Statues: ${data['statues']}');

  // فك الـ Base64 وعرض الصورة
  final imageBytes = base64Decode(
    data['output_image_base64'].split(',')[1]
  );

  return data;
}

// عرض الصورة في Flutter
Image.memory(imageBytes)

Models

Model Purpose Classes
yolov8n.pt Person detection 1 class: Person
best.pt Egyptian statue detection 84 classes

Supported Statues (84 classes)

The model can identify statues including: Akhenaten, Amenhotep III, Nefertiti, Sphinx, Mask of Tutankhamun, Great Pyramids of Giza, Colossal Statue of Ramesses II, Hathor Capital, Seated Statue of Djoser, Statue of Khafre ... and 74 more.


Configuration

Parameter Value Description
CONF_THRESHOLD 0.25 Minimum confidence to show detection
Person box color 🟢 Green (0,255,0) BGR format
Statue box color 🔴 Red (0,0,255) BGR format
Max image size No limit Processed as-is

Interactive Docs

Swagger UI available at:

https://morefaat69-smart-statue-detector.hf.space/docs