car_damage_detection / inference /damage_inference.py
teja141290's picture
Initial commit for Hugging Face Space deployment
f01c86d
# Inference and visualization for YOLOv8 damage segmentation on unseen images
from ultralytics import YOLO
import os
from glob import glob
import sys
def run_inference(): # Get absolute paths
base_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
model_path = os.path.join(base_dir, 'models', 'damage', 'weights', 'weights', 'best.pt')
img_dir = os.path.join(base_dir, 'damage_detection_dataset', 'img')
out_dir = os.path.join(base_dir, 'inference_results', 'damage')
# Validate paths
if not os.path.exists(model_path):
print(f"Error: Model weights not found at {model_path}")
return
if not os.path.exists(img_dir):
print(f"Error: Image directory not found at {img_dir}")
return
# Create output directory
os.makedirs(out_dir, exist_ok=True)
# Get all images in the dataset
all_imgs = sorted(glob(os.path.join(img_dir, '*.jpg')))
if not all_imgs:
print(f"No images found in {img_dir}")
return
try:
# Load model
model = YOLO(model_path)
# Run inference and save results
for img_path in all_imgs:
try:
results = model.predict(
source=img_path,
save=True,
project=out_dir,
name='',
imgsz=640,
conf=0.25
)
print(f'Processed: {os.path.basename(img_path)}')
except Exception as e:
print(f"Error processing {os.path.basename(img_path)}: {str(e)}")
continue
print(f'Inference complete. Results saved to {out_dir}')
except Exception as e:
print(f"Error loading model: {str(e)}")
return
if __name__ == '__main__':
run_inference()