| name | cardiac-emboli-detection-ultrasound |
| description | Convolutional Neural Network framework for detecting gaseous microemboli (GME) during cardiac procedures using transthoracic ultrasound. Activation triggers: emboli detection, cardiac ultrasound, microemboli GME, surgical safety, transcatheter monitoring |
Cardiac Emboli Detection via Transthoracic Ultrasound CNN
CNN-based system for real-time detection and quantification of gaseous microemboli (GME) during cardiac structural interventions.
Metadata
- Source: arXiv:2604.22258
- Authors: Andrea Angino, Ken Trotti, Diego Ulisse Pizzagalli, Rolf Krause, Tiziano Torre
- Published: 2026-04-27
- Categories: q-bio.NC, cs.CV, eess.IV
Core Methodology
Clinical Problem
Gaseous microemboli (GME) are common complications of cardiac structural interventions (surgical and transcatheter). Current detection via transthoracic cardiac ultrasound is:
- Operator-dependent (view quality varies)
- Challenging due to high velocity of GME
- Obscured by similar-density objects (artifacts, anatomical structures)
- Not automated—requires constant expert attention
CNN-Based Detection Framework
Input: Transthoracic cardiac ultrasound video frames
Output: GME detection masks + count quantification
Key challenges addressed:
- View Standardization: CNN learns to normalize across operator-dependent views
- Velocity Handling: Temporal modeling across frames
- Artifact Discrimination: Distinguish true GME from anatomical structures
Implementation Guide
Prerequisites
- PyTorch or TensorFlow
- Medical imaging library (SimpleITK, MONAI)
- GPU with 8GB+ VRAM
- Annotated ultrasound dataset (cardiac structural procedures)
Step-by-Step
-
Data Preprocessing
import cv2
import numpy as np
def preprocess_ultrasound(video_path, target_size=(224, 224)):
"""Standardize ultrasound views"""
frames = extract_frames(video_path)
normalized = []
for frame in frames:
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
eq = cv2.createCLAHE(clipLimit=2.0).apply(gray)
resized = cv2.resize(eq, target_size)
normalized.append(resized)
return np.array(normalized) / 255.0
-
Model Architecture
import torch.nn as nn
class GME_Detector(nn.Module):
"""U-Net style architecture with temporal attention"""
def __init__(self):
super().__init__()
self.encoder = nn.Sequential(
nn.Conv2d(1, 64, 3, padding=1),
nn.BatchNorm2d(64),
nn.ReLU(),
)
self.temporal_attn = nn.MultiheadAttention(256, num_heads=8)
.decoder = nn.Sequential(
)
():
b, t, c, h, w = x.shape
features = []
i (t):
f = .encoder(x[:, i])
features.append(f)
features_stack = torch.stack(features, dim=)
attn_out, _ = .temporal_attn(features_stack, features_stack, features_stack)
mask = .decoder(attn_out.mean(dim=))
torch.sigmoid(mask)
Applications
- Surgical Safety: Real-time monitoring during cardiac surgery
- Transcatheter Procedures: TAVR, MitraClip, LAA closure
- Quality Control: Post-procedure emboli load assessment
- Research: Large-scale emboli incidence studies
Pitfalls
- Requires diverse training data across different ultrasound machines
- View-dependent performance—some views are inherently low-quality
- False positives from artifacts can cause alarm fatigue
- Regulatory approval required (FDA Class II medical device)
- Latency constraints for real-time feedback during procedures
Related Skills
- medical-image-segmentation
- ultrasound-image-analysis
- cardiac-imaging-ai
- surgical-safety-monitoring