本文2100字,阅读大约需要7分钟

在医学图像分析中,我们需要识别解剖结构的标志位点,识别出的位点可用于临床分析以及解剖结构分割等用途。深度学习的发展,给这样的方法带来了一些新的可能,已有不少的研究。这种定位标志位点的算法,就像是射击打靶一样,需要尽可能精确的命中靶心的红点。2019年一篇论文介绍了SCN卷积神经网络如何去识别解剖标志位点,这里笔者尝试做一个简要的解读。

靶点

训练一个识别解剖标志位点的卷积神经网络和人类训练打靶其实非常相似,两者都是希望尽可能地命中目标的最中心。人类在打靶的时候,靶点的中心有一个显著的红圈标记。医学图像的数据标注也类似,下图中的红色的十字标记即为一个人工标注点。

CT图像的脊椎骨位点标注

图中每一个红色的十字,代表一个解剖标记点(脊椎骨),一张图中会根据需要标记多个点。可以看到这样的标记只是一个点标记,实际上在打靶的时候我们无法完全命中绝对的靶心,只能尽可能地靠近靶心,在一个范围内即可。那么如何来定义这个范围?我们可以用一个表述正态分布的函数来描述可能的落点,这就是高斯函数。公式我们就不列在这了,因为我也没搞明白[机智]。但可以看下函数的图像,下面的一维的函数图像可以看到不同的方差的曲线。

不同方差的高斯函数图像对比

但二维图像中靶是一个平面的,所以要用二维的高斯函数来描述靶的范围,以确定打到哪算是命中。下图是二维的高斯函数图像,最高的顶点代表靶的中心点。方差则决定了靶的范围,方差越大范围越大。

二维高斯函数图像

设定目标

深度学习的模型其实是一个“黑盒子”,里面那些权重参数的意义解释起来可能会十分的困难。打靶也一样,这是一个复杂的动作,复杂到需要调动全身肌肉来参与运动,每块肌肉的发力大小就像深度学习的权重一样。你如果问一个射击很棒的人他某块肌肉出了多少牛顿的力来命中一个目标,他是没法回答的。打靶训练的目标很明确,尽可能的靠近靶心。训练的时候如果命中点偏下,那么就往上调整一点,这背后其实在调整肌肉发力的权重。所以调整肌肉参与权重的过程,就是训练的过程。深度学习模型在训练的时候采用目标函数来评估打靶结果,也叫作损失函数。我们希望找到一组参数(w,b,σ),让这个目标函数的值最小。

损失函数

损失函数分为3个部分。第1部分描述的是当前模型输出的结果和我们想要打中的靶的距离,这里指的是欧氏距离,表达了我们命中的位置离靶心越近越好的期望。打中靶其实可以有2种方法,一个方法是喵得准,另外一个方法是靶足够大。也就是σ足够大,可以看到第1部分的参数包含了σ。但如果靶太大也没有意义,因为那不是真的成绩好,大到一定程度两个靶重叠,同时命中两个显然不可取的。所以增加了第2部分来限制靶的大小,这时候如果靶变大了第2部分会变大,要达到总体最小只选择大靶显然是不行的。第3部分是用来限制权重(w)的最大值的,因为y=wx+b,w太大引入误差也大。这就像射击的时候总是训练少数的几块肌肉,练出来对于训练用的靶可能打得好,一旦靶位稍微有变化,这几块很大的肌肉就会不协调。我们希望用的是巧劲,而不是用蛮力。这个就是L2范数,可以解决过拟合的问题。

先验知识

医生看病需要学习多年的解剖学知识,这就是先验知识。这些标记的位点从解剖学上来说有一些空间关系,通过多年的训练医生可以掌握这些关系。每一个靶场的靶的大致位置不会变,但每个靶都可以有些小范围的运动变化,在靶场经常混迹的人可以学到靶场的靶的空间分布情况。同样,卷积神经网络可以学到这些解剖位点的空间关系。

SCN卷积神经网络结构

这是一个能够识别手部解剖位点的卷积神经网络,下半部分的卷积层就是用来学习这些解剖先验空间关系的。

打靶训练

训练的过程就像是找到肌肉记忆的过程,可以有多重不同的方式。训练可以分批次进行,一批可以包含多场训练,这个就可以理解为训练时候的批次大小batch-size。批次大小取决于打靶的人有多少体力,对应模型训练需要的内存。由于体力限制,一个批次不可能练太多,那么只好训练多个批次,对应到模型训练的迭代iterations。打靶训练需要请教练,在训练的时候教练会告诉你朝着哪个方向去提升,对应到模型训练就是优化方法。如果教练怎么都带不好,那么可能是学员肌肉僵化不适合打靶,也可能是教练方法不对。模型没法收敛可能是神经网络结构不好,或者是优化方法没找对。

不同的优化方法

成绩评估

很显然,打中的环是打靶的成绩,离靶心越近成绩越好。另外打多个靶,平均离靶心的距离也是一个可以用来评估的方式。再者,多少环以上的成绩次数占比,以及多少环外的成绩次数占比都是可以用于评估一个打靶选手的表现。图为SCN模型的一个平均离靶心距离评估曲线,曲线越靠左越靠上成绩越好。可以解读为x环以上的次数在总的射击次数中的占比曲线。

平均离靶心距离曲线

另外,靶场对成绩可能有影响,使用不同的靶场来对打靶学员进行评估是一个不错的选择。对应到模型,这就是考验模型在不同图像上的适应能力。

写在最后

通过用射击打靶的训练,我们类比了深度学习位点识别的标注、模型原理、训练以及如何评估。但本文中并没有完整的解释各方面的细节,若需知道更多的SCN

卷积神经网络 训练的结果是什么_射击训练:卷积神经网络识别解剖结构标志位点...相关推荐

  1. 卷积神经网络的结构_射击训练:卷积神经网络识别解剖结构标志位点

    本文2100字,阅读大约需要7分钟 在医学图像分析中,我们需要识别解剖结构的标志位点,识别出的位点可用于临床分析以及解剖结构分割等用途.深度学习的发展,给这样的方法带来了一些新的可能,已有不少的研究. ...

  2. matlab神经网络训练结果误差很大,MATLAB搭建bp神经网络的误差特别大,但R2的值也大,求解帮我看看我的网络哪里出问题了...

    %% II. 声明全局变量 global P_train     % 训练集输入数据 global T_train     % 训练集输出数据 global R     % 输入神经元个数 globa ...

  3. 神经网络的三种训练方法,神经网络训练过程详解

    如何训练神经网络 1.先别着急写代码训练神经网络前,别管代码,先从预处理数据集开始.我们先花几个小时的时间,了解数据的分布并找出其中的规律. Andrej有一次在整理数据时发现了重复的样本,还有一次发 ...

  4. matlab神经网络求解最优化,matlab神经网络训练数据

    1.神经网络的准确率是怎么计算的? 其实神经网络的准确率的标准是自己定义的. 我把你的例子赋予某种意义讲解: 1,期望输出[1 0 0 1],每个元素代表一个属性是否存在.像着4个元素分别表示:是否肺 ...

  5. 神经网络训练中断后继续,神经网络训练停止条件

    1.神经网络训练停止的问题~~,我的神经网络训练老是不能停止,请大家帮我测试一下,跪谢!!! 神经网络停止的条件是:1.达到设定的精度要求,2达到最大迭代次数. 调整这两个参数就可以控制训练时间了吧! ...

  6. bp神经网络需要多少样本,bp神经网络训练时间

    1.BP神经网络的训练集需要大样本吗?一般样本个数为多少? BP神经网络的训练集需要大样本吗?一般样本个数为多少? BP神经网络样本数有什么影响 学习神经网络这段时间,有一个疑问,BP神经网络中训练的 ...

  7. 神经网络训练后如何使用,神经网络训练完怎么用

    怎么使用已经训练好的BP神经网络 BP(BackPropagation)神经网络是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,是目 ...

  8. 神经网络训练数据集下载,神经网络训练集数量

    200组数据可以训练神经网络吗 谷歌人工智能写作项目:神经网络伪原创 BP神经网络的训练集需要大样本吗?一般样本个数为多少? BP神经网络的训练集需要大样本吗?一般样本个数为多少? BP神经网络样本数 ...

  9. 文字层一点就变红_学习观察神经网络:可视化整个模型训练中卷积层的激活

    全文共3425字,预计学习时长10分钟 图源:www.raincent.com 深度学习是机器学习领域中一个新的研究方向,它被引入机器学习使其更接近于最初的目标--人工智能. 深度学习是学习样本数据的 ...

最新文章

  1. 倒排索引原理_拜托,面试请不要再问我分布式搜索引擎的架构原理!
  2. 在layui中使用ajax传值给后台,浅谈layui 数据表格前后台传值的问题
  3. GDI中的坐标映射问题
  4. 史上最全的并发编程学习
  5. .NET Core + Spring Cloud:API 网关
  6. HP 1218 无线设置
  7. 第25课 成绩等级 《小学生C++趣味编程》
  8. 将request.getParameterMap()转换成可操作的普通Map
  9. python工具用什么语言_Python中一些自然语言工具的使用的入门教程
  10. C#:SQL查询结果生成datatable后,根据min、max查询datatable中min到max的数据,并生成新的datatable
  11. 5. CopyOnWriteArrayList 的适用场景
  12. Word打开后出现乱码
  13. 【c语言课程设计】C语言校园卡管理系统
  14. jxbrowser 6.18 以及 6.16 破解 整合
  15. Matlab根据特征值排序特征向量
  16. Qt编写的知名的开源软件汇总
  17. 【10.28 校内普及组】 小B浇花 题解
  18. 如何将阿里云旧服务器上的数据转移到新服务器上
  19. PyTorch学习记录——PyTorch生态
  20. 蓝牙追踪_如何使用蓝牙追踪器跟踪您的东西

热门文章

  1. Coding: 整数反转
  2. Qt智能指针--QSharedPointer
  3. stm32之iap实现应用(基于串口,上位机,详细源码)
  4. 理解CPU/寄存器/内存三者关系
  5. GDB / TUI 模式
  6. linux同步硬件和系统时钟,liunx系统下时钟不同步会出现问题 怎么同步Linux 的系统时钟和硬件时钟?...
  7. python 趋势线表达式_python绘制有箭头指示的趋势线
  8. 【RK PX30】 瑞芯微四核64位工业级芯片PX30 | 安卓核心板
  9. flutter显示图标_Flutter使用Iconfont图标
  10. php json注释,【部分解决】Json中添加注释