竞赛回顾:脊柱疾病智能诊断大赛

Spark“数字人体”AI挑战赛_脊柱疾病智能诊断大赛_GPU赛道亚军比赛攻略_triple-Z团队 希望我们的模型能够实际运用到现实生活中,因此在设计模型的时候就考虑了模型的高效性,并且我们实验表明该模型能够达到实时性的要求。我们设想以后患者的影像图片可以和我们模型的预测结果一并传输到医生的电脑上,医生可以根据模型的预测进行一些修正和调整,但就可以节省了大量的手动查询和定位等时间。相当于把“是什么”的问题转化成了“是不是”,感觉一定程度可以提高医生的工作效率。我们本次比赛主要做了如下几个工作:设计了一个简洁高效的定位+分类模型设计了合适的损失函数有效地训练模型充足实验证明模型的有效性和高效性。 阅读详情

先说结果:复赛27/3107,只能说一般般,没有打入前top20,并没有实现自己的目标。但是也是收获了不少经验,做一些总结和分享。

失败的经验:

  1. 尽早开始,尽快搭建自己的整套pipeline,后面再去增加的自己的idea,不断检验自己的idea.
  2. 可以准备一些自己的pipeline模板,这样可以加速开发。
  3. 想办法和大佬合作吧,和大佬一起合作。

贴一张最后决赛的结果:
在这里插入图片描述
其中GPU第一队,基本是大佬合集,看个人简介就知道,经常获得冠军的队。也是唯一一个实现map超过0.7的队伍。

自己的实现思路:
Unet关键点检测+resNet分类
要实现的目标:
在这里插入图片描述
输入一些dicom医学图像,实现输出关键点的位置和疾病类别分类。
**加粗样式**

自己实现过的一些思路:

  1. 不区分类别,直接将椎体和椎间盘11个关键点输入Unet,输出的预测热图。

  2. 将椎体5个点输入一个Unet,将椎间盘6个点输入另一个Unet。在将两个输出合并到一起,组合形成结果。
    在这里插入图片描述
    在这里插入图片描述

  3. 输入的图像有很多突出的点(噪点),使用各向异性滤波来处理(平滑),但是这样处理的话,测试集也需要输入处理。

  4. 把整11个点做成高斯热图来输入,当做整个脊椎的热图,但是没有什么改进。

其中面对的一个问题,可以定位到目标大概位置,但是脊椎有很多相似的结构,导致预测的开头容易出现跳格的现象,所以设想一种改进的Loss,主要利用点之间的距离相同,对距离做一个约束,故把这种距离加入到Loss中,我把他命名为posiLoss,后来在一篇论文中看到了相似的改进。

class posiLoss(nn.Module):
    def __init__(self,alph=50, beta=100):
        super(posiLoss, self).__init__()
        self.alph = alph
        self.beta = beta
        self.criterion_part1 = nn.MSELoss()
        self.sz = 11
        self.topKposi = 5

    def posiLoss(self, pred_heatmap, gt_heatmap):
        n,c,h,w = pred_heatmap.shape
        n_loss = list()
        for n_idx in range(n):
            # print("n:",n)
            pred_posiRation = self.relationPosi(pred_heatmap[n_idx])
            gt_posiRation = self.relationPosi(gt_heatmap[n_idx])
            psoiLossL = torch.Tensor(torch.abs(torch.sub(pred_posiRation, gt_posiRation))).cuda()
            # print("psoiLoss", psoiLossL)
            ret_psoiLoss = torch.sum(torch.topk(psoiLossL, self.topKposi).values)
            # print("ret_psoiLoss", ret_psoiLoss)
            n_loss.append(ret_psoiLoss)
        ret_n_loss = torch.mean(torch.Tensor(n_loss))
        return ret_n_loss

    def relationPosi(self, heatmap):
        # print(heatmap.shape)
        ret = list()
        ret.append(self.criterion_part1(heatmap[0], heatmap[1]))
        for i in range(1, self.sz-1):
            # print("i:",i)
            up = self.criterion_part1(heatmap[i-1], heatmap[i])
            down = self.criterion_part1(heatmap[i+1], heatmap[i])
            # print("down",down)
            ret.append(torch.mean(torch.Tensor((up, down))))
        ret.append(self.criterion_part1(heatmap[self.sz-1], heatmap[self.sz -2]))
        return torch.Tensor(ret)

    def forward(self, pred_heatmap, gt_heatmap):
        mse_loss = self.criterion_part1(pred_heatmap,gt_heatmap)
        # print("mse_loss", mse_loss)
        posiLosss = self.posiLoss(pred_heatmap,gt_heatmap)
        # print("posiLosss",posiLosss)
        return self.alph*mse_loss+self.beta*posiLosss

在这里插入图片描述

在这里插入图片描述
各种结果中UnetDouble+posiLoss+diffuse会最好。定位精度可以实现0.81,表里未记录。
在这里插入图片描述
一些未曾实现的想法:
6. 3DUnet,因为dicom文件是脊椎切片,是相关联的。
7. 传统方法:有论文显示,使用HOG和SVM来实现定位,准确率也可以很高。
8. 利用脊椎上的亮暗变化规律来定位中心值,因为不同图像之间差距很大,但是有一般的规律。
在这里插入图片描述
在这里插入图片描述
9.轴状位结合切片,作为输入信息。btw,主要原因是切片标注的数据实在是有点乱,很多标注不一致,希望天池可以做的更严谨一些。
在这里插入图片描述

向大佬学习:

GPU冠军方案:
检测网络:Cascade R-CNN(X-101)+ FPN + DCN
分类网络:ResNeSt269
在这里插入图片描述
结果:
在这里插入图片描述

  1. 思路一:利用关键点生成边界框形式的标注,将赛题任务巧妙地转化为目标检测任务。
  2. 思路二:采用矢状位多帧影像进行三层拼接,充分利用相邻帧信息
  3. 思路三:通过对特征更为明显的腰椎整体和骶骨第一块椎体进行检测,从而实现对检测框的筛选以及位置匹配。
  4. 思路四:增加额外针对轴状位与矢状位拼接图像的分类网络,从而提升目标分类精度。

参考链接:
Spark“数字人体”脊柱疾病智能诊断-GPU赛道-deep thinker-冠军比赛方案

GPU亚军方案:
在这里插入图片描述
在这里插入图片描述
中间加入FPN,我发现经常拿奖的一些方案都是加入了FPN的结构,来提升对小目标的检测。
由于数据集不平衡,所以在后面使用了加权的Loss,以及模型融合。

一些特点:

一.采用端到端检测网络,充分利用了图像全局与局部的信息。

二.使用定位框损失DIOU-Loss,提高边框定位精度。

三.通过加权分类损失应对类别极度不平衡的情况。

四.高亮抑制方法使得图像更易识别,伪3D数据增广有效地增加了样本多样性。

五.根据任务提出了基于中心加权检测模型融合方法。

六.极快的训练和推理速度,极大地方便方案的落地。

我的开源地址, 提供详细的操作说明:
GitHub:tianchi_spinalAI_detection_competetion

https://github.com/SkySailing/tianchi_spinalAI_dection_competetion

有用的话,请点一个star,谢谢!!

参考:
Spark"数字人体"AI挑战赛_脊柱疾病智能诊断大赛_GPU赛道亚军比赛攻略_shiontao团队
天池11月之星:北大新星陈**、赵*与天池的参赛故事
天池论坛

Nature子刊《communications biology》——利用深度学习技术通过背部图像对脊柱侧弯情况筛查 一.摘要 青少年特发性脊柱侧弯是青少年中最常见的脊柱疾病,全世界的患病率为0.5–5.2%。 脊柱侧弯筛查的传统方法很容易获得,但由于其较低的阳性预测值,因此需要不必要的转诊和放射线照相。 深度学习算法的应用具有减少脊柱侧弯筛查中不必要的转诊和成本的潜力。 在这里,我们开发并验证了深度学习算法,该算法可使用裸露的背部图像进行自动脊柱侧凸筛查。 该算法的准确性在检测脊柱侧弯,检测曲线≥20°的病例以... 阅读详情

相关推荐

基于HRNet的脊柱骨盆参数AI自动测量:从关键点检测到临床部署全解析

在计算机视觉领域,关键点检测是一项基础且重要的技术,它旨在从图像中精准定位出预定义的、具有特定意义的点。其核心原理通常依赖于深度卷积神经网络强大的特征提取能力,通过模型学习图像中目标的局部特征与全局上下文信息,最终输出每个关键点的概率热图或直接坐标。这项技术的价值在于能将复杂的视觉定位问题转化为可自动化处理的数据问题,极大地提升了效率与一致性。在医疗影像分析等对精度要求极高的工程实践场景中,关键点检测技术正发挥着革命性作用,例如在骨科脊柱X光片的分析上。通过采用如HRNet(高分辨率网络)这类先进模型,可以

weixin_27230891的博客 512

CV竞赛项目研究:脊柱疾病诊断(天池,GPU赛道,2020年9月)

0 总的感受 当前阶段,竞赛还是2个关键: 不管是什么比赛,对于数据的理解是最重要的(预处理)。 模型选型(改造模型带来的效果并不大) 重点: 训练时,验证集Loss可以作为训练集Loss一部分。 数据集少时,想到有交叉验证方法(使得模型更稳定)。 1 简介 官网:https://tianchi.aliyun.com/competition/entrance/531796/information 总决赛视频:https://tianchi.aliyun.com/course/video?.

不精,不诚,不足以动人 5302

基于关键点检测的脊柱X光片AI测量:从HRNet模型到临床部署实践

关键点检测是计算机视觉中的一项基础技术,旨在从图像中定位并识别出预定义的、具有特定意义的点。其核心原理通常基于深度学习模型,通过回归或热图预测的方式直接输出关键点的坐标。相较于语义分割,关键点检测在需要精确几何定位且标注成本敏感的任务中,往往能提供更高效、更稳定的解决方案,技术价值显著。在医学影像分析领域,这项技术被广泛应用于解剖结构定位、角度测量和定量评估等场景。本文以脊柱X光片的自动分析为具体案例,深入探讨了如何利用改进的HRNet网络实现椎体和骶骨关键点的全自动检测,并以此为基础自动计算Cobb角、骨

weixin_42521032的博客 541

关键点检测数据准备和基于U-net网络的模型设计——工业组件4个关键点的检测模型

关键点检测数据准备和基于U-net网络的模型设计整个项目代码简单介绍数据准备代码说明config.pydata_pre.pydetermine_rotation_angle.pymodels.pynet_util.pytest_main.pytrain_main.py模型效果 整个项目代码 已经在GitHub上开源,仅上传了一张效果展示图,可以根据自己遇到的实际项目进行改进 项目地址 https://github.com/ExileSaber/Industry-Keypoint-Detection 模

weixin_41782172的博客 6548

人工智能综合实验大作业-脊柱诊断-Unet-Resnet+模型+源代码+文档说明

人工智能综合实验大作业-脊柱诊断-Unet-Resnet+模型+源代码+文档说明 - 小白不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 -------- -------------------------------

ADS SerDes仿真实战:深入解析Tx_Diff均衡器(EQ)参数对眼图质量的影响

本文以ADS仿真平台为基础,深入解析了SerDes设计中Tx_Diff均衡器(EQ)参数对信号完整性的核心影响。通过实战演示,详细对比了去加重(De-emphasis)与FIR抽头系数两种调节模式,揭示了它们如何有效对抗信道损耗与码间干扰,从而显著改善眼图的高度、宽度与抖动性能,为高速串行链路设计提供关键调优思路。

weixin_29230901的博客 225

CV竞赛项目研究:脊柱疾病诊断(CPU赛道)(天池,2020年9月)

感受: 数据集少的竞赛,运气占很大成分,各种模型几乎都影响不大了,哪怕是YOLO3结构稍微修改输出层也能进前6名。 CPU赛道方法创新性、技术复杂性、PPT质量、答辩水平明显比GPU低了几个档次。 第4名 “AI探索者” - 无 - 1人(社会人) 中国人民大学 1.有幸提供了初赛tensorflow baseline,复赛时为了更好的分类椎间盘,附加了ResNet101作为识别。也许可以直接改造mask r-cnn的损失函数。 2.为了更好的分类,ResNet101用的focal_loss作为损.

不精,不诚,不足以动人 1459

Box2D-Lite源码阅读笔记(2)

0.初始化函数 static void InitDemo(int index) { world.Clear(); numBodies = 0; numJoints = 0; bomb = NULL; demoIndex = index; demos[index](bodies, joints); } 在这个初始化函数中,一般会默认执行index=0的函数,这个函数就是一个示例,因为示例比较简单,所以也便于研究,示例效果如下。 就是一个方块。 进入第一个示例函数。(忽略我加的注释)

ARTELE的博客 975

基于深度学习的医学图像分割综述

(自己写的,需要转载请联系作者,或者标明出处呀,欢迎加微信交流:wx604954) 摘要:医学图像分割是决定医学图像在临床诊疗中能否提供可靠依据的关键问题。医学图像分割技术的发展不仅影响到医学图像处理中其他相关技术的发展,如可视化、三维重建等,而且在生物医学图像的分析中也占有极其重要的地位。近年来,由于深度学习算法在医学图像分割中的应用, 医学图像分割技术取得了显著的进展。在本文中,我们讨...

愿十四亿神州尽舜尧 6万+

STM32F407硬件SPI驱动ADS1220避坑指南:从寄存器读不到数据到采样值异常的完整解决流程

本文详细解析了STM32F407硬件SPI驱动ADS1220的常见问题与解决方案,包括SPI配置、寄存器读取异常、采样值优化等关键环节。通过CubeMX配置技巧和Keil调试经验,帮助开发者快速排查从通信失败到数据异常的各种问题,实现高精度数据采集系统的稳定运行。

weixin_26878995的博客 157

基于MATLAB/Simulink的四旋翼无人机PID控制与仿真(3)

《基于MATLAB/Simulink的四旋翼无人机PID控制与仿真》的第三篇,将为大家继续展示并完善控制与仿真模型。本文将在前文的基础上,完成控制环节增补、参数设置、测试等工作,在不考虑性能(低超调、快、准等)的前提下,保证系统对于一般输入(阶跃、斜坡)的响应稳定性。

jlx142857的博客 9320

关键点检测——heatmap热力图法

深度学习-关键点检测-heatmap热力图模型搭建

m0_56247038的博客 6751

C#上位机通信层封装:西门子S7NetPlus库的优雅使用

支持S7-1200/1500(机架号0,槽号1)、S7-300/400(机架号/槽号需根据实际配置);支持位(Bit)、字节(Byte)、字(Word)、双字(DWord)、浮点数(Float/Double)等数据类型的读写;支持DB块、输入寄存器(I)、输出寄存器(Q)、内存寄存器(M)、定时器(T)、计数器(C)的操作;轻量无依赖,兼容.NET 5+。首先定义核心枚举和常量,统一规范参数类型,避免硬编码。/// 西门子PLC型号(对应不同的机架/槽号默认配置)

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1085

『医学影像』基于Unet模型实现脊柱CT定位(中)

全新的任务,基于分割网络实现Unet模型对L3锥体的定位,论文解读,包括笔者对该任务的理解和讨论。

m0_63642362的博客 1781

Unity之Timeline教程

Unity Timeline是Unity的一种时间轴编辑器工具,用于制作和管理游戏中的动画、剧情以及事件触发。它提供了直观的界面,使得开发者可以通过拖放操作轻松创建和编辑时间轴。Activation Track:用于控制物体的激活状态。可以在轨道上添加关键帧,控制物体的激活和非激活状态。Animation Track:用于处理物体的动画。可以在此轨道上添加关键帧,编辑物体的动画状态。Audio Track:用于处理场景中的音频。可以管理音频的播放、暂停、淡入淡出等操作。

TxNet 9437

Halcon 形态学 开发案例 (开运算opening(先腐蚀再膨胀)、闭运算closing(先膨胀再腐蚀))

算子方法:功能:使用用户自定义的结构元素对区域进行开运算参数: Region(输入参数) :输入区域 StructElement(输入参数) :结构元素(区域) RegionOpening(输出参数) :开运算后的区域功能:使用圆形结构元素对区域进行开运算参数: Region(输入参数) :输入区域 RegionOpening(输出参数) :开运算后的区域 Radius(输入参数) :圆形结构元素的半径功能:使用矩形结构元素对区域进行开运算。

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 1618

UNet分割脊柱

随着我们每天收集更多数据,人工智能(AI)将越来越多地应用于医疗领域。人工智能在医疗领域的一个关键应用是诊断。医疗诊断中的人工智能有助于决策、管理、自动化等。脊柱是肌肉骨骼系统的重要组成部分,支撑着身体及其器官结构,同时在我们的活动性和负荷转移中发挥着重要作用。它还能保护脊髓免受撞击造成的损伤和机械冲击。在自动化脊柱处理管道中,脊柱标记和分割是两项基本任务。可靠、准确的脊...

深度学习与计算机视觉 5009

torch.nn.rnn实现循环神经网络

------------------------------------nn.rnn模型实现。#------------------------------------模型实现。#-----------------------------------训练模型。#-----------------------------------训练模型。#--------------------------------读取数据。实现循环神经网络,并在至少一个数据集上进行实验,从训练时间、预测精度、...

matlab_python22的博客 2970

论文阅读:VinDr-SpineXR: A deep learning framework for spinal lesions detection and classification from r

VinDr-SpineXR: A deep learning framework for spinal lesions detection and classification from radiographs VinDR-SpineXR:一种用于从X光片中检测和分类脊柱病变的深度学习框架 时间:2021 开源地址(未发布):https://github.com/vinbigdata-medical/vindr-spinexr 摘要 在临床实践中,X光片被用作识别脊柱异常的最重要的成像工具。然而,对于放射科

qq_42042757的博客 1925

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

sharding-jdbc-springboot简单样例

1,sharding-jdbc 基本概念 逻辑表 :水平拆分的数据库(表)的相同逻辑和数据结构表的总称。例:订单数据根据主键尾数拆分为 10 张表,分别是 t_order_0 到 t_order_9,他们的逻辑表名为 t_order。 真实表:数据库中真实存在的物理表。即上个示例中的 t_order_0 到 t_order_9。 数据节点:数据分片的最小单元。由数据源名称和数据表组成,例:ds_0.t_order_0。 绑定表:分片规则一致的主表和子表。例如:t_order 表和 t_order_item

fangye1的博客 1189

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【Image】图像处理

图像处理概览,一文梳理计算机视觉的发展史。

weixin_49816179的博客 3300

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

【翻译】★AutomationOfSpineCurveAssessment in FrontalRadiographsUsingDeepLearning of Vertebral-TiltVector

Automation of Spine Curve Assessment in Frontal Radiographs Using Deep Learning ofVertebral-Tilt Vector 摘要

sinat_40759442的博客 1471

【CV】Yolov8:ultralytics目标检测、关键点检测、语义分割

Yolov8提供了一个全新的 SOTA 模型,包括 P5 640 和 P6 1280 分辨率的目标检测网络和基于 YOLACT 的实例分割模型。和 YOLOv5 一样,基于缩放系数也提供了 N/S/M/L/X 尺度的不同大小模型,用于满足不同场景需求 骨干网络和 Neck 部分可能参考了 YOLOv7 ELAN 设计思想,将 YOLOv5 的 C3 结构换成了梯度流更丰富的 C2f 结构,并对不同尺度模型调整了不同的通道数,属于对模型结构精心微调 Head 部分相比 YOLOv5 改动较大,换成了目前主流的

发现问题,并解决问题,批判性思维 1万+

yolo11脊椎骨标记定位检测

yolo11脊椎骨标记定位检测

QQ_1309399183的博客 922

【翻译】★VERTEBRA-FOCUSED LANDMARK DETECTION FOR SCOLIOSIS ASSESSMENT

VERTEBRA-FOCUSED LANDMARK DETECTION FOR SCOLIOSIS ASSESSMENT 聚焦脊柱的标志物检测for脊柱侧弯评估 来源:2020 IEEE 17th International Symposium on Biomedical Imaging (ISBI) || 2020/04/01 作者单位: 附:百度学术 | 翻译 | Adolescent idiopathic scoliosis (AIS) 摘要 青少年特发性脊柱侧凸(...

sinat_40759442的博客 2017

获奖团队访谈录|“AI+无线通信”赛道优胜奖团队

第三届全国人工智能大赛获奖团队访谈录,看优秀的人如何打怪升级!

DataFountain的博客 834
上一篇: opencv中加速的一些操作
下一篇: C/C++中__builtin_popcount()的使用及原理
dlvector
博客等级 码龄10年 85粉丝 142原创
评论 8
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值