
摘要:本文针对低剂量螺旋CT(LDCT)肺结节筛查中人工阅片效率低、微小结节易漏诊的问题,提出了一种融合YOLOv8目标检测与Lung-CLIP多模态大模型的轻量化辅助诊断方案。基于公开数据集LUNA16进行全流程复现,通过引入膨胀卷积与多模态语义过滤机制,在保证推理速度的同时显著降低假阳性率。
一、引言与行业背景
肺癌目前是全球死亡率最高的恶性肿瘤。根据GLOBOCAN 2020发布的全球癌症统计数据[4],肺癌新发病例约220万例,死亡病例约180万例,其中非小细胞肺癌(NSCLC)占比超过85%。临床研究表明,早期肺癌(I期)的5年生存率可达70%-90%,而晚期(IV期)仅为5%-10%。低剂量螺旋CT(LDCT)是目前最有效的筛查手段,但放射科医生每日需处理数百张切片,疲劳导致的漏诊率高达15%-20%。
传统的CAD(计算机辅助诊断)系统多依赖手工设计的特征(如纹理、形状),对磨玻璃结节(GGO)和血管断面的区分能力较弱。随着深度学习的发展,基于CNN的检测算法已成为主流,但如何在有限算力下平衡敏感度(Sensitivity)与假阳性(FP)仍是落地难点。
二、数据准备与合规性处理
本实验严格使用公开数据集LUNA16[1](Lung Nodule Analysis 2016),该数据集源自LIDC-IDRI,包含888例胸部CT扫描,标注了1186个直径≥3mm的结节。
1. 数据预处理流程(附关键代码) 为了消除不同CT设备的分辨率差异,需进行标准化处理:
import SimpleITK as sitk
import numpy as np
def preprocess_ct(image_path, target_spacing=(1.0, 1.0, 1.0)):
# 读取 DICOM
itk_image = sitk.ReadImage(image_path)
# 重采样至统一体素间距
original_spacing = itk_image.GetSpacing()
resize_factor = original_spacing / target_spacing
new_size = np.round(np.array(itk_image.GetSize()) * resize_factor).astype(int)
resampler = sitk.ResampleImageFilter()
resampler.SetOutputSpacing(target_spacing)
resampler.SetSize(new_size.tolist())
resampler.SetInterpolator(sitk.sitkLinear)
resampled_image = resampler.Execute(itk_image)
# HU 值截断 [-1200, 600] 并归一化
array = sitk.GetArrayFromImage(resampled_image)
array = np.clip(array, -1200, 600)
array = (array + 1200) / 1800 # Normalize to [0, 1]
array.astype(np.float32)


