Spaces:
Runtime error
Runtime error
Commit
Β·
4f8340a
1
Parent(s):
c4c0f29
Add comprehensive API documentation and testing functionality
Browse files- Add detailed API endpoint information in the interface
- Include request/response format examples for Thunkable integration
- Add API test function to verify detection pipeline works
- Explain that 'No API found' message is normal for Gradio 4.36.0
- Show API test results in the interface for debugging
app.py
CHANGED
|
@@ -339,6 +339,26 @@ def test_model_loading():
|
|
| 339 |
print(f"β Traceback: {traceback.format_exc()}")
|
| 340 |
return False
|
| 341 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 342 |
# Load models on startup
|
| 343 |
print("Loading RetinaFace models...")
|
| 344 |
print("Running model loading test...")
|
|
@@ -358,8 +378,12 @@ def create_interface():
|
|
| 358 |
|
| 359 |
if model_loaded:
|
| 360 |
gr.Markdown("β
**Status**: Models loaded successfully!")
|
|
|
|
|
|
|
|
|
|
| 361 |
else:
|
| 362 |
gr.Markdown("β **Status**: Error loading models")
|
|
|
|
| 363 |
|
| 364 |
with gr.Row():
|
| 365 |
with gr.Column():
|
|
@@ -390,13 +414,48 @@ def create_interface():
|
|
| 390 |
)
|
| 391 |
|
| 392 |
gr.Markdown("""
|
| 393 |
-
## API
|
| 394 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 395 |
```json
|
| 396 |
{
|
| 397 |
-
"data": [
|
|
|
|
|
|
|
|
|
|
| 398 |
}
|
| 399 |
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 400 |
""")
|
| 401 |
|
| 402 |
return demo
|
|
|
|
| 339 |
print(f"β Traceback: {traceback.format_exc()}")
|
| 340 |
return False
|
| 341 |
|
| 342 |
+
# API test function
|
| 343 |
+
def test_api_endpoint():
|
| 344 |
+
"""Test function to verify API is working"""
|
| 345 |
+
try:
|
| 346 |
+
# Create a simple test image
|
| 347 |
+
import numpy as np
|
| 348 |
+
test_img = np.random.randint(0, 255, (100, 100, 3), dtype=np.uint8)
|
| 349 |
+
test_pil = Image.fromarray(test_img)
|
| 350 |
+
|
| 351 |
+
# Test the detect_faces function directly
|
| 352 |
+
result_img, result_text = detect_faces(test_pil, "mobilenet", 0.5, 0.4)
|
| 353 |
+
|
| 354 |
+
if result_img is not None:
|
| 355 |
+
return "β
API function test passed - detection pipeline works"
|
| 356 |
+
else:
|
| 357 |
+
return f"β API function test failed: {result_text}"
|
| 358 |
+
|
| 359 |
+
except Exception as e:
|
| 360 |
+
return f"β API test error: {str(e)}"
|
| 361 |
+
|
| 362 |
# Load models on startup
|
| 363 |
print("Loading RetinaFace models...")
|
| 364 |
print("Running model loading test...")
|
|
|
|
| 378 |
|
| 379 |
if model_loaded:
|
| 380 |
gr.Markdown("β
**Status**: Models loaded successfully!")
|
| 381 |
+
# Test API functionality
|
| 382 |
+
api_test_result = test_api_endpoint()
|
| 383 |
+
gr.Markdown(f"π§ **API Test**: {api_test_result}")
|
| 384 |
else:
|
| 385 |
gr.Markdown("β **Status**: Error loading models")
|
| 386 |
+
gr.Markdown("π§ **API Test**: Cannot test API - models not loaded")
|
| 387 |
|
| 388 |
with gr.Row():
|
| 389 |
with gr.Column():
|
|
|
|
| 414 |
)
|
| 415 |
|
| 416 |
gr.Markdown("""
|
| 417 |
+
## π API Information
|
| 418 |
+
|
| 419 |
+
**Your API is automatically available at these endpoints:**
|
| 420 |
+
|
| 421 |
+
### Main API Endpoint
|
| 422 |
+
```
|
| 423 |
+
POST /api/predict
|
| 424 |
+
```
|
| 425 |
+
|
| 426 |
+
**Request format:**
|
| 427 |
+
```json
|
| 428 |
+
{
|
| 429 |
+
"data": [
|
| 430 |
+
"<image_as_PIL_or_path>",
|
| 431 |
+
"mobilenet",
|
| 432 |
+
0.5,
|
| 433 |
+
0.4
|
| 434 |
+
]
|
| 435 |
+
}
|
| 436 |
+
```
|
| 437 |
+
|
| 438 |
+
**Response format:**
|
| 439 |
```json
|
| 440 |
{
|
| 441 |
+
"data": [
|
| 442 |
+
"<processed_image>",
|
| 443 |
+
"**Detection Results:**\\n- **Faces Detected:** 2\\n..."
|
| 444 |
+
]
|
| 445 |
}
|
| 446 |
```
|
| 447 |
+
|
| 448 |
+
### For Thunkable Integration:
|
| 449 |
+
- **URL:** `https://aditya-g07-retinaface-face-detection.hf.space/api/predict`
|
| 450 |
+
- **Method:** POST
|
| 451 |
+
- **Content-Type:** application/json
|
| 452 |
+
|
| 453 |
+
### API Status:
|
| 454 |
+
- β
**Gradio auto-generates API endpoints**
|
| 455 |
+
- β
**No additional configuration needed**
|
| 456 |
+
- β
**"No API found" message is normal for Gradio 4.36.0**
|
| 457 |
+
|
| 458 |
+
**Note:** The "No API found" error in the UI doesn't affect API functionality.
|
| 459 |
""")
|
| 460 |
|
| 461 |
return demo
|