1简单介绍
1.1 论文简介
论文地址Video-based AI for beat-to-beat assessment of cardiac function
数据集地址:here获取好像还挺麻烦的。需要在网站上填写并申请数据集,斯坦福那边会发邮件并拉入一个box组,就可以访问公开的超声心动数据集了。
对心功能的准确评估对于心血管疾病的诊断、心脏毒性的筛查以及对危重症患者的临床管理的决策至关重要。然而,人类对心功能的评估集中在有限的心脏周期抽样上,尽管经过多年的训练,但观察者间存在相当大的差异性。在这里,为了克服这一挑战,我们提出了一种基于视频的深度学习算法——EchoNet-Dynamic——它在分割左心室、估计射血分数和评估心肌病等关键任务上超过了人类专家的表现。
通过超声心动图视频的训练,我们的模型以骰子相似度为0.92精确分割左心室,预测射血分数的平均绝对误差为4.1%,并可靠地分类射血分数降低的心力衰竭(曲线下面积为0.97)。在来自另一个医疗保健系统的外部数据集中,EchoNet动力学预测射血分数的平均绝对误差为6.0%,并将射血分数降低的心力衰竭的曲线下面积分类为0.96。
通过重复的人类测量进行的前瞻性评估认为,该模型的方差与人类专家相当或更小。通过利用多个心脏周期的信息,我们的模型可以快速识别射血分数的细微变化,比人类评估更具有可重复性,并为实时精确诊断心血管疾病奠定了基础。作为促进进一步创新的资源,我们还公开了一个包含10,030个带注释的超声心动图视频的大型数据集。
注意:这个代码有三个任务,我们先学习左心室的分割。
先看一下分割与评估的结果:
1.2 代码目录
1、代码克隆:
git clone https://github.com/echonet/dynamic.git
cd dynamic
(如果不清楚可以去学并且安装一下git,也可以直接到github下载下来打开)
我就是下载之后打开的
2、目录介绍
a4c-vedio-dir: 用于训练、验证、测试的数据集。下面有三个文件:vedios——处理过的avi视频文件;FileList.csv——训练、验证需要的视频信息;VolumeTracings.csv——视频的一些信息要素。
doc: 说明文档。
echonet: 核心代码,将被打包成库运行。
output: 输出路径。因为运行结果已经保存在这里,我们运行的时候可以先将这个目录移除。
scripts: 一些工具文件。
2 代码运行
1、首先需要运行setup.py文件,安装必要的包以及将echonet打包成库。
python setup.py install
2、左心室分割(Frame-by-frame Semantic Segmentation of the Left Ventricle)
echonet segmentation --save_video
它会创建一个保存目录是output/segmentation/deeplabv3_resnet50_random/
我之前在这里,运行遇到了问题,可以尝试修改echonet里的文件,再运行setup.py文件。
比如我这里报错:numpy没有属性int,我将echonet/utils/segmentation.py下的np.int全部修改成了np.int_。
可能是我的numpy版本是1.23
因为运行结果已经保存在output这里,我们运行的时候可以先将这个目录移除。要不然可能看不到进度条。
出现下面这样的进度条,说明运行成功
运行完之后,会生成如下文件:
log.csv:培训和验证损失
checkpoint.pt:检查点
best.pt:具有最低验证损失的模型的权重检查点
size.csv:每帧左心室的估计大小和心跳开始的指示符
vedios:包含具有分段覆盖的视频的目录
3数据集介绍
默认情况下,EchoNet Dynamic假设数据副本保存在此目录中名为a4c-video-dir/的文件夹中。可以通过创建名为echonet.cfg的配置文件来更改此路径(示例配置文件为example.cfg)。
3.1论文中的介绍
作者分享了一组10030张超声心动图图像,用于训练EchoNet Dynamic。使用OpenCV和pydicom对这些图像进行了预处理,包括从DICOM格式到AVI格式的视频的识别和转换。更多信息请访问https://echonet.github.io/dynamic/.
超声心动图视频:标准的完整静息超声心动图研究包括一系列视频和图像,从不同角度、位置和图像采集技术可视化心脏。该数据集包含 10,030 个顶端 4 腔超声心动图视频,这些视频来自 2016 年至 2018 年期间接受成像的个人,作为斯坦福大学医院常规临床护理的一部分。
使用自动化预处理工作流程来删除识别信息并消除意外的人类标签。随后的每个视频都被裁剪和屏蔽,以删除文本、心电图和呼吸计信息以及扫描扇区以外的其他信息。生成的方形图像为 600 × 600 或 768 × 768 像素,具体取决于超声机器,并使用 OpenCV 通过三次插值向下采样为标准化的 112 × 112 像素视频。
3.2 详情介绍
数据集的文件目录如下:
a4c-vedio-dir: 用于训练、验证、测试的数据集。
下面有三个文件:
vedios——处理过的avi视频文件;
FileList.csv——训练、验证需要的视频信息;
VolumeTracings.csv——视频的一些信息要素。
我们先不管视频是如何处理成这种形式的,先了解一下用于训练、验证的数据格式。
首先vedios是文件夹,下面存放的是avi视频文件。
FileList.csv
文件名 | 射血分数 | 收缩末容量 | 舒张末容量 | 帧长 | 帧宽| 帧率 | 帧编号 | 分割成训练集、验证集还是测试集
应该是每个视频提取出的一帧,目前认为是人工提取的一帧。
其中包括10030行,训练集7465个,验证集1288,测试集1277。其中大约75% 个用于训练,12.5% 个用于验证,12.5% 个用于测试。
VolumeTracings.csv
文件名 | X1坐标 | Y1坐标 |X2坐标 | Y2坐标 | 帧?
4模型介绍
对于每位患者,EchoNet-Dynamic使用标准的心尖四腔视图超声心动图视频作为输入。该模型首先使用具有残差连接的时空卷积预测每个心动周期的射血分数,并使用专家人类追踪的弱监督生成左心室的帧级语义分割。这些输出组合在一起,以创建射血分数的逐搏预测,并预测射血分数降低时是否存在心力衰竭。AUC,曲线下面积。
EchoNet-Dynamic有三个关键组件。首先,我们构建了一个具有空洞卷积的CNN模型,用于左心室的帧级语义分割。atrous卷积技术使模型能够捕获更大的模式,并且之前已被证明在非医学成像数据集上表现良好。估计射血分数的标准人体临床工作流程需要在收缩末期和舒张末期手动分割左心室。我们用弱监督方法概括这些标签,使用atrous卷积,以在整个心动周期中生成帧级语义分割,与原始视频中的帧以1:1的配对。自动分割用于识别心室收缩,并提供模拟临床工作流程的临床医生可解释的中介。
其次,我们训练了一个CNN模型,该模型具有残差连接和跨帧的时空卷积,以预测射出分数。与以前的用于医学图像机器学习的CNN架构相比,我们的方法在我们的网络卷积中集成了空间和时间信息。时空卷积(包含二维空间信息以及三维空间信息)以前已用于非医学视频分类任务29,30.然而,鉴于标记的医疗视频相对稀缺,这种方法以前没有用于医疗数据。我们还执行了模型架构搜索,以确定最佳的基础架构(扩展数据图)。
最后,我们对射血分数进行视频级预测,以估计心脏功能的逐搏估计。鉴于心脏功能的变化可能是由各种心脏条件下负荷条件和心率的变化引起的,建议对最多五个心动周期的射血分数进行估计;然而,鉴于计算的繁琐和费力的性质,这并不总是在临床实践中完成。我们的模型识别每个心动周期,生成一个 32 帧的剪辑,并平均每个心跳的射血分数的剪辑水平估计值作为测试时间增强。EchoNet-Dynamic是使用在斯坦福医学院常规临床实践过程中获得的10,030个顶端四腔超声心动图视频开发的。
5代码解读
参考
翻译与学习,源自:https://www.nature.com/articles/s41586-020-2145-8
您的鼓励是我源源不断创作的动力~
感谢观看哦!