一、问题描述
X光手骨骨龄计算的意义为通过定期进行骨龄评估,可以及时了解儿童的生长发育状态,对于生长发育异常的儿童,可以及早发现并采取措施。骨龄测定对于内分泌疾病、矮小症等疾病的诊断和治疗具有重要价值,可以帮助医生制定更有效的治疗计划。
骨龄是骨骼年龄的简称,需要借助于骨骼在X光摄像中的特定图像来确定。通常要拍摄左手手腕部位的X光片,医生通过X光片观察来确定骨龄,是一件非常消耗精力和时间的一项放射临床工作。
二、数据集1-RSNA2017
在2017年的RSNA(北美放射学会年会)上,有一个比赛赛题是:根据儿童手部的X光片中准确识别他们的年龄。基于比赛提供的RSNA2017数据集,使得实验和进行教育演示变得更容易。此外,激励人们创造出一些新想法,构建的更智能的模型,解决基于X光图像进行骨骼年龄的计算问题。
数据结构
训练数据集数据结构:boneage-training-dataset.csv
列名 | 描述 | 数据类型 |
---|---|---|
id | 图像的唯一标识符 | 整数 |
boneage | 预测的骨骼年龄(单位:月) | 整数 |
male | 性别指示。女性的值为FALSE。 | 布尔值 |
数据样例:boneage-training-dataset.csv
id | boneage | male |
---|---|---|
1377 | 180 | FALSE |
1378 | 12 | FALSE |
1379 | 94 | FALSE |
1380 | 120 | TRUE |
1381 | 82 | FALSE |
测试数据集数据样例:boneage-test-dataset.csv
Case ID | Sex |
---|---|
4360 | M |
4361 | M |
4362 | M |
4363 | M |
4364 | M |
4365 | M |
4366 | M |
数据集使用许可协议
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计分法。
图中黄色高亮的地方是需要医生看的关节,医生做骨龄的时候,需要对每个关节,根及据骨骺的发育情况。判断对应的等级。查表格:”RUS-CHN法手腕骨发育等级得分表”,计算13个关节的等级分数之和,到”RUS-CHN骨成熟百分位数标准曲线”中,找到分数对应的年龄。


四、数据集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
获取:医疗行业视觉案例套装