import numpy as np | |
def get_overlapping_part(damage_mask, part_masks, part_labels): | |
max_iou = 0 | |
matched_part = None | |
for mask, label in zip(part_masks, part_labels): | |
iou = np.sum(np.logical_and(damage_mask, mask)) / np.sum(np.logical_or(damage_mask, mask)) | |
if iou > max_iou: | |
max_iou = iou | |
matched_part = label | |
return matched_part, max_iou | |
def estimate_severity(area, part_label): | |
if area < 2000: | |
return "minor" | |
elif area < 8000: | |
return "moderate" | |
else: | |
return "severe" if part_label in ["front_bumper", "hood", "rear_bumper"] else "moderate" | |