您的位置:首页 > 其它

论文解读之——《Learning Beyond Human Expertise with Generative Models for Dental Restorations》

2018-04-21 15:07 941 查看

说明:为了语言表达的准确性,有些词汇笔者还是会使用英文。

论文链接由于这篇论文是2018年3月末才发表的,所以这篇论文的尚未被引用,但这篇论文有一个非常有意思的地方就在于其蕴含了一种很有意思的思维在里面:

       以往我们都希望通过训练神经网络,使得训练后的神经网络的输出与groundtruth尽可能一致,但是在这篇论文中,由于牙科医学上的一些需求,我们并不需要generator网络(GAN中的generator网络)的输出与groundtruth直接一致,而只是希望它们在某种统计分布上的一致即可,这样就大大放宽了搜索空间,这样说也许有一些抽象,具体的原理下面会说明。

       在dental industry(牙科领域),通常为缺牙患者设计缺失的牙齿的技术人员需要经过长达数年的训练,而且设计一个符合要求的牙齿也是非常耗时的,而最近流行的深度学习中的GAN网络在此便派上用场了,所以直观上我们希望能用生成网络来生成缺失的牙齿。等等,刚才所说的符合要求,指的是符合什么样的要求呢,论文中给出了明确的定义:


总结就是:

1. 生成的牙齿要和周边的牙齿相嵌合。

2. 生成的牙齿要有其biting 和chewing的功能。

3. 生成的牙齿要尽可能美观。

作者采用的总体思路是:

    采用GAN中的generator网络生成牙齿

训练阶段:

generator网络:

    1)输入是:1.prepared jaw    2.opposing jaw    3.gap distance

    2)输出是:generated crown(牙齿)

discriminator网络:

    1)输入是:1.prepared jaw 2.opposing jaw 3.generated crown 4.gap distance 5.ground_truth crown(作为generated crown的参照,以构成损失函数)

    2)输出是:一个标量y。

测试阶段:

测试阶段只有generator网络工作。

generator网络:

    1)输入是:1.prepared jaw 2.opposing jaw 3.gap distance

     2)输出是:generated crown(牙齿)

各输入(1.prepared jaw 2.opposing jaw etc.)的图如下:


图1

注意1:上面的下行的图片为depth image(深度图片)

       2:实际上,我们这里的designed crown就是groundtruth,有些同学会问为什么不把牙齿健康的人的牙齿作为groundtruth呢,要知道尽管牙齿健康的人的牙齿没有缺失,也能正常biting 和chewing,但是绝对不是理想的牙齿,而由专业人员人为设计的牙齿通常都是非常理想的。所以这里我们只能用designed crown 作为groundtruth。



下图是论文中的网络结构:

图2

       注意到这里的输入有一个gap distance,这是用来构建functionality  loss的,gap distance 实际上可以看成将我们的上下牙床咬合时,上颚牙齿的点与其垂直对应的下颚牙齿的点之间的距离,结合图1会更好理解什么是gap distance。

       注意到这里多了一个regression loss 和 functionality loss:

      前者(regression loss)是为了让generator生成的crown 与输入是有对应的函数关系,因此这个loss一定程度上能够迫使generator网络满足上述要求的要求1(生成的牙齿要和周边的牙齿相嵌合)。

      后者(functionality loss)是为了让generator生成的crown具有biting 和chewing的功能,具体如何做到,下面会详细分析。

另外我们注意到discriminator网络的输入也有prepared jaw 和opposing jaw,这样一来,discriminator网络也能学习到groundtruth crown 与输入(prepared jaw ,opposing jaw)的对应函数关系,因此有和regression loss同样的功能,这大概就是多管齐下吧。

      这里有一个问题:难道没有functionality loss就不行吗,discriminator 自带的 adversarial loss难道就学习不出如何判别一个牙齿是否具有 biting 和chewing的functionality?

      (个人理解):理论上是可以的,但是需要迭代的次数会相当大,而且很有可能在没学习到这种判别能力之前,就已经过拟合了(因为discriminator总是嫌弃generator生成的crown(GAN的尿性 ),但实际上可能generator生成的crown就已经很不错了,这样一来就可能导致generator有可能最后生成的crown 基本上和groundtruth一样了,这种情况就算是过拟合了——generator为了迎合discriminator而抛弃了本来也是对的的一些生成样例!)

 而论文的作者则通过自己设计一个loss迫使generator网络学习出functionality,这就是下面要介绍的Histogram loss:


前面说到构建functionality需要gap distance(记为 d),这里要注意一点,上述网络中输入的gap distance是由一个 prepared jaw和opposing jaw 计算出来的,而prepared jaw是缺失一个crown(牙齿)的。而我们希望使用的gap distance(记为d)是上下颚的牙齿齐全的。因此我们需要重新计算一下d(gap distance),即将generator网络生成的crown(牙齿)补到回去,这样算出的gap distance 就是我们真正想要的gap distance,论文对应的段落为:

        ,


实际上这样做有点像事后纠正,而通过多次事后纠正(又有点像迭代),使得generator生成的crown越来越理想。

好,基本上前期的准备已经完毕,现在要进入千呼万唤始出来的Histogram Loss了:

首先我们在来明确一下histogram loss 是做什么用的:

       histogram loss 是为了让generator 网络学习出biting 和chewing functionality,而biting和chewing functionality具体是什么样的呢,按照论文中的表述是:

好,这一段已经表述的非常清楚了,我们希望那些<=minimal 5% 的f的频率与ground truth尽可能一致,因此我们想用一个直方图来描述其分布,红色方框内的即为<=minimal 5%的频数:


图3

然而如果直接用f(d,x,G)上的每个点对应的gap distance描出histogram ,然后用generated crown 与ground truth的 距来构建histogram loss的话,这样就相当于强迫generator要生成的gap distance分布与ground truth的分布接近相同,但是这样的话,而且如果说不同样例对应的ground truth的直方图差异本身就比较大,比如下面两个ground truth的直方图差异是非常大的,因此网络训练难度会非常大:



HistA                                             HistB

而如果我们强迫generator网络一会儿学习出的直方图分布要接近Hist A,一会儿又要像Hist B,这不是强人所难吗,当然理论上也是可以学习出来的,毕竟它们的输入不同,但训练难度还是非常大的,因此我们希望对此加以改进。

注意到图3中的红色方框:


图3

这个方框内对应的即是上面提到的minimun 5%的gap distance。如果把这个红色方框里的频数加起来,generated crown 与ground truth只要求方框内的频数和接近,至于方框内的分布如何,无所谓,那么就大大放宽了约束条件,使得训练更快达到收敛。

尽管文中只提到minimun 5%的gap distance的要求,不过笔者认为,也许牙科医学上可能有其它的一些类似minimun 5%的gap distance的要求,比如

minimun 5%~15%的gap distance要占直方图总频数的~23%的比例等诸如这种形式的约束,而上面说到的只比较红色方框内的频数和就能轻松满足这些约束。

我们用不同颜色的方框标出histogram中 x%~y%的gap distance ,在各小方框内对频数求和之后即变为右下图所示:



图4A                                                                                           图4B

问题是我们如何确定方框各个方框的大小和所放的位置呢,实际上这可以让网络自己去学习,因为这些信息肯定已经包含在ground truth中了,但是在这篇论文中则是通过分析直方图分布手动设置。

好,现在我们在来看原文中的这段话:



原文中,其实文中说到的ci 就代表我们上面说的方框的位置,而li即代表方框的宽度,至于式(9),其实是这样的:


图5

实际上(9)式与前面讲的在小方框里求和是类似的,只是它不是直接求和,和是用一个三角形的折线函数来对直方图内的频数先做处理在求和。

有些同学会问(8)式中的 是什么鬼,为什么要除以这个,事实上这只是做一个权重归一化:

                                                                                       

图6

如上图,红色部分为generated crown与ground truth的误差段,比起较短的那根线的误差,我们甚至能接受较长的那根线的误差,尽管长线的红色段大于短线红色误差段。

但实际上笔者认为这个归一化做的有点多余,因为在文中作者提到了在此之后,又对不同的直方图bin赋予了一个权重wi:


以上就是笔者对于论文中的直方图的一点浅见,各位大佬如有想法可以尽管指出。

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐