作者 | Mansar Youness
来源 | Towards Data Science
编辑 | 代码医生团队
动机:
医学图像的自动分割是提取有用信息的重要步骤,可以帮助医生进行诊断。例如它可以用于分割视网膜血管,可以代表它们的结构并测量它们的宽度,从而可以帮助诊断视网膜疾病。
在这篇文章中,将实现一个神经基线,将图像分割应用于视网膜血管图像。
数据集:

在整个文章中使用DRIVE(数字视网膜图像用于血管提取)数据集进行所有实验。它是40个视网膜图像(20个用于训练,20个用于测试)的数据集,其中血管在像素级注释(参见上面的示例)以标记每个血管的存在(1)或不存在(0)。图像的像素(i,j)。
http://www.isi.uu.nl/Research/Databases/DRIVE/
问题设定:
问题:如果像素是图像中血管的一部分,希望为每个像素分配“1”标签,否则为“0”。
直觉 / 假设:相邻像素值对于对每个像素(i,j)进行预测很重要,因此应该考虑上下文。预测不依赖于图像上的特定位置,因此分类器应具有一些平移不变性。
解决方案:使用CNN!将使用U-net架构进行血管分割。它是一种广泛用于语义分割任务的体系结构,尤其是在医学领域。
型号:

U-Net
U-net架构是编码器 - 解码器,在编码器和解码器之间具有一些跳过连接。该架构的主要优点是能够在对像素进行预测时考虑更广泛的上下文。这要归功于上采样操作中使用的大量通道。
输入图像处理:
在将其反馈到CNN之前应用这一系列处理步骤。
训练三种不同的模型:
将使用AUC ROC度量比较这三个模型,将仅在评估中考虑视网膜掩模内的像素(意味着图像圆周围的黑色边缘将不计算)。
结果:
三种变化的性能接近,但在这种情况下,预训练似乎没有帮助,而数据增加有一点点。

最佳模型预测
上图中的预测看起来很酷!

在基本事实之上的预测
还绘制了预测和基本事实之间的差异:蓝色的假阴性和红色的假阳性。可以看到该模型在预测仅一或两个像素宽的细血管方面存在一些困难。
结论:
在这篇文章中,实现了一个神经网络来进行图像分割,应用于视网膜图像中的血管检测。获得了0.9820的AUC ROC,这非常接近现有技术(https://paperswithcode.com/search?q=vessel)。发现实验结果最有趣的是,对于像这样的一些任务,可以在20个图像上训练深度神经网络,并且仍然可以获得良好的性能和非常酷的结果。
可以在此处获得重现结果的代码:
https://github.com/CVxTz/medical_image_segmentation