- 论文地址:https://www.google.com/url?q=https%3A%2F%2Fwww.ncbi.nlm.nih.gov%2Fpubmed%2F28850876&sa=D&sntz=1&usg=AFQjCNHnIvM--FuHOd8KhQ1XzD8ho3lzvw
- 论文代码:https://www.google.com/url?q=https%3A%2F%2Fgithub.com%2FAndysis%2Fco-trained-CADx&sa=D&sntz=1&usg=AFQjCNGIeymfq0faB4_i3FUv1e_v050HvA
Abstract and introduction
用来检测前列腺癌的多参数核磁共振图一般包括很多3D序列,比如ADC(apparent diffusion coefficient) and t2w(T2-weighted)图像,而这个工作的目的就是根据这些3d序列来检测一个人是否患有前列腺癌,以及定位出该位置。
概括来说,这个工作有以下几个创新点:
- 同时实现了癌细胞存在的检测以及定位,第一个single-stage classfier
- 提出了co-trained cnn 来结合adc 和 t2w sequence,两者的训练过程通过损失函数被结合在了一起,而不是普通的其他网络中单单融合他们的结果
- evaluation method 很新奇
- 采用 global average pooling 而不是 global max pooling
- 将网络提取出来的结果放入svm进行判断
2.method
- 进行image registration 目的是消除患者在拍摄核磁共振的时候身体移动带来的误差
- 用adc图进行 prostate region detection 和 归一化 并且把检测区域crop出来同时crop t2w图相同的位置
- 把两张图组成的pair放入 co-trained cvv中 进行训练 输出一个response map 和一个2048d的feature向量
- 把feature 向量放入svm中判断是否患有癌症,并且把positive的response map进行leision定位
下面具体介绍这几个板块:
2.1 image registration
首先 介绍了为什么要用t2w和adc图进行结合进行判断(医学背景),adc值越低,肿瘤越严重。因为同时用到了t2w图像序列和adc图像序列,就不得不考虑到因为患者身体移动导致两个序列不一致的现象,所以采用了 non-grid 2d registration method ,具体来说 采用了 FFD(free form model) 来最大化 mutal - information between t2w image and adc image
2.2 Automated prostate detection and normalization
运用一个regression cnn 去定位prostate , 通过带有一个正方形框的t2w图像(经过了人工处理)来训练这个网络。网络的输出是三个数字:中心点(x,y)以及框的宽度l(因为是正方形)
loss 函数:
o1,o2,o3是网络的三个输出(都在[-1,1])
xt = (2x-w)/w, yt = (2y - w)/ w, lt = (2l - w ) /w w是图像输入的宽度和高度(256),x,y,l是未经过归一化的框的坐标以及宽度
网络结构:
为什么不选用更复杂的网络的原因:在实验中发现 这个简单网络几乎能达到百分百的正确率(因为prostate的位置一般在正中间,特征比较明显)其次 其它被包括在检测框的组织对后续的检测影响很小
normalize:
一般来说 有三种归一化的方法:
- 先scale到0-255 然后减去前列腺附近的fat signal intensities
- 减去从很多imagenet中提取出的平均值
- 先采用直方图均衡法,再进行放缩
进过实验,发现第二种归一化的方法效果最好
2.3 Cancer response map generation via weakly-supervised co-trained CNNs
2.3.1 Weakly-supervised learning for generating cancer response map of a single MRI modality
之所以称之为weakly-supervised 是因为整个图片都只有一个大的label,那就是有无癌症,而不是pixel-level 的 annotation.
网络结构(backbone:c1-c18 是googlenet, gap是global average pooling):
改动:讲原来的c18的fc层改成了1 *1 *1024 的conv层,然后增加了c19层,通过一个3d卷积形成response map(这样子这个response map就跟前一个特征图中的没一个特征都有关系),同时通过gap形成1024维的特征向量(通过sigmoid进行归一化处理)
采用gap的原因:
- gmp 只能定位一个点(最大的那个)而 gap 可以一次性定位多个点,更有可能检测出所有lesion
- gmp 只给了一个点而不是所有可疑点,对后面的false positive 的筛选和 gleason score grading 造成很大的困难
得到response map后 进行平均处理,当作预测p,与实际label进行cross encropy 损失函数训练
2.3.2 Fusion of ADC and T2w sequences via a co-trained CNNs
main idea就是t2w和 adc 图片都输入上面提到的googlenet的网络(各一个网络),然后得到两个1024-d 的特征向量和feature map。
大多数网络所做的工作都是拿到这两个东西后,简单的进行fuse,以提高准确率,但是这样做有一个很大的弊端,t2w 和 adc 各自训练出来可能会不一样,但是lesion在两张图上应该是一样的,这样会对之后的检测产生很大的缺陷。解决方案就是改变loss函数,强制让两个网络互相学习,达到一致性。
解决方案:
在原来的loss函数上加上一项(M是网络提取出来的response map)
该loss 的解释:
所以整个的loss函数:
其中第一项和第二张都是在上面提到过的cross encropy
2.3.3 Upsampling CRM via shift-and-stitch
因为经过cnn 和pool 提取出来的response map的resolution已经到了很小,这时候需要将其upsample到原来的尺寸,这里采取的措施是shift and stitch
具体来说 如果response map 比原图小了f倍,我们就输入f的平方张图,每张图都右移x和下移y(通过padding来实现),(x,y) 输入{0,1...f-1},{0,1,...f-1},然后交叉这f2的输出图
2.3.4 Co-trained CNN model learning
- 采用googlenet pre-trained 模型
- positive 图像:每张生成13张,通过non-rigid deformation
- negative图像:用相同的方式生成3张
non-rigid deformation
对于每张图片,每张图片随机选择十个点(control point)每pixel一个随机移动[-3,3]个像素点,然后计算thin-plate deformation,再将其应用到整张图片
实验结果表明,这个方法的augment比平时常用的随机旋转要好
2.4 Post-processing for accurate PCa localization
1.将两个googlenet生成了1024-d的向量连接起来,放入svm分类器(实验结果表明svm比softmax的效果要好)
2.选择adc的response map放入detection网络,原因是比t2w的效果要好
- 在定位之中,先用non-max suppression 预选出一些候选者
- 具体来说,首先每个conponent都是由该像素点和周围的8个像素点一起,最大socre的那个点作为local maxium point,然后选出adaptive threshold,至于如何选择这个阈值,因为lesion和正常细胞的adc值差距是比较明显的,然后就去尝试出一个阈值,能够最好的区别这两个adc分布(正常细胞和lesion)
- 根据这个阈值,每个local maxium point 附近的像素大于这个阈值,那么它就被认为是leison的一部分,如果它属于另一个区域,那么就把他们认为是同一个lesion。最后,在一个区域中的最大值被认为是localized point.