בדיקת קווי מתח גבוה, גשרים, צינורות נפט וטורבינות רוח אורכת בדרך כלל ימים של עבודה ידנית של מטפסים תעשייתיים או דורשת השבתת ציוד. רחפן עם ניתוח בינה מלאכותית מכסה את אותו מסלול בשעות ומזהה פגמים שבני אדם לעיתים קרובות מפספסים בבדיקה ויזואלית מהירה. אנו מפתחים מערכות כאלה כבר מספר שנים והשלמנו למעלה מ-15 פרויקטים של אוטומציה של בדיקות ללקוחות תעשייתיים. במאמר זה, אנו מפרקים כיצד פועלת מערכת אמיתית לזיהוי פגמים — מצילום תמונה ועד דוח.
משימות בדיקה אופייניות
| אובייקט | פגמים שזוהו | שיטה |
|---|---|---|
| קווי מתח, עמודי תמסורת | קורוזיה, הטיית עמוד, חוט שבור | פילוח + זיהוי חריגות |
| להבי טורבינות רוח | סדקים, דלמינציה, הצטברות קרח | זיהוי פגמים ברזולוציה גבוהה |
| גשרים, מחלפים | סדקים, התפוררות, קורוזיית ברזל זיון | זיהוי סדקים + סיווג |
| צינור נפט | שקעים, כתמי קורוזיה, נזילות | מצלמת RGB + מצלמה תרמית |
| גג בניין | נזילות, חריגות תרמיות | מצלמה תרמית |
כיצד פועל זיהוי פגמים בתמונות?
השיטה הבסיסית היא פילוח סמנטי של סדקים בתמונות RGB. אנו משתמשים בארכיטקטורת UNet++ עם מקודד EfficientNet-B4 — היא מספקת דיוק ברמת פיקסל ועמידה בפני רעש. המודל מאומן על נתונים מסומנים (מסכות סדקים) ומפיק מפה בינארית, שממנה מחושבים שטח ואורך הפגם. קוד הגלאי:
import torch
import numpy as np
from PIL import Image
from torchvision import transforms
import segmentation_models_pytorch as smp
class InfrastructureDefectDetector:
def __init__(self, model_path: str, task: str = 'crack'):
# Для трещин — сегментационная задача (пиксельная точность)
# UNet++ с EfficientNet-B4 encoder = хорошее соотношение
self.model = smp.UnetPlusPlus(
encoder_name='efficientnet-b4',
encoder_weights=None, # загружаем свои веса
in_channels=3,
classes=1,
activation='sigmoid'
)
checkpoint = torch.load(model_path, map_location='cpu')
self.model.load_state_dict(checkpoint['model_state_dict'])
self.model.eval()
self.transform = transforms.Compose([
transforms.Resize((512, 512)),
transforms.ToTensor(),
transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
])
self.task = task
@torch.no_grad()
def detect(self, image: np.ndarray, threshold: float = 0.5) -> dict:
img_pil = Image.fromarray(image)
tensor = self.transform(img_pil).unsqueeze(0)
pred = self.model(tensor)[0, 0].numpy() # (H, W)
mask = (pred > threshold).astype(np.uint8)
# Анализ маски
crack_pixels = int(mask.sum())
total_pixels = mask.size
crack_ratio = crack_pixels / total_pixels
# Контуры трещин
contours, _ = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
crack_regions = []
for cnt in contours:
area = cv2.contourArea(cnt)
if area < 50: # фильтр шума
continue
x, y, w, h = cv2.boundingRect(cnt)
length = cv2.arcLength(cnt, False)
crack_regions.append({
'bbox': [x, y, x+w, y+h],
'area_px': int(area),
'length_px': float(length),
'severity': self._classify_severity(area, length)
})
return {
'defect_ratio': crack_ratio,
'crack_regions': crack_regions,
'severity': 'HIGH' if crack_ratio > 0.02 else 'MEDIUM' if crack_ratio > 0.005 else 'LOW',
'raw_mask': mask
}
def _classify_severity(self, area: float, length: float) -> str:
if length > 200 or area > 500:
return 'CRITICAL'
elif length > 80 or area > 100:
return 'HIGH'
return 'MEDIUM'
סף החומרה ניתן להגדרה לפי תקני הארגון. סדקים ארוכים מ-200 פיקסלים מסומנים כקריטיים — האובייקט דורש תיקון לא מתוכנן.
פרטים טכניים של האימון
עבור כל מודל אנו מיישמים הגדלות: סיבוב אקראי, שינוי בהירות, פסיפס. אנו משתמשים באופטימייזר AdamW עם קצב למידה של 1e-4 והנחת קוסינוס. אימות משתמש ב-IoU ו-F1-score. לאחר האימון, אנו מייצאים ל-ONNX להסקה על Jetson.
מדוע הדמיה תרמית היא הכרחית?
קורוזיה ונזילות לרוב אינן נראות בתמונות RGB אך מציגות חריגות טמפרטורה. מצלמה תרמית מזהה התחממות יתר של מגעי קווי מתח (קצר חשמלי) או אזורים קרים על גגות (נזילת בידוד). מנתח הפריימים התרמיים שלנו מחפש אזורים שבהם הטמפרטורה חורגת מהממוצע ביותר מ-3 סיגמא:
class ThermalInspector:
def __init__(self, baseline_temp: float = 20.0):
self.baseline = baseline_temp
def analyze(self, thermal_frame: np.ndarray) -> list[dict]:
"""
thermal_frame: матрица температур в °C
Ищем аномально горячие (короткое замыкание, трение) и холодные (протечки, отсутствие изоляции) зоны.
"""
anomalies = []
# Статистика кадра
mean_t = float(np.mean(thermal_frame))
std_t = float(np.std(thermal_frame))
# Аномалии: > mean + 3*std (горячие) или < mean - 2*std (холодные)
hot_mask = (thermal_frame > mean_t + 3 * std_t).astype(np.uint8)
cold_mask = (thermal_frame < mean_t - 2 * std_t).astype(np.uint8)
for mask_type, mask in [('hot', hot_mask), ('cold', cold_mask)]:
contours, _ = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
for cnt in contours:
if cv2.contourArea(cnt) < 20:
continue
x, y, w, h = cv2.boundingRect(cnt)
roi_temps = thermal_frame[y:y+h, x:x+w]
anomalies.append({
'type': mask_type,
'bbox': [x, y, x+w, y+h],
'max_temp': float(roi_temps.max()),
'min_temp': float(roi_temps.min()),
'delta': float(abs(roi_temps.mean() - mean_t))
})
return anomalies
גישה זו מזהה פגמים בשלב מוקדם לפני שהם מובילים לכשל. לפי Thermography (ויקיפדיה), בדיקה תרמית נמצאת בשימוש נרחב לתחזוקה חזויה.
פוטוגרמטריה ומודל תלת-ממדי: מתי זה נחוץ?
לניתוח מפורט של סדקים ועיוותים, אנו בונים מודל תלת-ממדי מסדרה של תמונות חופפות. כלים: Agisoft Metashape (מסחרי), OpenDroneMap (קוד פתוח), COLMAP. חפיפה מומלצת — 80% צד קדמי, GSD — 1–3 מ"מ/פיקסל. עם רחפן המצויד במצלמת Sony RX1R II (42 מגה-פיקסל), ניתן לקבל GSD של 1 מ"מ/פיקסל מגובה 8 מ'. המודל התלת-ממדי מאפשר מדידת רוחב פתיחת סדק בדיוק של 0.5 מ"מ.
תוצאות בדיקת בינה מלאכותית
זיהוי בינה מלאכותית מוצא פי 3 יותר פגמים מאשר בדיקה ויזואלית, בעוד שמהירות הבדיקה גבוהה פי 5. לדוגמה, עבור חברת רשת חשמל אחת, החיסכון בתיקונים לא מתוכננים הסתכם ביותר מ-$18k–26k לשנה לאחר פריסת המערכת על 40 ק"מ של קווי מתח.
מקרה בוחן: בדיקת 40 ק"מ של קווי מתח עבור הלקוח שלנו
אחד הלקוחות שלנו, חברת רשת חשמל, נהגה לבזבז 5 ימי עבודה בבדיקת 40 ק"מ של קווי מתח גבוה עם שלושה צוותים. הצענו פתרון המבוסס על רחפן DJI M300 RTK עם מצלמת Zenmuse H20T (20 מגה-פיקסל RGB + תרמית). טיסה אוטונומית לאורך מסלול GPS בגובה 30 מ' מעל החוט.
- זמן איסוף נתונים: 6–7 שעות עבור 40 ק"מ (יומיים כולל מעברים)
- ניתוח בינה מלאכותית: YOLOv8l, מכוונן על 3200 תמונות של פגמי עמודים וחוטים
- תוצאות הבדיקה הראשונה: 14 עמודים עם קורוזיה >20%, 3 מהדקי מתיחה עם סדקים, 8 נקודות תרמיות חריגות
- חיסכון בזמן: הבדיקה הושלמה ביומיים במקום 5, שיעור פגמים שהוחמצו הופחת פי 3
הלקוח קיבל דוח מלא עם קואורדינטות של פגמים ותצלומים — דבר שאיפשר תכנון מהיר של עבודות תיקון ללא השבתת ציוד.
מה כולל עבודת הפרויקט?
- סקירת אתר ואיסוף דרישות. אנו קובעים סוגי פגמים, תדירות בדיקה, סובלנות מקובלת.
- הכנת נתונים מסומנים. אם אין לך תמונות, אנו מבצעים טיסת ניסיון לאיסוף מערך נתונים.
- אימון ואימות מודל. אנו משתמשים בלמידת העברה, מתנסים בארכיטקטורות (UNet, YOLO, ViT). ניהול ניסויים באמצעות MLOps – MLflow ו-Weights & Biases.
- אינטגרציה עם רחפן ודוחות. אנו פורסים את המודל על מחשב מובנה (NVIDIA Jetson) או שרת.
- בדיקות וקבלה. אנו מוודאים דיוק על מערך בדיקה, מבצעים בדיקות שטח.
- תיעוד והעברת הדרכה. אנו מספקים כרטיס מודל, מדריך הפעלה, קוד צינור עיבוד.
- תמיכה באחריות ל-6 חודשים. אם תנאי הבדיקה משתנים, אנו מאמנים מחדש את המודל.
הערכות זמן פיתוח
| סוג בדיקה | ציר זמן פיתוח |
|---|---|
| גלאי סוג פגם יחיד | 4–6 שבועות |
| מערכת בדיקה מקיפה | 8–14 שבועות |
| עם פוטוגרמטריה ודוחות תלת-ממדיים | 12–20 שבועות |
להערכה מדויקת של הפרויקט שלך, קבל ייעוץ — ננתח את האובייקט ונציע את הפתרון הטוב ביותר. צור קשר להדגמה של המקרים המוכנים שלנו. ניתן גם להזמין פרויקט פיילוט — נבחר ציוד ונכוונן מודלים עבור התשתית שלך.
סיכום: בדיקת רחפן עם בינה מלאכותית היא מערכת מקיפה לאיסוף נתונים, ניתוח ודיווח שמחזירה את עצמה באמצעות הפחתת זמן השבתה והגברת בטיחות.







