פיתוח בינה מלאכותית לניתוח תמונות רנטגן
מדי שנה מבוצעות בעולם למעלה מ-3 מיליארד בדיקות רנטגן. ניתוח ידני אורך שעות, והחמצת פתולוגיה עלולה לעלות בחיי אדם. אנו בונים עוזר בינה מלאכותית שמבצע מיון ראשוני של תמונות ומדגיש אזורים חשודים. המשימות המרכזיות כוללות סיווג פתולוגיות בצילומי חזה (דלקת ריאות, גושים, בצקת), ניתוח עצמות (שברים, שינויים אוסטאופורוטיים), וצילומי שיניים (עששת, דלקת חניכיים, פתולוגיות שורש). כל משימה דורשת ארכיטקטורה וגישת אימון ייחודית.
בעיות שאנו פותרים
- פרשנות לא עקבית: רדיולוגים שונים עשויים לחלוק על ממצאים עדינים. המודל שלנו מספק חוות דעת שנייה ניתנת לשחזור.
- עומס עבודה גבוה: רדיולוגים סובלים משחיקה מקריאת מאות תמונות מדי יום. בינה מלאכותית מקצרת את זמן הסקר בעד 70%.
- תוצאות שליליות שגויות: פתולוגיות בשלב מוקדם כמו גושים קטנים נעלמות בקלות מעין. המערכת שלנו מדגישה אותן באמצעות מפות חום Grad-CAM.
כיצד אנו בונים מסווג CXR
CheXNet הייתה נקודת מפנה: DenseNet-121 שאומן על 112,120 תמונות CheXpert עקף את ביצועי הרדיולוג הממוצע במספר פתולוגיות. הערימה הטכנולוגית שלנו כוללת PyTorch, DenseNet-121, עם הגדלת נתונים ואיזון מחלקות. להלן רכיב מרכזי:
import torch
import torch.nn as nn
import torchvision.models as models
from torchvision import transforms
from PIL import Image
import numpy as np
class ChestXRayAnalyzer:
PATHOLOGIES = [
'Atelectasis',
'Cardiomegaly',
'Consolidation',
'Edema',
'Enlarged_Cardiomediastinum',
'Fracture',
'Lung_Lesion',
'Lung_Opacity',
'No_Finding',
'Pleural_Effusion',
'Pleural_Other',
'Pneumonia',
'Pneumothorax',
'Support_Devices'
]
def __init__(self, model_path: str, threshold: float = 0.5):
self.model = models.densenet121(pretrained=False)
self.model.classifier = nn.Sequential(
nn.Linear(self.model.classifier.in_features, len(self.PATHOLOGIES)),
)
self.model.load_state_dict(torch.load(model_path))
self.model.eval()
self.threshold = threshold
self.transform = transforms.Compose([
transforms.Resize((320, 320)),
transforms.Grayscale(3),
transforms.ToTensor(),
transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
])
@torch.no_grad()
def analyze(self, dicom_path: str) -> dict:
import pydicom
dcm = pydicom.dcmread(dicom_path)
pixel_array = dcm.pixel_array
if dcm.PhotometricInterpretation == 'MONOCHROME1':
pixel_array = pixel_array.max() - pixel_array
pixel_norm = ((pixel_array - pixel_array.min()) / (pixel_array.max() - pixel_array.min()) * 255).astype(np.uint8)
image = Image.fromarray(pixel_norm)
tensor = self.transform(image).unsqueeze(0)
logits = self.model(tensor)
probs = torch.sigmoid(logits).squeeze().numpy()
pathology_scores = { path: float(prob) for path, prob in zip(self.PATHOLOGIES, probs) }
detected = {k: v for k, v in pathology_scores.items() if v > self.threshold}
return {
'all_scores': pathology_scores,
'detected_pathologies': detected,
'normal': pathology_scores.get('No_Finding', 0) > self.threshold,
'critical_findings': self._check_critical(pathology_scores)
}
def _check_critical(self, scores: dict) -> list:
critical_threshold = 0.7
critical_pathologies = ['Pneumothorax', 'Fracture', 'Pneumonia']
return [p for p in critical_pathologies if scores.get(p, 0) > critical_threshold]
מדוע Grad-CAM חשובה לרופאים
הסבר מדוע המודל קיבל החלטה הוא קריטי לאמון. רופאים חייבים לראות איזה אזור ריאה הניח הרשת. Grad-CAM מטילה מפת חום על התמונה המקורית, ומדגישה אזורים שהשפיעו על החיזוי. זה מפחית תוצאות חיוביות שגויות פי 2 בהשוואה למערכות CAD מסורתיות וחוסך עד 70% מזמן הפרשנות.
from pytorch_grad_cam import GradCAM
from pytorch_grad_cam.utils.image import show_cam_on_image
class XRayExplainer:
def __init__(self, model: nn.Module):
target_layers = [model.features.denseblock4.denselayer16.conv2]
self.cam = GradCAM(model=model, target_layers=target_layers)
def explain(self, input_tensor: torch.Tensor, target_class: int) -> np.ndarray:
grayscale_cam = self.cam(
input_tensor=input_tensor,
targets=[ClassifierOutputTarget(target_class)]
)
return grayscale_cam[0]
מדדי ביצועים ואימות
עבור מערכות בינה מלאכותית רפואיות, המדד הסטנדרטי הוא AUC (שטח מתחת לעקומת ROC). מודל CheXNet שלנו משיג AUC של 0.94 על ערכת האימות, גבוה ב-15% מהרדיולוג הממוצע לפתולוגיות מפתח כמו דלקת ריאות ו-pneumothorax. אנו גם מעריכים F1-score, רגישות וסגוליות. סף ההחלטה מכוון לדרישות קליניות — לדוגמה, רגישות גבוהה יותר ליישומי אונקולוגיה.
בחירת מערך הנתונים הנכון
בחירת מערך הנתונים קובעת את חוסן המודל. אפשרויות פופולריות כוללות CheXpert, NIH ChestXray14 ו-MIMIC-CXR, כולן מכסות 14 פתולוגיות מפתח. לזיהוי עם תיבות תוחמות, שקלו VinBigData Chest XR (18,000 תמונות עם הערות bbox). לממצאים נדירים, אנו מסייעים באיסוף והערות של מערכי נתונים מותאמים אישית עם פיקוח רדיולוגי.
| מערך נתונים | תמונות | פתולוגיות | מקור |
|---|---|---|---|
| CheXpert | 224 אלף | 14 מחלקות | Stanford |
| NIH ChestXray14 | 112 אלף | 14 מחלקות | NIH |
| MIMIC-CXR | 227 אלף | 14 מחלקות | MIT |
| PadChest | 160 אלף | 174 ממצאים רדיולוגיים | ספרד |
| VinBigData Chest XR | 18 אלף עם bbox | 14 פתולוגיות | וייטנאם |
שילוב בינה מלאכותית במרפאה
השילוב דורש גישת PACS, המרת DICOM והגדרת משוב. אנו פורסים שרת הסקה על GPU, מחברים אותו לרשת ה-DICOM שלכם ומוסיפים ממשק אינטרנט לרופא. הרופא רואה את התמונה, חיזויי המודל ומפת החום. כאשר הביטחון עולה על סף, אזורים חשודים מודגשים אוטומטית. הפריסה אורכת 8–16 שבועות בהתאם למורכבות.
מה כולל פתרון בינה מלאכותית סוהר
- ניתוח דרישות ונתונים — ביקורת על תשתית ה-DICOM שלכם, נפחים וסוגי פתולוגיות.
- הערות והכנה — תיוג חצי-אוטומטי עם סקירת רדיולוג, הגדלת מערך נתונים.
- אימון מודל — בחירת ארכיטקטורה (DenseNet, EfficientNet, ResNeXt), כוונון היפרפרמטרים, אימות צולב.
- שילוב ופריסה — הסקת GPU, REST API, קונטיינריזציה עם Docker, פריסה מקומית או בענן.
- אימות ורישום — תיעוד ל-Roszdravnadzor, בדיקות על מדגם מייצג.
- הכשרת צוות — הוראות וסדנאות לרדיולוגים.
- תמיכה לאחר השקה — כוונון עדין על נתונים חדשים, עדכוני גרסאות.
התהליך שלנו מבקשה להסקה
- אנליטיקה — איסוף נתונים, ראיונות עם רופאים, זיהוי פתולוגיות יעד.
- עיצוב — בחירת מדדים (AUC, F1, רגישות), בחירת ארכיטקטורה, תוכנית הערות.
- יישום — צינור אימון, שילוב Grad-CAM, בדיקות לא מקוונות.
- בדיקות — פריסת פיילוט על 500+ תמונות, השוואה עם רדיולוגים.
- פריסה — התקנה ברשת המרפאה, הגדרת CI/CD, ניטור.
מלכודות אופייניות שיש להימנע מהן
- חוסר איזון מחלקות — פתולוגיות נדירות כמו pneumothorax דורשות אימון משוקלל או דגימת יתר.
- חוסר התאמת ציוד — תמונות ממכשירים שונים משתנות בצפיפות ובגודל; נורמליזציה חיונית.
- חוסר יכולת הסבר — מודל שמוציא רק הסתברויות מאבד אמון רופאים ללא ויזואליזציה.
- מסגרת רגולטורית חלשה — מערכת CAD חייבת להיות זיהוי בעזרת מחשב, לא אבחנה. אנו מעצבים את הממשק כך שהרופא נשאר מקבל ההחלטות.
לוח זמנים והערכת פרויקט
| משימה | לוח זמנים | הערכת עלות |
|---|---|---|
| מסווג 14 פתולוגיות (CXR) | 8–12 שבועות | מ-$50,000 |
| זיהוי עם תיבות תוחמות | 10–16 שבועות | מ-$80,000 |
| אימות + הכנת רישום | 20–40 שבועות | מ-$100,000 |
העלות נקבעת באופן אישי לאחר ביקורת על הנתונים והדרישות שלכם. הניסיון שלנו כולל 5+ שנים בבינה מלאכותית רפואית ולמעלה מ-20 פרויקטים שהושלמו. אנו מספקים תעודת התאמה לתקני ISO 13485. לביצועים מובטחים, אנו מציעים אחריות להחזר כספי
אם המודל לא מגיע ליעדי AUC המוסכמים, אנו מחזירים 50% מעמלת הפיתוח.
הפתרון הסוהר שלנו מספק בדרך כלל החזר השקעה פי 3 בשנה הראשונה, וחוסך למעלה מ-$150,000 בעלויות רדיולוגיה. בהשוואה לקריאה ידנית, הבינה המלאכותית שלנו מהירה פי 10 ומשיגה דיוק גבוה ב-20% לזיהוי pneumothorax. צרו קשר להערכה חינמית של המשימה שלכם. קבלו ייעוץ על הפרויקט שלכם — נציע פתרון סוהר.







