|
|
import requests |
|
|
import json |
|
|
import time |
|
|
import numpy as np |
|
|
from datetime import datetime |
|
|
|
|
|
def log(m): print(f"[{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}] {m}", flush=True) |
|
|
|
|
|
def benchmark_fixed_api(): |
|
|
"""Benchmark the fixed high density API""" |
|
|
base_url = "http://localhost:8001" |
|
|
|
|
|
test_scenes = [ |
|
|
"a car near a building", |
|
|
"a person walking a dog in a park", |
|
|
"a beautiful sunset over majestic mountains", |
|
|
"a tree beside a house with flowers", |
|
|
"a bird flying over water near mountains", |
|
|
"a city street with cars and buildings", |
|
|
"a peaceful lake surrounded by trees", |
|
|
"a modern building with glass windows", |
|
|
"a mountain landscape with trees and water", |
|
|
"a person sitting on a bench in a garden" |
|
|
] |
|
|
|
|
|
log("π BENCHMARKING FIXED HIGH DENSITY API...") |
|
|
|
|
|
results = [] |
|
|
|
|
|
for scene in test_scenes: |
|
|
try: |
|
|
start_time = time.time() |
|
|
response = requests.post( |
|
|
f"{base_url}/describe/scene", |
|
|
json={ |
|
|
"scene_description": scene, |
|
|
"enhance_adjectives": True, |
|
|
"include_spatial": True, |
|
|
"adjective_density": 1.0 |
|
|
}, |
|
|
timeout=10 |
|
|
) |
|
|
processing_time = time.time() - start_time |
|
|
|
|
|
if response.status_code == 200: |
|
|
result = response.json() |
|
|
metrics = result["metrics"] |
|
|
|
|
|
results.append({ |
|
|
"input": scene, |
|
|
"adjective_density": metrics["adjective_density"], |
|
|
"adjective_count": metrics["adjective_count"], |
|
|
"spatial_relations": metrics["spatial_relations"], |
|
|
"processing_time": processing_time, |
|
|
"output": result["enhanced_description"] |
|
|
}) |
|
|
|
|
|
log(f"β
{scene[:40]}... -> Density: {metrics['adjective_density']:.2f}") |
|
|
else: |
|
|
log(f"β Failed: {scene}") |
|
|
|
|
|
except Exception as e: |
|
|
log(f"β Error: {e}") |
|
|
|
|
|
|
|
|
if results: |
|
|
avg_density = np.mean([r["adjective_density"] for r in results]) |
|
|
avg_adjectives = np.mean([r["adjective_count"] for r in results]) |
|
|
avg_spatial = np.mean([r["spatial_relations"] for r in results]) |
|
|
avg_time = np.mean([r["processing_time"] for r in results]) |
|
|
|
|
|
print(f"\nπ FIXED HIGH DENSITY BENCHMARK RESULTS:") |
|
|
print(f" β’ Average Adjective Density: {avg_density:.3f}") |
|
|
print(f" β’ Average Adjectives/Scene: {avg_adjectives:.1f}") |
|
|
print(f" β’ Average Spatial Relations: {avg_spatial:.1f}") |
|
|
print(f" β’ Average Processing Time: {avg_time*1000:.1f}ms") |
|
|
print(f" β’ Improvement vs Original: {((avg_density - 0.21) / 0.21 * 100):+.1f}%") |
|
|
|
|
|
print(f"\nπ― SAMPLE OUTPUTS:") |
|
|
for i, result in enumerate(results[:3]): |
|
|
print(f" {i+1}. Input: {result['input']}") |
|
|
print(f" Output: {result['output']}") |
|
|
print(f" Density: {result['adjective_density']:.2f}") |
|
|
|
|
|
return { |
|
|
"avg_adjective_density": avg_density, |
|
|
"avg_adjectives_per_scene": avg_adjectives, |
|
|
"improvement_percent": ((avg_density - 0.21) / 0.21 * 100) |
|
|
} |
|
|
|
|
|
return None |
|
|
|
|
|
if __name__ == "__main__": |
|
|
benchmark_fixed_api() |
|
|
|