File size: 1,065 Bytes
84dba68
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
from transformers import DetrImageProcessor, DetrForObjectDetection
from PIL import Image
import torch
import numpy as np

processor = DetrImageProcessor.from_pretrained("facebook/detr-resnet-50")
model = DetrForObjectDetection.from_pretrained("facebook/detr-resnet-50")

def detect_faults(image):
    inputs = processor(images=image, return_tensors="pt")
    outputs = model(**inputs)
    target_sizes = torch.tensor([image.size[::-1]])
    results = processor.post_process_object_detection(outputs, target_sizes=target_sizes, threshold=0.9)[0]

    intrusion_detected = any(label == 1 for label in results["labels"].tolist())

    # Simulated thermal detection (average red channel > 200 = overheat)
    red_mean = np.array(image)[:, :, 0].mean()
    overheating = red_mean > 200

    # Simulated shade (brightness < 100 on average = dusty/shaded)
    brightness = np.array(image).mean()
    dusty = brightness < 100

    return {
        "Intrusion Detected": intrusion_detected,
        "Overheating Panel": overheating,
        "Dust/Shade Fault": dusty
    }