
简介这是一篇面向医学影像与人工智能从业者及学习者的专业论文系统研究基于卷积神经网络CNN的成人肋骨骨折CT自动检测与分类。研究回顾性收集A医院974例患者并采用B、C医院各25例作为多中心测试集验证鲁棒性自动识别新鲜骨折、愈合期骨折和陈旧性骨折并输出结构化报告。结果显示模型在全部测试集上平均精准度、召回率和F1值均大于0.8新鲜与愈合期骨折检测效能略高于陈旧性骨折诊断水平可比肩放射科主治医师平均检测时间缩短约132秒。压缩包共1个PDF文件包体约986KB内容涵盖影像诊断与介入放射学论文正文、研究方法、评价指标及深度学习医学图像分类的知识点。资源已有147人学习下载适合需要快速掌握肋骨骨折CT智能检测建模思路、多中心验证策略和专业论文撰写结构的读者参考。1. 肋骨骨折 CT 自动检测一份把敏感度做到 0.956 的 CNN 落地参考肋骨骨折是胸部钝性创伤里最常见的损伤发生率约 40%~80%而初诊漏诊率在有些报道里能到 20.7%——薄层 CT 一个病人动辄几百张图像医生逐层扫下来漏掉一两处后肋的微小骨折太常见了。这篇论文做的就是基于卷积神经网络CNN的成人肋骨骨折 CT 自动检测与分类方案用 Faster R-CNN 把新鲜、愈合期、陈旧性三类骨折一次性检出并输出结构化报告。读完你会发现它的价值不只是AI 看片而是给出了一套从数据标注、格式转换到多中心验证的完整落地路径适合正在做医学影像 AI 检测、手头有 CT 数据但不确定流程怎么搭的工程师和研究生参考。2. 数据准备与预处理从 DICOM 到 VOC 2007 格式的完整链路2.1 入组标准与三分类定义标签体系先定对做医学检测模型第一步不是调网络是把标签体系定死。这篇论文把肋骨骨折分成三类新鲜骨折定义为外伤后约 3 周内CT 上表现为骨折线锐利、无骨膜反应或骨痂形成愈合期骨折表现为骨折线边缘模糊、伴有骨痂形成陈旧性骨折定义为外伤 3 个月后CT 上显示成熟骨痂、骨重塑、骨折线不可见且随访扫描无变化。这个时间窗口直接决定了标注人员怎么判断边界情况也决定了模型学到的特征语义。数据入组和排除标准也很干脆。纳入标准三条有外伤病史、有肋骨骨折影像学特征、随访 CT 显示骨痂形成或骨折愈合。排除标准三条有影响诊断的放射状或运动伪影、骨质破坏或骨肿瘤、先天性肋骨发育不良或畸形。这套标准看似简单实际做的时候很关键——伪影和骨肿瘤会直接制造假阳性先天性畸形会让形状特征和骨折混淆。我见过不少项目在数据清洗阶段偷懒结果模型上线后对脊柱侧弯病人的假阳性率直接飙到不能看。数据量方面A 医院 2011 年 1 月到 2019 年 1 月共 974 例单中心数据按 90%/10% 随机分成训练集 876 例和测试集 98 例另外 B 医院和 C 医院各 25 例作为独立多中心测试集合计 1024 例。三组数据在年龄和性别上无统计学差异中位年龄 56~58 岁男女比约 2:1。注意这里训练集和测试集只包含带标签的骨折图像不含正常无骨折图像——这个细节后面会影响你对模型假阳性的解读。2.2 图像标准化窗宽窗位与 DICOM 转 JPEGCT 原始数据是 DICOM 格式直接扔给 CNN 训练会出问题不同设备的灰度映射不一致、像素值范围差异大模型很容易过拟合到设备特征而不是骨折特征。论文的做法是从 PACS 下载 DICOM 数据然后用 MicroDicom 软件版本 2.9.2转成无损 24 位灰度 JPEG 图像尺寸统一为 1024×1024 像素。这一步看着简单但有两个参数必须注意。第一个是窗宽窗位。肋骨看骨窗论文用的是窗位 500 HU、窗宽 1500 HU。这个参数决定了灰度映射的上下界——窗位偏了皮质骨和周围软组织的对比度就不对窗宽太大细节被压缩窗宽太小骨的边缘容易饱和。第二个是层厚和重建算法。扫描参数为管电压 120 kVp、管电流 100~700 mA依患者体重调整重组层厚 1 mm 或 2 mm骨算法。四台不同的 CT 扫描仪GE Optima 680、Philips Brilliance 16、Philips Ingenuity 128、Siemens Definition Flash都纳入进来这一点是为后面的多中心鲁棒性验证服务的。我自己做这类项目有一个习惯DICOM 转 JPEG 时不只是转格式还会顺手记录每个病例的窗宽窗位、层厚、设备型号这些 DICOM tag存成一个 CSV。后期模型表现异常时按这些字段分组去查能很快定位是某台设备生成的数据有问题还是某个层厚下的检测本身不稳定。转图像这一步是最容易翻车的地方——直接用默认窗宽窗位转出来的图像骨折线常常被软组织覆盖模型训练出来就是个瞎的。2.3 标注与质控双人标注加仲裁机制标注是所有医学影像 AI 项目里最耗时也最影响上限的环节。论文里两名有 8 年和 9 年 CT 诊断经验的放射科医师用 LabelImg 软件版本 1.8.1完成标注标注框约 1 cm然后由两名高级放射科医生CT 诊断经验 20 年和 14 年审核。意见不一致时一名胸外科医师参与讨论协商一致后作为最终金标准。这个流程里有一个容易被忽略的参数标注框约 1 cm。肋骨骨折尤其是微小骨折实际病灶可能只有几毫米标注框做得太大会让 IoU 计算失真——预测框只覆盖了骨折的一部分但和标注框的重叠度已经很高模型学到的定位精度就不够。反过来标注框太小网络下采样后特征图上的响应区域不足小目标容易漏检。1 cm 这个值在 1024×1024 的图像上约合 20~30 个像素对应 Faster R-CNN 的锚框设计是有参考意义的。标注质控环节我多说一句双人标注加仲裁是标配但真正容易出问题的不是标签位置而是骨折类型的边界判断。新鲜骨折和愈合期骨折的分界是外伤后 3 周愈合期和陈旧性的分界是 3 个月——但实际患者的外伤时间往往来自病历记录不一定准确。标注时如果发现病历时间和影像特征明显矛盾宁可标记为存疑并请胸外科会诊也不要硬填一个类型。错误标签进入训练集后模型会学到错误的特征关联后面怎么调参都救不回来。2.4 格式转换与 MxNet Record 文件生成标注完成后是数据格式的转换链路。论文用 Putil Python 库版本 2.7.15重命名所有数据并转换为 VOC 2007 格式。VOC 2007 的目录结构是固定的标准布局如下VOC2007/ ├── JPEGImages/ # 原始图像论文中是 1024x1024 灰度 JPEG ├── Annotations/ # 每个图像对应的 XML 标注文件 └── ImageSets/ └── Main/ # train.txt / val.txt / trainval.txt 等列表文件每张图像对应的 XML 里记录了文件名、图像尺寸、目标类别论文中是 fresh_fracture / healing_fracture / old_fracture 三类和边界框坐标。代码层面Python 的xml.etree.ElementTree就能完成 VOC XML 的读写这里给一个生成 XML 的最小示例import xml.etree.ElementTree as ET def write_voc_xml(img_name, img_width, img_height, boxes, save_path): # boxes: list of dict, 每个 dict 包含 name 和 bndbox (xmin, ymin, xmax, ymax) annotation ET.Element(annotation) ET.SubElement(annotation, folder).text VOC2007 ET.SubElement(annotation, filename).text img_name size ET.SubElement(annotation, size) ET.SubElement(size, width).text str(img_width) ET.SubElement(size, height).text str(img_height) ET.SubElement(size, depth).text 3 # 灰度图也按 3 通道处理 for box in boxes: obj ET.SubElement(annotation, object) ET.SubElement(obj, name).text box[name] ET.SubElement(obj, difficult).text 0 bndbox ET.SubElement(obj, bndbox) ET.SubElement(bndbox, xmin).text str(box[xmin]) ET.SubElement(bndbox, ymin).text str(box[ymin]) ET.SubElement(bndbox, xmax).text str(box[xmax]) ET.SubElement(bndbox, ymax).text str(box[ymax]) tree ET.ElementTree(annotation) tree.write(save_path, encodingutf-8, xml_declarationTrue)这段代码的逻辑很简单遍历每个标注框拼装成 VOC 标准的 XML 结构。需要特别注意两个点一是depth字段灰度图虽然只有一个通道但多数检测框架内部会按 3 通道处理这里写 3 能避免下游读取报错二是difficult字段对边界情况比如伪影遮挡的疑似骨折可以标 1训练时框架可以按需忽略。VOC 格式转换完成后MxNet版本 1.1.0用im2rec工具生成包含原始图像、标记数据以及长宽信息的 record 文件。这一步是 MxNet 训练的前置步骤record 文件相当于把图像和标注打包成二进制训练时读取速度快很多。生成命令大致是python im2rec.py --recursive --list train.lst VOC2007/JPEGImages/ python im2rec.py --num-thread 4 train.lst VOC2007/JPEGImages/ VOC2007.rec第一条命令扫描 JPEGImages 目录并生成文件列表第二条命令按列表生成二进制 record。生成后还要做归一化和图像在线增强。归一化方面灰度图转成 0~1 的浮点值或按 ImageNet 的均值和标准差做标准化都可以在线增强一般包括随机水平翻转、小角度旋转、亮度和对比度微调。需要提醒的是医学图像不适合做大幅度的几何增强——肋骨形态和位置有解剖学约束过度旋转会让模型学到不真实的位置分布。3. Faster R-CNN 模型构建与训练为什么选两阶段检测器3.1 选型理由RPN 机制对小目标骨折的天然优势目标检测网络这么多论文选的是 Faster R-CNN不是 YOLO 也不是 SSD这个选择在医学影像场景下是有明确理由的。Faster R-CNN 的核心是区域提议网络Region Proposal Networks, RPN它用 M×N 的滑动窗口在特征图上生成候选区域再对每个候选区域做分类和回归。两阶段的结构意味着第一阶段先找可能有问题的地方第二阶段再细看这到底是什么骨折类型——这种机制对微小骨折、后肋骨折这类小目标更友好。YOLO 和 SSD 这类单阶段检测器速度快但 anchor 设计得不够细致时小目标漏检率明显更高。肋骨骨折里最难检的就是后肋的微小骨折论文里放射科医师漏诊的病例恰恰是这一类图 3d 的多发骨折患者两处新鲜骨折都被 CNN 检出后肋微小骨折被部分医师漏诊。RPN 通过滑动窗口密集生成候选框配合多尺度的锚框设计对小目标的召回能力是单阶段检测器不容易达到的。当然代价是推理速度慢一些——但在这个场景里单例 23 秒的平均检测时间已经远快于医生平均 155 秒的阅片时间速度不是瓶颈敏感度才是。锚框参数值得细说。论文标注框约 1 cm在 1024×1024 的输入上假定像素间距约 0.4~0.5 mm1 cm 对应约 20~25 个像素。Faster R-CNN 的特征图相对输入有 16 倍下采样也就是说 1 cm 病灶在最高层特征图上只占 1~2 个像素。这就是为什么要用特征金字塔FPN或者多尺度锚框——只靠单一尺度的特征图微小骨折很容易在下采样过程中丢失。复现时建议锚框面积从 8×8 到 64×64 像素按 2 的倍数递增长宽比按肋骨的形态特征设置为 1:1、1:2、2:1 附近。3.2 训练策略与数据划分在线增强与类别不平衡论文将单中心 974 例数据按 90%/10% 随机划分训练集 876 例、测试集 98 例测试集用于评估模型的分类和定位准确性。训练集和测试集的标签数分布见表 1训练集总标记 2006 处其中新鲜 976、愈合 811、陈旧 277测试集 1480 处中新鲜 480、愈合 611、陈旧 389。注意训练集里陈旧性骨折只有 277 处而测试集里有 389 处——类别不平衡在训练阶段就已经埋下伏笔。在线增强这块论文没有展开细节但按照这个数据规模常规做法是随机水平翻转、轻微尺度抖动和亮度扰动。我的经验是水平翻转对肋骨骨折是安全的——左右肋骨对称分布翻转不改变解剖结构语义。但垂直翻转和超过 15 度的旋转不建议加肋骨的弧形走向和椎体相对位置会被破坏模型会学到错误的空间先验。训练调参方面预训练权重要用。拿 ImageNet 预训练的骨干网络做迁移学习收敛速度和最终精度都远好于从头训练。微调时学习率一般从 0.001~0.005 起步batch size 视显存而定RPN 和 RoI 头的正负样本比例按 Faster R-CNN 默认的 1:3 即可。值得留意的是一处骨折可能跨多个 CT 层面同一骨折在相邻层都会出现标注框这会让模型对同一骨折产生多个高置信度预测——这正是下一节结果合并程序要解决的问题。3.3 结果合并程序用 Dice 把跨层预测框拼成一个骨折单层预测的框不能直接用。1~2 mm 薄层 CT 上一处骨折往往会连续出现在多层图像中模型在每一层都可能给出一个骨折预测框直接输出就是一堆重复框。论文设计的结果合并程序目标是把同一骨折的多个预测框合并成一个病灶并输出结构化报告。合并的核心是 Dice 相似系数公式为 Dice 2|X∩Y| / (|X||Y|)用来判断不同层面或同一层面不同部分的检测结果是否属于同一骨折。基本实现逻辑可以用下面的伪代码表示def merge_detections(detections, dice_threshold0.3): detections: list of dict, 每个包含 box (xmin, ymin, xmax, ymax), score, label, slice_id 按 slice_id 排序后依次判断相邻层的检测框是否属于同一骨折 merged [] current_group [detections[0]] if detections else [] for det in detections[1:]: # 取当前病灶在相邻层/邻位的检测框做 Dice 计算 best_dice 0.0 for prev in current_group: dice compute_dice(det[box], prev[box]) if dice best_dice: best_dice dice if best_dice dice_threshold: # 同一骨折并入当前组 current_group.append(det) else: # 新骨折把上一组收尾 merged.append(finalize_group(current_group)) current_group [det] if current_group: merged.append(finalize_group(current_group)) return merged这段代码的逻辑是按图像层序扫描用 Dice 系数判断相邻层的预测框是否指向同一病灶。注意这里有个参数要因地制宜dice_threshold取值很低0.3 级别是因为相邻两层 CT 之间骨折框的空间位置有微小偏移IoU 往往不高但框的重叠区域仍然能反映同一解剖位置。阈值设高了一处骨折会被拆成多个输出设低了相邻的两处独立骨折会被误并成一个。论文里输出结构化报告包含骨折对应的 CT 层数和肋骨类型括号内标注置信分数按层数顺序排列——这个格式本身就是为临床阅片设计的医生拿到报告可以直接跳转到对应层数复核。这个合并环节是论文实现里容易低估工作量的一步。很多人训练完模型看到输出框多就以为是模型效果差实际上模型在单层的检测是好的问题出在跨层框没有合并。我自己复现时发现合并前模型输出的骨折数是实际病灶数的 2~3 倍合并后数量和医生的诊断结果就对上了。3.4 效能评估指标精准度、召回率、F1 之外的统计细节论文的核心评估指标是精准度Precision、召回率Recall和 F1 值。单中心测试集和独立多中心测试集的平均精准度、召回率、F1 值均大于等于 0.8具体数值如表 2指标测试集新鲜骨折愈合期骨折陈旧性骨折精准度单中心0.8530.9020.831精准度多中心0.8050.8460.796召回率单中心0.9040.8770.820召回率多中心0.874约0.8620.834F1 值单中心0.8780.8890.826F1 值多中心0.8240.8460.816三类骨折横向对比新鲜骨折和愈合期骨折的检测效率略高于陈旧性骨折平均精准度 0.829、0.867 对 0.814平均召回率 0.875、0.870 对 0.827平均 F1 值 0.851、0.868 对 0.821。这个结果符合预期——陈旧性骨折的成熟骨痂和周围正常肋骨灰度接近骨折线不可见特征本身就是三类里最弱的。95% 置信区间用 1000 次抽样评估得到表中括号内为 95% CI这个统计口径在医学影像论文里是标配复现时别只看点估计要看区间有没有重叠。4. 实验设计与统计验证多中心鲁棒性如何落地4.1 多中心测试集的设计逻辑模型的鲁棒性不能只靠单中心数据验证。论文把验证拆成两层单中心测试集 98 例来自 A 医院和多中心测试集 50 例分别来自 B、C 两家医院后者作为独立验证集。这里的关键在于多中心测试集的数据来自不同的 CT 扫描仪、不同的患者人群、不同的扫描参数——A 医院用的训练数据来自 GE、Philips、Siemens 四台设备B、C 医院的数据在设备分布和操作习惯上存在差异模型是否还能保持同样的检测精度直接决定它能否跨院部署。表 2 的多中心测试结果显示多数指标都在 0.8 以上但陈旧性骨折的精准度略低0.796——跨中心时陈旧骨折的假阳性有所上升。这个细节在实际部署中价值很大单中心测试结果好不代表换一台设备还能好DICOM 图像里的设备指纹重建核、像素间距、灰度映射都会影响模型表现。做多中心验证时我一般会按设备型号分组统计指标如果某台设备的精准度明显偏低就检查是不是重建算法和训练数据差异过大。4.2 与放射科主治医师的对比实验时间缩短 132.07 秒论文招募了 5 名有 6~8 年 CT 诊断经验的放射科主治医师参与对比他们未参与肋骨骨折标注。测试数据是单中心测试集里 33 例具有 1 mm 层厚的患者全部 CT 图像5 名医生在不知患者诊断结果的情况下用骨窗阅片记录骨折类型和骨折 CT 层数助手记录诊断时间。CNN 模型方面输出的是结果合并后的结构化报告。结果有两组关键数据。诊断效能上CNN 模型和 5 名医生在新鲜骨折的精准度差异有统计学意义0.642 对 0.870p0.0015愈合期和陈旧性骨折的精准度差异无统计学意义p 值分别为 0.5779 和 0.1608。但 CNN 的敏感度在三种分类里都高于医生平均敏感度——新鲜骨折 0.956 对 0.725、愈合期骨折 0.875 对 0.614、陈旧性骨折 0.704 对 0.533p 值均小于 0.05。也就是说模型在找全这件事上明显优于医生代价是精准度在某些类别上略低。时间对比是最直观的落地价值。CNN 模型平均检测时间23.08±8.15s放射科医生平均诊断时间155.15±50.34s配对 Mann-Whitney U 检验 P0.01CNN 平均缩短 132.07 秒。这个差距在两分钟以上对急诊创伤场景意义很大——批量筛查时模型可以先筛一遍可疑层面医生只复核有疑问的图阅片效率能提升一个量级。4.3 统计分析方法从 K-S 检验到 fROC 曲线论文的统计方法可以作为医学影像 AI 实验设计的模板。数值先做 Kolmogorov-Smirnov 检验判断正态性符合正态分布记为均值±标准差否则记为中位数范围。训练集和测试集的性别对比用卡方检验年龄对比用 Kruskal-Wallis H 检验CNN 合并结果和 5 名医生的诊断效能比较用单样本 t 检验。绘制 fROC 曲线free-response receiver operating characteristic以敏感度为纵轴假阳性/真阳性为横轴5 名医生的指标点散布在曲线周围直观展示模型和人的差距。fROC 和多中心验证是这篇论文方法学上最值得借鉴的部分。很多检测类 AI 论文只报 mAP 和召回率但医学场景下在哪一层、哪一根肋骨是有临床意义的——fROC 能同时反映定位能力和漏检分布比单一指标更有说服力。置信区间用 bootstrap 抽样 1000 次计算这个做法也值得复现时沿用。5. 避坑与常见问题三类骨折识别边界与多中心泛化陷阱5.1 陈旧性骨折识别不准正常肋骨的高仿难题现象陈旧性骨折的检测效能全面落后于新鲜骨折和愈合期骨折多中心测试集上陈旧性骨折的精准度只有 0.796F1 值 0.816三项指标在各类别里垫底。原因两方面叠加。第一是训练数据量严重不足——训练集 2006 处标记中陈旧性只有 277 处占 13.8%而愈合期占 40.5%、新鲜占 48.7%。数据少模型见到的样本多样性就低。第二是特征本身弱——陈旧性骨折是愈合后的状态CT 上成熟骨痂和周围正常肋骨灰度接近没有锐利骨折线很容易被模型当成正常肋骨。解决按论文讨论部分的思路增加不同形状的陈旧性骨折作为训练集特别是对正常肋骨的负样本也要收集。另外可以在数据增强里对陈旧性骨折做更激进的对比度扰动人为放大骨痂区域和正常骨质的灰度差异。5.2 多中心测试掉点设备指纹比想象中影响更大现象单中心测试集新鲜骨折精准度 0.853、召回率 0.904、F1 值 0.878多中心测试集上分别掉到 0.805、约 0.874、0.824。三类骨折的多中心指标普遍低于单中心。原因多中心数据来自不同医院的 CT 扫描仪和不同重建参数。即便都用骨算法各设备的调制传递函数、噪声特性和灰度校准存在差异模型在训练数据的设备风格上学到的特征换一台设备就部分失效。论文中四台扫描仪均参与训练数据采集所以单中心效果尚可但外部医院的 50 例数据仍然暴露了泛化损失。解决最直接的办法是训练阶段混合更多设备的数据其次是做图像标准化比如直方图匹配或灰度分布归一化。复现时还可以做一个消融实验——只用 A 医院数据训练然后分别在 B、C 医院测试量化设备差异带来的性能损失这一步能帮你判断模型是真正学到了骨折特征还是只记住了某台设备的图像风格。5.3 结果合并的误判Dice 阈值设错会让计数失真现象结果合并程序的 Dice 阈值如果不合适要么一处骨折被拆成多个输出阈值太高要么相邻两处骨折被并成一个阈值太低导致最终诊断数错误。原因跨层 CT 中同一骨折在相邻层的框位置有微小偏移IoU 通常在 0.2~0.4 之间相邻的两处独立骨折如果空间距离很近在某一层的框也可能有部分重叠。Dice 系数是 IoU 的变体对框的大小差异不那么敏感但仍然无法彻底区分这两种情况。解决按论文思路在正式实验前用一组人工标注数据调 Dice 阈值——选取 30 例左右有多发骨折的患者人工数出真实的骨折数量然后扫描阈值从 0.2 到 0.6选一个使合并数量最接近真实数量的值。另外可以结合层间距离做约束相邻两框如果隔了超过 3 个层面即使 Dice 达标也不合并因为同一骨折在薄层 CT 上通常连续出现 2~5 层。5.4 多发骨折的漏诊模型和医生都会犯的错现象论文图 3d 的多发骨折患者两处新鲜骨折被 CNN 准确检出但后肋的微小骨折被部分放射科医师漏诊图 3e 中两个愈合期骨折被部分医师误诊为陈旧性骨折其中一个被 CNN 准确检出。原因多发骨折场景下注意力容易分散后肋区域由于解剖结构重叠多、皮质骨厚度变化大无论人还是模型都容易漏检。模型的问题在于训练数据里微小骨折的样本比例不够后肋区域的标注框数量也偏少。解决训练时按肋骨区域前肋、腋肋、后肋做分层统计确保每个区域的骨折样本数量均衡推理时对后肋区域可以降低置信度阈值把更多候选框送入复核列表宁可让医生多看一眼可疑框也不能漏掉。6. 复现后的验证技巧先画 fROC 再看分层数据模型训练完别急着看总指标。我复现这套方案后养成了一个习惯对输出结果做两件事第一是画出 fROC 曲线第二是分肋骨区域、分层厚统计检测指标。fROC 曲线和 mAP 这类单一指标不一样的是它能直接告诉你假阳性率压到每例 0.5 个时敏感度还剩多少。论文里 5 名医生的点散布在曲线周围你可以把自己的模型输出也这样标上去——如果模型在低假阳性段就明显高于医生点说明它适合做 pre-screen如果高假阳性段才追上医生那它只能做辅助标注。分层统计同样重要。论文的数据在 1 mm 和 2 mm 层厚上都能跑但两者表现很可能有差异——1 mm 层厚能显示更细微的骨折线但噪声和层数也更多2 mm 层厚信噪比高但微小骨折可能被部分容积效应抹平。复现时按层厚分组统计召回率如果 2 mm 数据上召回率明显下降建议把训练数据里薄层图像的比例提高。另一个维度是肋骨区域前肋骨折特征明显容易检后肋骨折周围结构复杂容易漏按区域分层统计能帮你判断模型是不是只在容易的地方表现好。推送结构化报告前我会把所有假阳性病例单独拉出来看一遍——这一步没有脚本能替代。论文里图 3f 展示了一个典型假阳性正常人被识别为陈旧性骨折。这类错误通常集中在肋软骨钙化、陈旧性胸膜增厚或者肋骨正常解剖变异上。看到几次这样的假阳性后你就知道模型是真的学到了骨折特征还是在高仿区域上犯了迷糊。从那以后我每次跑检测模型都强制走一遍fROC 分层统计 假阳性人工复核这三步没有这三步把关再好看的指标我也不敢信。希望帮到你。本文还有配套的精品资源点击获取