计算机辅助手术的发展是为了提高手术的正确性和安全性。然而,研究人员和工程师在开发和训练更好的算法时,要忍受有限的注释数据。因此,诸如同步定位与映射(SLAM)等基础算法的发展受到了限制。本文阐述了为语义分割准备数据集的工作,这是许多计算机辅助手术机制的基础。基于Cholec80数据集[1],我们从Cholec80的17个视频片段中提取了8080个腹腔镜胆囊切除术图像帧,并对图像进行了注释,并向公众发布。该数据集名为CholecSeg8K。每个图像都在像素级别上标注了13个类,这些类通常在腹腔镜胆囊切除术手术中建立。CholecSeg8k基于CC BY-NC-SA 4.0 license发布。
CholecSeg8K数据集使用由CAMMA(医学活动计算分析和建模)研究小组提供的Cholec80[1]的内窥镜图像作为基础。该研究小组与斯特拉斯堡大学医院、斯特拉斯堡IHU和IRCAD合作构建了该数据集。Cholec80包含了由13名外科医生进行的胆囊切除手术的80个视频。Cholec80中的每个视频以25fps的速度捕捉过程,并注释了工具的存在和操作阶段。我们的工作选择了Cholec80提供的视频的一个子集,并在所选视频的提取帧中创建语义分割掩码。
为了更好地组织和访问,CholecSeg8K数据集中的数据被分组到一个目录树中。第一级树上的每个目录表示从Cholec80提取的视频剪辑,并以视频剪辑的文件名命名。二级树上的每个目录存储80帧视频剪辑的原始图像数据、注释和颜色掩码。该目录根据原始视频片段的文件名和提取的视频片段的起始帧索引命名。
这些帧被提取并放置到目录中,每个目录包含80个连续的视频帧,分辨率为854x480,带有注释的语义分割掩码。总共有101个目录,总帧数为8080。不同物体的类别总数为13类,包括黑色背景、腹壁、肝脏、胃肠道、脂肪、抓手、结缔组织、血液、囊管、L钩电灼(仪器)、胆囊、肝静脉、肝韧带。在这个数据集中,并不是所有13个都在同一时间出现在同一帧中。
在数据集中,每帧都有三个掩码,一个颜色掩码,一个注释工具使用的掩码,以及一个分水岭掩码。彩色蒙版主要用于可视化。分水岭掩码包含具有更简单像素读数的对象,即三个通道的值相同,以便于处理。这些值是注释工具中类的id。注释工具使用另一个掩码,即注释期间手绘的掩码,生成颜色掩码和分水岭掩码。标签有彩色掩模和分水岭掩模两种。分水岭掩码将类的ID存储为所有三个通道的像素值。颜色遮罩将类绘制成不同的颜色。id和颜色在注释工具中定义。
表I显示了图1、2、3中类号对应的类名,以及分水岭掩码中的RGB十六进制代码
Class Number Class Name RGB hexcode
Class 0 Black Background #505050
Class 1 Abdominal Wall #111111
Class 2 Liver #212121
Class 3 Gastrointestinal Tract #131313
Class 4 Fat #121212
Class 5 Grasper #313131
Class 6 Connective Tissue #232323
Class 7 Blood #242424
Class 8 Cystic Duct #252525
Class 9 L-hook Electrocautery #323232
Class 10 Gallbladder #222222
Class 11 Hepatic Vein #333333
Class 12 Liver Ligament #050505
计算机辅助手术的发展是为了提高手术的准确性和安全性。然而,研究人员和工程师在开发和训练更好的算法时,要忍受有限的注释数据。因此,诸如同步定位与映射(SLAM)等基础算法的发展受到了限制。
本文阐述了为语义分割准备数据集的工作,这是许多计算机辅助手术机制的基础。基于Cholec80数据集[3],我们从Cholec80的17个视频片段中提取了8080个腹腔镜胆囊切除术图像帧,并对图像进行了标注。该数据集名为CholecSeg8K,总大小为3GB。每个图像都在像素级别上标注了13个类,这些类通常在腹腔镜胆囊切除术手术中建立。CholecSeg8k基于CC BYNC-SA 4.0许可发布。
内窥镜检查是一种常用的检查、诊断和治疗器官的方法,这些器官如食道、胃、结肠等不通过手术很难检查。在临床环境中,内窥镜医生通过控制手柄操作内窥镜,同时观看外接监视器上记录的输出视频。然而,内镜检查的结果高度依赖于操作者的培训和熟练程度。不稳定的手控运动和器官运动对图像分析和操作结果有显著影响。
许多计算机辅助系统已经被开发出来,通过在手术过程中为外科医生提供指导和附加的上下文特定的信息来方便外科医生进行内窥镜手术。一些这样的系统使用磁性或基于无线电的外部传感器来估计和检测病人体内的内窥镜位置。然而,这些容易出错,它是不现实的,以达到亚厘米的定位精度。例如,Hu等人提出的[2]系统需要16个传感器才能实现5.6 mm的定位精度。
同步定位和映射(SLAM)是一种基于图像的方法,用于在像素级精度上定位相机,不需要基础设施。该方法通过比较感知数据和参考数据,生成实时的三维地图,并估计出摄像机在三维空间中的位置。幸运的是,可以提前收集到参考数据。例如,利用256波束激光雷达和GPS-RTK预先采集高清点云图。在运行期间,其他的可以使用16束激光雷达收集点云数据,并以5厘米的精度进行自身定位。将SLAM应用于内窥镜导航,必须对图像进行准确的语义分割评估。
准确的SLAM的关键要求之一是使用正确的参考数据进行比较。在户外环境中,可以使用GPS获取大范围的位置,并查询相应的参考数据,以GPS位置为索引。然而,这种方法不适用于内窥镜检查。
一种可能的方法是识别图像中显示的器官,然后使用结果查询参考数据。
第一部分可以通过语义分割(为每个像素标记对象类)或对象检测(为绑定框标记对象类)进行。语义分割和目标检测都需要标记良好的图像数据来训练预测网络,这在内窥镜图像中还没有广泛应用。
我们构建了一个开放的语义分割内窥镜数据集,可供医学和计算机视觉社区使用。研究人员可以省去训练预测模型的工作,例如FCN、PSPNet、U-Net和其他机器学习方法,例如Deeplab系列。该数据集包括从Cholec80数据集的17个视频剪辑中提取的共8080帧内窥镜图片语义分割标签示例[3,6]。
注释有十三个类。
图1显示了图像和注释的一个示例。图1(a)是来自Cholec80数据集的原始图像数据,图1(b)是表示图像中像素类别的颜色掩码。注释的细节将在稍后介绍。
CholecSeg8K数据集使用由CAMMA(医疗活动的计算分析和建模)研究小组发布的来自Cholec80[3]的内窥镜图像作为基础。研究小组与斯特拉斯堡大学医院、IHU斯特拉斯堡分校和IRCAD合作构建数据集。
Cholec80包含了13名外科医生进行的胆囊切除手术的80个视频。Cholec80数据集中的每个视频都以每秒25帧的速度记录操作,并有仪器和操作阶段的注释。我们的工作从Cholec80数据集中选择了高度相关的视频子集,并在所选视频中提取的帧上标注了语义分割掩码。
CholecSeg8K数据集中的数据被分组到一个两级目录中,以便更好地组织和访问。
图2显示了详细说明目录的一部分。
第一级的每个目录收集从Cholec80提取的视频剪辑数据,并以视频剪辑的文件名命名。例如,图2中的video01和video09是Cholec80数据集中的两个不同的视频片段,即01和09。
二级树上的每个目录存储视频剪辑中80个图像的数据,并由选定视频剪辑中第一个图像的视频文件名和帧索引命名。
例如,目录video12_15750存储视频文件video12第15750帧到第15829帧的数据。每个二级目录存储80帧的原始图像数据、注释和颜色掩码。共有101个目录,总帧数为8080。
每个图像的分辨率为854像素×480像素。
数据集的总大小为3GB。
不注释所有帧的原因是跳过与语义分割无关的操作。例如,准备阶段和结束阶段没有注释。
该数据集中的注释类数量为13个,包括黑色背景、腹壁、肝脏、胃肠道、脂肪、抓握器、结缔组织、血液、胆囊管、L钩电烙术(器械)、胆囊、肝静脉和肝韧带。表I显示了数据集中类ID对应的类名
在注释像素时,注释类被定义为针对胆囊切除手术,这是Cholec80数据集中的目标操作。具体来说
注释类旨在识别肝脏和胆囊。
其他与手术无关的注释类被定义为更广泛的覆盖范围。
其他与手术无关的注释类被定义为更广泛的覆盖范围。特别是,两个注释类的覆盖面更广。
它们是胃肠道和肝韧带。胃肠道类别包括胃、小肠和附近组织。肝韧带包括冠状韧带、三角韧带、镰状韧带,肝圆韧带,静脉韧带和小网膜。
类别0黑色背景类别1腹壁类别2肝脏类别3胃肠道类别4脂肪类别5抓取器类别6结缔组织类别7血液类别8膀胱导管类别9 L钩电灼类别10胆囊类别11肝静脉类别12肝韧带
在这个数据集中,并非所有13个类都同时出现在每个帧中。13个类的注释像素比率如图3所示。正如人们可能注意到的那样,这些类没有很好地平衡,如果使用时不小心,可能会导致较差的训练结果。
图三显示注释像素比率大于1%的类的注释比率。
其中,肝脏类有近30%的注释像素,胆囊类有10%的注释像素。
通常出现在图像背景中的腹壁类,在所有注释像素中也有30%的注释像素。
胃肠道组织,包括胃和小肠,靠近肝脏和胆囊,因此经常可见。其注释比率也大于1%。图3(b)显示了注释像素比率小于1%的类的注释比率。L钩电刀和抓握器是胆囊切除术中常用的两种工具。然而,与图像中的其他对象相比,它们的物理尺寸相对较小。因此,其注释像素的比例小于1%。
类别ID 类别名称:
类别0——黑色背景
类别1——腹壁
类别2——肝脏
类别3——胃肠道
类别4——脂肪
类别5——抓取器
类别6——结缔组织
类别7——血液
类别8——囊性导管
类别9 ——L形钩电灼
类别10——胆囊
类别11——肝静脉
类别12——肝韧带
在数据集中,
每个帧有三个对应的遮罩,包括一个颜色遮罩、一个注释工具使用的注释遮罩和一个分水岭遮罩。不同对象的注释类以颜色遮罩和分水岭遮罩显示。
为了可视化的目的,对颜色掩码进行了注释,如图1(b)所示。
分水岭掩模是为了编程而提供的,其中每个带注释的像素对于三个颜色通道具有相同的类ID值。
PixelAnnotationTool[1]用于注释图像并生成PNG格式的三个掩码。注释工具允许用户注释预定义类的像素,并生成颜色掩码和分水岭掩码。
图4显示了video01_00080文件夹的示例掩码和原始图像。数据集中的每个项目由四个文件组成:原始图像、颜色掩码、注释掩码和分水岭掩码。在CholecSeg8K数据集中,四个文件都以PNG格式存储。
本节以数据集中提取的几对图像和颜色掩码(即类ID的注释)为例演示数据集。图5、6和7是三个代表性示例。图的左侧显示了从Cholec80数据集提取的原始图像,图的右侧显示了CholecSec8K数据集中原始图像的颜色掩模。
图5是一个简单的例子,显示了内窥镜图像中的胆囊(类别ID 10)、韧带(类别ID 12)和脂肪(类别ID 4)。部分肝脏(类ID为2)也可以查看。标注为ID 12的组织是肝脏的圆韧带。如前所述,我们没有在该数据集中具体注释不同的肝韧带,并且仅对所有肝韧带使用一个类别。
图6显示了一个更复杂的案例,该案例中有11个类别和仪器。图像包含肝脏(类别ID 2)位于图像的中心,胆囊(类别ID 10)位于图像顶部中心。两种器械,抓握器(类别ID 5)和L形钩电烙器(类别ID10)也可以查看和注释。
由于图像的亮度较低,FoV边缘的注释对于人类专家来说仍然很重要
例如,在这个图中,抓取器(类ID 5)的顶部边缘很容易识别。这种模棱两可的情况被保留下来,因为数据集旨在分割人体器官。
图7从不同角度显示了肝脏和胆囊。此示例还包含11个类的像素。
CholecSeg8k数据集根据许可证CC BY-NC-SA 4.0发布,可在Kaggle网站上免费获取[4]。图8显示了www.kaggle.com上的CholecSec8K数据集页面的屏幕截图。数据集页面上提供了有关使用数据集的说明。
训练与测试集数据划分,数据加载(images,groundtruth),jison脚本问题
分割整理数据,训练集,测试集与验证集划分,采用3:6:1,由于这部分代码再main()函数中,选择利用其它块代码整理好并保存至本地数据,再次在main()函数中填写路径,读取即可。使用彩色掩码图片作为groundtruth,重新编写json文件即可,跑通。
完成图片整理,完成训练集,测试集,验证集划分——6:2:2
问题一:写入文件有同名图片,会产生覆盖,个数应该为8080
解决了重名文件覆盖问题,划分好了数据。
重写jison文件,将接口和入代码,在寻找问题