danielritchie's picture
initializing repo
d9c6ad3
import logging
from ultralytics import YOLO
# Suppress Ultralytics logging
logging.getLogger('ultralytics').setLevel(logging.WARNING)
# Define models and the test image
models = {
"yolov8n": "yolov8n.pt", # Pretrained model
"fine_tuned": "yolov8n_rubberducks.pt" # Fine-tuned model
}
image_path = "test_image.jpg"
# Initialize a dictionary to store results
performance = {}
# Run inference for each model
for model_name, model_path in models.items():
# Load the model
model = YOLO(model_path)
# Run inference on the test image
results = model(image_path)
first_result = results[0] # Extract the first result
# Count the number of detections (boxes)
num_detections = len(first_result.boxes) if hasattr(first_result, 'boxes') and first_result.boxes is not None else 0
# Calculate total confidence score of detections
if num_detections > 0:
total_confidence = sum(float(box.conf) for box in first_result.boxes) # Convert tensor to float
else:
total_confidence = 0.0 # No detections
# Store performance data
performance[model_name] = {
"detections": num_detections,
"confidence": total_confidence
}
# Extract results for comparison
yolo_detections = performance['yolov8n']['detections']
yolo_confidence = performance['yolov8n']['confidence']
fine_tuned_detections = performance['fine_tuned']['detections']
fine_tuned_confidence = performance['fine_tuned']['confidence']
# Calculate the difference
diff_detections = fine_tuned_detections - yolo_detections
diff_confidence = fine_tuned_confidence - yolo_confidence
detection_diff_word = "more" if diff_detections > 0 else "less"
confidence_diff_word = "more" if diff_confidence > 0 else "less"
# Print streamlined results
print()
print(f" YOLOv8n detected {yolo_detections} ducks with a total confidence of {yolo_confidence:.2f}")
print(f" The fine-tuned model detected {fine_tuned_detections} ducks with a total confidence of {fine_tuned_confidence:.2f}")
print(f" The fine-tuned model detects ducks with {abs(diff_confidence * 100):.0f}% {confidence_diff_word} confidence.")
print()