国外和国内X光手骨数据集和RUS-CHN计分法预测骨龄

一、问题描述

X光手骨骨龄计算的意义为通过定期进行骨龄评估,可以及时了解儿童的生长发育状态,对于生长发育异常的儿童,可以及早发现并采取措施。骨龄测定对于内分泌疾病、矮小症等疾病的诊断和治疗具有重要价值,可以帮助医生制定更有效的治疗计划。

骨龄是骨骼年龄的简称,需要借助于骨骼在X光摄像中的特定图像来确定。通常要拍摄左手手腕部位的X光片,医生通过X光片观察来确定骨龄,是一件非常消耗精力和时间的一项放射临床工作。

二、数据集1-RSNA2017

在2017年的RSNA(北美放射学会年会)上,有一个比赛赛题是:根据儿童手部的X光片中准确识别他们的年龄。基于比赛提供的RSNA2017数据集,使得实验和进行教育演示变得更容易。此外,激励人们创造出一些新想法,构建的更智能的模型,解决基于X光图像进行骨骼年龄的计算问题。

数据结构

训练数据集数据结构:boneage-training-dataset.csv

列名描述数据类型
id图像的唯一标识符整数
boneage预测的骨骼年龄(单位:月)整数
male性别指示。女性的值为FALSE。布尔值

数据样例:boneage-training-dataset.csv

idboneagemale
1377180FALSE
137812FALSE
137994FALSE
1380120TRUE
138182FALSE

测试数据集数据样例:boneage-test-dataset.csv

Case IDSex
4360M
4361M
4362M
4363M
4364M
4365M
4366M

数据集使用许可协议

Deed – CC0 1.0 通用 – Creative Commons

对RSNA2017数据集致谢

该数据集最初作为RSNA挑战在CloudApp上发布。北美放射学会(RSNA)放射学信息学委员会(RIC)儿科骨龄机器学习挑战组织委员会:

Kathy Andriole, 马萨诸塞州总医院
Brad Erickson, 梅奥诊所
Adam Flanders, 托马斯杰斐逊大学
Safwan Halabi, 斯坦福大学
Jayashree Kalpathy-Cramer, 马萨诸塞州总医院
Marc Kohli, 加利福尼亚大学旧金山分校
Luciano Prevedello, 俄亥俄州立大学

儿科骨龄挑战中使用的数据集由斯坦福大学、科罗拉多大学和加利福尼亚大学洛杉矶分校提供。

三、RUS-CHN计分法

在2006年,《中国人手腕骨发育标准-中华05》骨龄标准被编 入《中华人民共和国行业标准》,成为中国目前唯一的行业骨龄标准。而在《中华05》中作者一般推荐使用RUS-CHN计分法。 bone.png

图中黄色高亮的地方是需要医生看的关节,医生做骨龄的时候,需要对每个关节,根及据骨骺的发育情况。判断对应的等级。查表格:”RUS-CHN法手腕骨发育等级得分表”,计算13个关节的等级分数之和,到”RUS-CHN骨成熟百分位数标准曲线”中,找到分数对应的年龄。

table3.png
bone.png

四、数据集2-手骨X光

基于RSNA2017骨龄预测比赛提供的数据集,这个比赛数据集每一张都是手部X光图片,取出881张对图片进行二次标注,成为目标检测数据。主要针对目前比较公认的骨龄计分法《中华05》中RUS-CHN法进行标注。数据类别有:桡骨、尺骨、第一掌骨、第一近节指骨、第一远节指骨、掌骨、近节指骨、中节指骨和远节指骨。

数据结构

目标标注列表

文件:dataset-hand-bone/VOCdevkit/VOC2007/ImageSets/Main/label_list.txt

Radius/桡骨:是构成前臂的两根主要骨骼之一,位于前臂的外侧(靠近拇指一侧)
Ulna/尺骨
MCPFirst/第一掌指关节
MCP/掌指关节
ProximalPhalanx/近节指骨
MiddlePhalanx/中节指骨
DistalPhalanx/远节指骨

图片和标注

目标检测和图像分类的标注格式: VOC 2007(Visual Object Classes Challenge 2007)标注格式。

文件目录:VOCdevkit/VOC2007

JPEGImages子目录:881个图片文件

Annotations子目录:881个图片对应的标注文件

ImageSets:数据集划分文件

文件目录:lessthan4age

lessthan4age/image子目录:119个图片文件

lessthan4age/xml子目录:119个图片对应的标注文件

图片样例:1525.png

标注数据样例:对应于1525.png图片的标注数据

<?xml version="1.0" ?>
<annotation>
<folder>JPEGImages</folder>
<filename>1525.png</filename>
<source>
  <database>Unknown</database>
</source>
<size>
  <width>1514</width>
  <height>2044</height>
  <depth>3</depth>
</size>

<segmented>0</segmented>
  <object>
  <name>MiddlePhalanx</name>
  <pose>Unspecified</pose>
  <truncated>0</truncated>
  <difficult>0</difficult>
  <bndbox>
      <xmin>872</xmin>
      <ymin>546</ymin>
      <xmax>1009</xmax>
      <ymax>696</ymax>
  </bndbox>
</object>
  <object>
  <name>MiddlePhalanx</name>
  <pose>Unspecified</pose>
  <truncated>0</truncated>
  <difficult>0</difficult>
  <bndbox>
      <xmin>622</xmin>
      <ymin>446</ymin>
      <xmax>795</xmax>
      <ymax>587</ymax>
  </bndbox>
</object>
  <object>
  <name>MiddlePhalanx</name>
  <pose>Unspecified</pose>
  <truncated>0</truncated>
  <difficult>0</difficult>
  <bndbox>
      <xmin>445</xmin>
      <ymin>505</ymin>
      <xmax>609</xmax>
      <ymax>655</ymax>
  </bndbox>
</object>
  <object>
  <name>MiddlePhalanx</name>
  <pose>Unspecified</pose>
  <truncated>0</truncated>
  <difficult>0</difficult>
  <bndbox>
      <xmin>275</xmin>
      <ymin>654</ymin>
      <xmax>385</xmax>
      <ymax>776</ymax>
  </bndbox>
</object>
  <object>
  <name>DistalPhalanx</name>
  <pose>Unspecified</pose>
  <truncated>0</truncated>
  <difficult>0</difficult>
  <bndbox>
      <xmin>1081</xmin>
      <ymin>846</ymin>
      <xmax>1286</xmax>
      <ymax>1051</ymax>
  </bndbox>
</object>
  <object>
  <name>DistalPhalanx</name>
  <pose>Unspecified</pose>
  <truncated>0</truncated>
  <difficult>0</difficult>
  <bndbox>
      <xmin>922</xmin>
      <ymin>360</ymin>
      <xmax>1081</xmax>
      <ymax>564</ymax>
  </bndbox>
</object>
  <object>
  <name>DistalPhalanx</name>
  <pose>Unspecified</pose>
  <truncated>0</truncated>
  <difficult>0</difficult>
  <bndbox>
      <xmin>645</xmin>
      <ymin>219</ymin>
      <xmax>813</xmax>
      <ymax>414</ymax>
  </bndbox>
</object>
  <object>
  <name>DistalPhalanx</name>
  <pose>Unspecified</pose>
  <truncated>0</truncated>
  <difficult>0</difficult>
  <bndbox>
      <xmin>436</xmin>
      <ymin>264</ymin>
      <xmax>586</xmax>
      <ymax>469</ymax>
  </bndbox>
</object>
  <object>
  <name>DistalPhalanx</name>
  <pose>Unspecified</pose>
  <truncated>0</truncated>
  <difficult>0</difficult>
  <bndbox>
      <xmin>231</xmin>
      <ymin>428</ymin>
      <xmax>377</xmax>
      <ymax>660</ymax>
  </bndbox>
</object>
  <object>
  <name>ProximalPhalanx</name>
  <pose>Unspecified</pose>
  <truncated>0</truncated>
  <difficult>0</difficult>
  <bndbox>
      <xmin>345</xmin>
      <ymin>760</ymin>
      <xmax>445</xmax>
      <ymax>937</ymax>
  </bndbox>
</object>
  <object>
  <name>ProximalPhalanx</name>
  <pose>Unspecified</pose>
  <truncated>0</truncated>
  <difficult>0</difficult>
  <bndbox>
      <xmin>468</xmin>
      <ymin>673</ymin>
      <xmax>577</xmax>
      <ymax>896</ymax>
  </bndbox>
</object>
  <object>
  <name>ProximalPhalanx</name>
  <pose>Unspecified</pose>
  <truncated>0</truncated>
  <difficult>0</difficult>
  <bndbox>
      <xmin>606</xmin>
      <ymin>627</ymin>
      <xmax>742</xmax>
      <ymax>854</ymax>
  </bndbox>
</object>
  <object>
  <name>ProximalPhalanx</name>
  <pose>Unspecified</pose>
  <truncated>0</truncated>
  <difficult>0</difficult>
  <bndbox>
      <xmin>784</xmin>
      <ymin>645</ymin>
      <xmax>957</xmax>
      <ymax>863</ymax>
  </bndbox>
</object>
  <object>
  <name>ProximalPhalanx</name>
  <pose>Unspecified</pose>
  <truncated>0</truncated>
  <difficult>0</difficult>
  <bndbox>
      <xmin>961</xmin>
      <ymin>990</ymin>
      <xmax>1111</xmax>
      <ymax>1145</ymax>
  </bndbox>
</object>
  <object>
  <name>MCP</name>
  <pose>Unspecified</pose>
  <truncated>0</truncated>
  <difficult>0</difficult>
  <bndbox>
      <xmin>381</xmin>
      <ymin>873</ymin>
      <xmax>504</xmax>
      <ymax>1105</ymax>
  </bndbox>
</object>
  <object>
  <name>MCP</name>
  <pose>Unspecified</pose>
  <truncated>0</truncated>
  <difficult>0</difficult>
  <bndbox>
      <xmin>477</xmin>
      <ymin>832</ymin>
      <xmax>595</xmax>
      <ymax>1060</ymax>
  </bndbox>
</object>
  <object>
  <name>MCP</name>
  <pose>Unspecified</pose>
  <truncated>0</truncated>
  <difficult>0</difficult>
  <bndbox>
      <xmin>572</xmin>
      <ymin>796</ymin>
      <xmax>722</xmax>
      <ymax>1060</ymax>
  </bndbox>
</object>
  <object>
  <name>MCP</name>
  <pose>Unspecified</pose>
  <truncated>0</truncated>
  <difficult>0</difficult>
  <bndbox>
      <xmin>727</xmin>
      <ymin>828</ymin>
      <xmax>840</xmax>
      <ymax>1064</ymax>
  </bndbox>
</object>
  <object>
  <name>MCPFirst</name>
  <pose>Unspecified</pose>
  <truncated>0</truncated>
  <difficult>0</difficult>
  <bndbox>
      <xmin>722</xmin>
      <ymin>1131</ymin>
      <xmax>963</xmax>
      <ymax>1304</ymax>
  </bndbox>
</object>
  <object>
  <name>Ulna</name>
  <pose>Unspecified</pose>
  <truncated>0</truncated>
  <difficult>0</difficult>
  <bndbox>
      <xmin>386</xmin>
      <ymin>1360</ymin>
      <xmax>550</xmax>
      <ymax>1692</ymax>
  </bndbox>
</object>
  <object>
  <name>Radius</name>
  <pose>Unspecified</pose>
  <truncated>0</truncated>
  <difficult>0</difficult>
  <bndbox>
      <xmin>518</xmin>
      <ymin>1364</ymin>
      <xmax>768</xmax>
      <ymax>1669</ymax>
  </bndbox>
</object>
</annotation>

五、数据集3-手部小关节分类

《中华05》中的骨龄计分法RUS-CHN中,分了桡骨图谱、尺骨图谱、第一掌骨图谱、第一近节图谱、第一远节图谱、第三和五掌骨、第三和五近节指骨、第三和五中节指骨、第三和五远节指骨。一共有9个图谱。每一个图谱中对应10到14个不等的等级。手部小关节分类数据集就是根据以上的图谱,对小关节图片进行分类标注。

文件目录:dataset-arthrosis/<图谱>/<等级编号>

9个图谱对应的目录名:

DIP
DIPFirst
MCP
MCPFirst
MIP
PIP
PIPFirst
Radius
Ulna

小关节图片:<图谱>_<图片编号>.png文件

六、AI解决方案

已知一手骨X图片预测骨龄常见的AI解决方案:

1)使用目标检测算法检测所有的关节;

2)根据关节的位置筛选目标手部小关节;

3)根据目标手部小关节位置进行图片切割;

4)对手部小关节的图片进行分类确定其等级。

5)计算所有关节的等级对应的分数,计算总得分,预测骨龄。

七、参考资料

《中国人手腕骨发育标准—中华05》I.TW3-C-RUS、TW3-C腕骨和RUS-CHN方法》注释:该论文和数据集一起打包。

八、获取案例套装

文件包大小:1.7 GB

获取:医疗行业视觉案例套装

发表评论