这是一篇2021年的文章,发表在IEEE Transactions on Medical Imaging。主要内容是一个开放的数据集(ROSE)和一个开源的OCTA血管分割模型(OCTA-Net)。
ROSE数据集
论文中并没有给出数据集的下载链接,数据集需要发邮件向作者索要:
数据集官方网址:
https://imed.nimte.ac.cn/dataofrose.html
ROSE-1
ROSE分为ROSE-1和ROSE-2。ROSE-1共包括来自39名受试者(包括26名阿尔茨海默病(AD)患者和13名健康对照者)的117张OCTA图像。AD组和对照组都是60岁以上的老人。所有的OCTA扫描结果的图像分辨率为304×304像素。扫描区域是以中心凹为中心的3×3mm2。获得每个参与者的SVC(浅层)、DVC(深层)和SVC+DVC(浅层+深层)血管造影。ROSE-1的示例图如下:
ROSE-1的标注分为两步,分别是:
(1)中心线级注释。由专家分别对SVC、DVC和SVC+DVC图像,使用ImageJ软件手动追踪血管中心线,如图A-2、B-2、C-2所示;
(2)像素级注释。如图A-3和C-3所示。
最终的GroundTruth是上述两步标注综合的结果。
ROSE-2
ROSE-2包含来自112只患有各种黄斑疾病的眼睛的112张OCTA图像。ROSE-2并非人工标注,而是由matlab标注。原文是这样表述的:
All the visible retinal vessels were manually traced using an in-house program written in Matlab (Mathworks R2018, Natwick) by an experienced ophthalmologist.
数据集Ground Truth是由一位经验丰富的眼科医生使用的matlab编写的内部程序“手动追踪”的。具体怎么个“手动追踪”,我们不得而知。为什么ROSE-1标注用ImageJ而ROSE-2标注用matlab呢?原文也没说。可能是matlab相比ImageJ更省力吧,相对的标注准确度也会下降一些。总之ROSE-2的可靠性应该要比ROSE-1要低一些。ROSE-2的示例图如下:
ROSE-2只标注了血管中心线,然后把这些中心线加粗到7个像素,作为血管的GroundTruth。不论是粗的血管还是毛细血管,在GroundTruth中都是7像素粗。从这一点上说,ROSE-2的精准度不如ROSE-1。
OCTA-Net
这篇论文开源了模型代码:
https://github.com/iMED-Lab/OCTA-Net-OCTA-Vessel-Segmentation-Network
OCTA-Net分为两个阶段,两个网络。第一阶段的网络负责生成粗略的估计,第二阶段的网络负责生成精细的估计。
第二阶段我没怎么看懂,就只能讲一讲第一阶段:输出有3个,粗血管分割图、细血管分割图和粗+细血管分割图。
原文细节说的比较啰嗦,我们就直接看代码吧。对应的源码文件是first_stage.py中的SRF-UNet。
提出的模型本质上是一个U-Net,或者说Encoder-Decoder模型。输入一个图片x,Encoder负责将x逐层提取特征,形成x0,x1,x2,x3,x4,x5。
然后是粗血管的解码。使用的是很熟悉的U-Net的基本操作,包括上采样,跳跃连接等。
细血管的解码是从编码器的第二层输出x2开始解码。值得注意的是,细血管和粗血管的编码器是同一个编码器,共享权值,而解码器是不同的解码器,不共享权值。
前面已经做完了细血管的分割和粗血管的分割。最后粗+细血管的分割只是简单地在前两个结果中取最大值。
前面对forward函数的分析已经能大致看出网络结构。细节方面,用到了Resnest和split attention,想要了解的话,看看resnest相关的解析博客就可以了。