0%

正畸自动分牙需求V2

自动摘要: 一、版本信息 版本号:V2.0.0 创建日期:20220811 项目完成日期:202191 审核人:杨新 二、修订历史 |时间|版本号| ……..

一、版本信息

  • 版本号:V2.0.0
  • 创建日期:2022-08-11
  • 项目完成日期:2021-9-1
  • 审核人:杨新

二、修订历史

时间 版本号 修订人 主要修订内容
2021-10-1 v1.0.0 杨新 初始版本
2022-08-11 V2.0.0 邵巧钰 完善文档结构
2022-08-20 V2.0.1 邵巧钰 更改错误信息
2023-03-17 V2.0.2 杨新 梳理并重构文档
2023-03-20 V2.1.2 杨新 添加未来计划

三、背景

1、在数字化的 3D 牙科表面模型上精确标记牙齿是正畸治疗规划中牙齿位置重新排列的先决条件

四、产品介绍

4.1 产品名称

正畸CAD-自动分牙

4.2 产品简介

在数字化的 3D 牙科表面模型上精确标记牙齿

4.3 产品定位

14颗(不含异常牙)分牙精度达到95%以上

4.4 使用场景

服务于正畸分牙-14颗牙案例

4.5 产品构想图

四、用户类型

目标用户

五、项目时间安排

目标 预计时间 结束日期 是否完成
开发 2021-9-1 2021-9-1 - [x]

|
| 测试 | | | - [ ]

|
| 上线 | | | - [ ]

|

六、需求详细说明

1.数据现状

1、数据来源于CAD2、数据原始格式为UM格式3、数据大约有十万个顶点及其面片4、数据含有凹洞及其其他噪声

2.数据调研

1、数据可以转换至stl2、数据可以采用特定算法(未知)精简3、数据含有凹洞进行舍弃

3.竞品分析

主要信息 关键结论 截图或视频
竞品1 通过投影,在二维平面使用opencv分水岭算法分割,然后重建 三维->二维->三维
竞品2 使用颌面投影,进行二维分割 三维->二维

4.需求范围

PC 端

需求 简要说明 优先级
实现端到端分割 三维->三维,无需转换到二维处理 P0
实现三维分割通用框架 实现针对牙的三维端到端的三维分割网络框架 P1
分割精度要达到95% 即验收组能在肉眼满意的效果 P2

移动端

需求 简要说明 优先级
P0
P1
P2

5.功能描述

1)产品流程图

鼠标点击左上角
,点击画板选择流程图,即可进入流程图创作你的产品流程图

2)功能说明

序号 模块 功能 功能详细说明 交互图
1 数据产生 - 产生模型需求数据 1、小于1w的数据模型2、可以进行在保持原数据情况下,进行上下采样3、能够筛选或消除噪声
2 模型处理 对数据进行粗处理 对输入数据进行分牙处理
3 优化模型结果 使用图切进行二次处理 通过传统算法优化模型处理结果

七、关联业务部门支持

八、埋点

参数名 参数说明 参数值
mesh_process 对高于1w的面片的模型进行前处理 mesh_path
model_forward 输入模型获得第一次结果 mesh_np
optimized_result 优化结果 mesh_result

九、文档说明

1、名词解释

术语 / 缩略词 说明
正畸 俗称牙齿矫正,求美需求,要求牙齿重新排列
14颗牙 指不含智齿的牙颌
异常牙 指牙齿不在牙弓曲线上的牙

十、参考资料

  • 参考论文:Deep Multi-Scale Mesh Feature Learning for Automated Labeling of Raw Dental Surfaces From 3D Intraoral Scanners

  • 论文精度可以达到98%

  • N*15表示用15位向量来表示输入,其中包括三个顶点的坐标(9),法向量(3)和相对位置向量(3),用于体现点与点之间的位置关系

  • FTM:目的是获得初始化特征(多尺度)

  • GLM-1&GLM-2:选取了一小一大两个不同尺度的感知区域,用连接矩阵A表示区域内cell之间的连接关系,之后将小尺度输入到GLM-1中,大小尺度分别输入到GLM-2中。通过运算更新FTM

  • GMP(global max pooling):目的是对GLM-2的结果做了全局池化获得更大尺度的特征。文中提到是具有平移不变性(translation-invariant)的全局特征

  • Dense-fusion:目的将四部分的输出结果进行连接,获得不同尺度相连接的特征矩阵

  • 然后结合图割的后处理方法,优化最终结果( Graph cuts是一种十分有用和流行的能量优化算法,在计算机视觉领域普遍应用于前背景分割(Image segmentation)、立体视觉(stereo vision)、抠图(Image matting)等)

人员安排

核心成员 部门 项目角色和负责事项
@曹龙飞 CAD 数据数据精简及转换- 需转换到1w个面片以下- 输出结果为stl+面片分类索引
@吴小燕 产品部 数据生产
@叶子扬 AI 主要负责人- 负责衡量数据标准- 检验模型框架- 训练模型- 对结果进行二次优化- 完成部署

后续优化:

任务 负责人 问题描述 解决方案 时间 状态
模型对牙齿分割的评判精度算法 - 让平台可以针对不同输入(14,15,16颗牙)进行最优模型的选定 1.训练个判别模型2.检测分割后错误区域面积3.对各个模型进行XGBOST4.创建一个通用模型 未启动
判别上下颌 - 让用户无需选择上下颌模型 1.创建通用模型2.根据上下颌特征训练个判别模型3.根据局部特征进行判别4.根据输出结果进行筛选 未启动
分割后的颈缘线精度提升 - 将颈缘线特征提取出来,方便后续处理 1.数据标注精度提升2.结果通过特征(曲率)二次矫正3.通过 未启动
反向辅助标注工具 - 方便标注分牙或者其他数据, 1.将算法集成到标注工具 未启动

十一:未来计划:

1. 对称性分牙

  1. 目的:
    1. 更好的牙齿编号识别
  2. 需求:
    1. 对14颗牙颌进行分割,要求分割出每颗牙齿,并识别其标志位。
    2. 标志位需符合FDI顺序。如图所示:

  3. 分割精度不低于90%;期望效果如图所示

  1. 数据:
    1. https://up3dai.yuque.com/docs/share/8f441bd4-03f7-4498-a687-5ef5b94a306e?# 《🍂 自动分牙数据 V1.6.7》数据下载:http://192.168.1.55:9003/f/89908
    2. 数量:84份,其中90%为14颗牙,10%存在错位牙和15-16颗牙。
    3. 数据格式:

├───source 牙颌,ply网格├───target 用户手工标记属性,牙颌网格每个面片对应的特定标签,npy格式,注意:标签是按FDI标记法标记的。└───test 牙颌与标签渲染文件,用于检查数据正确性。

1
2
3
4
5
6
7
8
9
10
11
12
13
14

data =np.load(label_path) #读取标签文件
#print(data,len(data))
mesh = trimesh.load(ply_path)#读取网格文件
f = mesh.faces #网格面片
v = mesh.vertices #网格顶点
colormap_hex = ['#e6194B', '#3cb44b', '#ffe119', '#4363d8', '#f58231', '#42d4f4', '#f032e6', '#fabed4', '#469990',
'#dcbeff',
'#9A6324', '#fffac8', '#800000', '#aaffc3', '#000075', '#a9a9a9', '#ffffff', '#000000'
]
colormap = [trimesh.visual.color.hex_to_rgba(i) for i in colormap_hex] # 为每个标签类别设置一个颜色
colors = [colormap[int(data[i])] for i in range(len(data))] # 为每个面片设置对应类别颜色
mesh = trimesh.Trimesh(vertices=v, faces=f, face_colors=colors) #重组网格 ,并将颜色应用在面片上
trimesh.Scene([mesh]).show()#渲染并显示网格

  1. 方案:

    1. 总体思路:
      1. 将数据分为4部分,训练4个模型,分别识别左上,右上,右下,左下,类别数为8;
      2. 将数据分为2部分,训练2个模型,分别识别上,下,类别数为8;
        1. 原因:减少类别数能极大提高精度
    2. 数据处理:
      1. 特征处理:提取面片特征,重心特征,法线特征作为主要特征。
      2. 标签处理:将标签转换成8类,即[0,1,2,3,4,5,6,7],对应为牙龈,第二磨牙(27),第一磨牙(26)……切牙(21)
      3. 数据增强:1:50
  2. 训练:

    1. 数据按9.5:0.5分为训练集,验证集;
    2. 每个epoch进行验证,精度使用SEN测试;
    3. 训练需保存两个模型,一个为loss最低的模型(用于继续训练),一个为精度最好的模型。(用于交付)。
    4. 保存模型参数至少含有,模型参数,优化器参数,当前损失,当前精度。
  3. 缺陷:

    1. 只能处理14颗牙齿(除去智齿),对牙齿不完整的数据效果不好,对牙龈不完整的数据效果不好;
    2. 单颗牙分类错误会导致整个牙颌的分牙错误;

欢迎关注我的其它发布渠道