batik-classifier / test_multiple.py
maftuh-main's picture
Remove old KNN model files, keep only Keras model
f5ede97
import requests
import os
import glob
api_url = "https://maftuh-main-batik-classifier.hf.space/predict"
dataset_dir = r"C:\Users\muhammadmaftuh\warisan-digital\ml-service\dataset_batik"
# Test different batik types
test_classes = ["batik-parang", "batik-kawung", "batik-megamendung", "batik-ceplok", "batik-lasem"]
print("\n" + "="*70)
print(" TESTING BATIK CLASSIFIER WITH MULTIPLE PATTERNS")
print("="*70)
correct = 0
total = 0
for batik_class in test_classes:
class_dir = os.path.join(dataset_dir, batik_class)
images = glob.glob(os.path.join(class_dir, "*.jpg"))[:1] # Test 1 image per class
for image_path in images:
total += 1
print(f"\n Testing: {batik_class}")
print(f" File: {os.path.basename(image_path)}")
try:
with open(image_path, 'rb') as f:
files = {'image': (os.path.basename(image_path), f, 'image/jpeg')}
response = requests.post(api_url, files=files, timeout=30)
if response.status_code == 200:
result = response.json()
top_pred = result['predictions'][0]
confidence = top_pred['confidence'] * 100
is_correct = top_pred['class'] == batik_class
if is_correct:
correct += 1
print(f" Predicted: {top_pred['class']} ({confidence:.1f}%)")
else:
print(f" Predicted: {top_pred['class']} ({confidence:.1f}%)")
print(f" Expected: {batik_class}")
else:
print(f" Error: {response.status_code}")
except Exception as e:
print(f" Exception: {e}")
print("\n" + "="*70)
print(f" RESULTS: {correct}/{total} correct ({correct/total*100:.1f}%)")
print("="*70)