为什么CT自动判读饶有趣味又充满挑战?
对于放射科医生来说,为每张CT扫描图像都撰写这么详细的报告是非常耗时的。如果患者接受了多次不同期的CT扫描(例如,首次扫描后的三个月又接受了后续的扫描),这就更加耗时了,因为在这种情况下,放射科医生还要同时比较两次扫描,以了解患者的健康状况产生了什么变化。人们对开发机器学习方法自动判读CT图像非常感兴趣,因为这可以加速放射工作流程并降低放射科医生的实时诊断错误率(目前为3-5%)。
CT扫描图像的自动判读具有挑战性,原因如下:
挑战1:患者的解剖结构根据性别、年龄、体重和正常的解剖变异而自然变化。因此,“变异”并不一定意味着“异常”。
挑战2:胸部CT图像可以显示数百种可能的异常。下图仅显示了几个例子,包括嗜酸性肺炎、空洞性病变、囊肿、肺气肿、气胸和肺纤维化:
![病例]](http://images.deephub.ai/upload/5c699d90697f11ea90cd05de3860c663.png)
挑战3:一张CT图像上常会出现多种不同的异常。平均一张CT图像包含了10±6种不同的异常。下面是几个一张CT扫描切片上存在一个以上异常的例子:
挑战4:此外,在一次扫描中经常出现多个同一类型的异常。下面,我们可以分别看到一张含有多处肺气肿的图像,一张含有多个肺部结节的图像,以及一张含有多个肿块的图像:
挑战5:不同种类的异常可能看起来彼此非常相似。在这些情况下,放射科医生必须依靠他们多年的经验和患者的病史来确定异常的性质。下面的图像分别显示肿瘤(“TUM”)和肺不张(“ATL”),两者在这次扫描中看起来十分相似:
挑战6:同种病变可能在外观上却有所不同。例如,同种类型的病变会因严重程度不同而在外观上出现差异,例如下面的肺炎扫描,左边的扫描显示整个肺部因肺炎而白化,而右边的扫描显示只有一小部分肺部因肺炎而白化:
同样的异常也可能因其形状和纹理而看起来不同。下图显示了各种外观的肺结节,这些结节根据其形状(如分叶状、尖状、圆形)和纹理(如磨玻璃状、固体状)而不同:
下图总结了CT图像自动判读面对的挑战:
如何利用机器学习实现CT自动判读
为了了解如何使用机器学习进行CT自动判读,首先要考虑用什么类型的数据来训练模型。
医疗信息系统将CT图像与相应的CT报告成对保存:
有些病人只有一张CT图像和报告,如上图中的病人000000。其他病人将有多个CT图像和报告。这些多个CT图像可能是在不同的时间和/或身体的不同部位进行的(尽管本文重点着眼于胸部CT,但也有可能是头部、腹部、骨盆和其他部位的CT)。
我们还需要考虑哪些数据是无法在医疗信息系统中获得的:
如上图所示,一般来说,我们无法获得:
- 用于分割的遮罩:这些是像素级的标签(即感兴趣的异常病变的轮廓),用于训练图像分割模型。关于医学图像的分割模型请参阅本文。
- 边界框:这些是在图像中的异常病变周围绘制的边界框,通常用于训练目标检测模型。严格来说,放射科医生有时确实会直接在图像上画线或做其他注释,通过一些额外工作,这些注释可以变成可用于训练机器学习模型(例如DeepLesion)的边界框注释。然而,放射科医生肯定不会在一张CT图像上注释每一种异常,而且很可能放射科医生只注释一种异常类型的一个典型实例(例如,多个结节中的一个结节)。因此,想要获得所有病变的所有边界框是肯定不现实的。
- 图像标签:这些标签用于标记整幅图像的属性,用于训练基于整张CT图像的分类器。有人可能认为医院会在CT图像上存储标签,例如显示是否存在肿块(肿块=0 vs. 肿块=1)。然而,医院并不储存这些信息,唯一可用的信息则是文本报告。在以后的文章中,我将描述如何从文本报告中获取结构化的图像标签。