一种针对连续二维图像中多形态目标的自动检测方法
技术领域
本发明属于图像分析及目标检测领域,尤其涉及一种针对连续二维图像中多形态目标的自动检测方法。
背景技术
空间上的连续二维图像可以重建出三维图像,所以连续二维图像的目标自动检测对于实现立体空间的目标自动检测而言是具有重大意义的。目前连续二维图像中的目标检测主要依靠人为观察、传统图像处理方法或者传统机器学习方法,这种传统的检测方法存在诸多不利因素:
1)人为观察:费时,疲劳、经验等人为主观因素会影响观察结果的准确性与一致性;
2)传统的图像处理方法或者传统机器学习方法:鲁棒性不高,特别针对这种形态多变的目标。
发明内容
发明目的:本发明所要解决的技术问题是针对现有二维图像中多形态目标检测效果较差的情况,基于深度学习中的卷积神经网络和基本的图像处理方法,提供了一种基于卷积神经网络针对连续二维图像中多形态目标的自动检测方法,实现了对多形态目标的精确检测。
为了解决上述技术问题,本发明公开了一种基于卷积神经网络针对连续二维图像中多形态目标的自动检测方法,包括如下步骤:
步骤1,对二维图像进行拉宽,得到原始拉宽图像,并使用现有的标注工具对图像中的目标进行框定,得到真实标记框,将处理后的图像存入数据集D;
步骤2,将数据集D划分为训练集和测试集,在训练集上使用目标检测神经网络进行训练,将测试集通过训练好的目标检测模型,得到测试集的初步目标检测结果。在训练时依次进行交叉验证,每幅图像会得到相应的检测框;
步骤3,将检测框中的内容提取出来,存入数据集M并且划分出训练集与测试集,在训练集上使用分类神经网络进行训练,得到训练好的分类模型,将测试集通过训练好的分类模型,得到测试集的分类结果,在训练时依次进行交叉验证,得到所有检测框内容的分类结果;
步骤4,将分类结果为非目标的检测框舍去,将分类结果为目标的检测框显示在原始拉宽图像中,最后再将图片恢复成原始尺寸。
步骤1中,图像中的目标形态多样且细长条状的目标占比不小,经过试验发现卷积神经网络对于这种长宽比过大或者过小的目标敏感度不够,所以考虑对数据进行预处理,即将图像进行拉宽,使得目标的长宽比适中,易于网络感知。
步骤2中,所述目标检测神经网络为基于区域的全卷积网络R-FCN(Region-basedFully Convolutional Networks),该目标检测神经网络以全卷积网络R-FCN为主体,并且与一个区域推荐网络RPN(Region Proposal Network)共享卷积层。所述区域推荐网络RPN用于生成候选区域,所述主体的全卷积网络R-FCN对区域推荐网络生成的候选区域做分类或者进一步对候选区域进行边界的回归,从而实现目标的精确定位。基于区域的全卷积网络R-FCN与先前的目标检测网络Faster R-CNN相比,最大的创新之处在于提出了位置敏感感兴趣区域池化层position-sensitive RoI(Region of Interest)pooling layer,这一结构上的改变可以解决Faster R-CNN检测速度慢的问题,将更多的共享层放在感兴趣区域池化层RoI pooling layer之前,避免重复计算。同时,因为在目标检测中既要分类也要定位,这一新结构的引入可以在位置不变性和位置可变性之间取得一个更好的平衡。
所述目标检测神经网络R-FCN的损失函数包括目标分类损失和边界框回归损失,分类损失为交叉熵损失,边界框回归损失为smooth L1损失,计算公式为:
Lreg(t,t*)=∑smoothL1(t-t*),
其中,表示候选区域为前景的概率,为整个目标检测神经网络R-FCN的损失函数,包括Lcls和Lreg,其中Lcls为分类时的对数损失函数,Lreg是回归时的损失函数,Lreg包括t和t*;t是回归时对每个候选区域生成的一个四维参数向量,代表候选区域预测的偏移量,t*表示区域推荐网络RPN生成的候选区域相对于步骤1中对图像中的目标进行框定的真实标记框的实际偏移量,其中c*表示所述候选区域的预测是否为前景,若为前景则取值为1,否则取值为0,取值为0则所述候选区域不参与边界回归的损失计算;候选区域的边界回归使用smoothL1函数计算损失函数;λ参数作为一个权重来平衡Lcls和Lreg之间的重要性。
步骤2中,所述目标检测神经网络是一个全卷积化的网络,数据集D中的图像首先经过一个在自然图像数据集ImageNet上预训练好的全卷积网络ResNet-50,然后一方面在最后一个卷积层的后面添加K2*(C+1)个卷积核去卷积从而得到位置敏感得分图position-sensitive score map,其中C为目标检测类别数,K表示对感兴趣区域在长、宽方向各K等分成K2个小区域,另一方面,全卷积网络ResNet-50的输出作为区域推荐网络RPN的输入,区域推荐网络输出候选区域,也就是感兴趣区域,最后感兴趣区域池化层RoI Pooling layer将前面的位置敏感得分图和感兴趣区域作为输入,输出类别信息并且进行回归,则感兴趣区域池化层之后不存在额外的卷积层和全连接层。
步骤2中,目标检测工作只是起到一个初步检测的作用,所以重点应该放在召回率上,即保留更多的候选框,可以对假阳性的目标进行后续处理,但是不要将真阳性的目标漏掉。当目标检测神经网络达到设置的训练迭代次数后,针对训练集的训练过程结束并且得到训练好的目标检测模型,将测试集通过目标检测模型,测试集中的每幅图像会得到相应的预测检测框、预测类别与预测得分,将预测结果以图像的形式显示出来并且调整显示的阈值T,如果预测检测框对应的预测得分小于阈值T则该预测检测框将被剔除,否则保留。多次进行显示阈值的调整并且人为进行预测结果与实际结果的对比,本着不漏少错的原则选择出较为理想的阈值与检测效果。
步骤2中,由于连续二维图像之间是存在相似性的且数据集D为m套完整的连续二维图像,所以数据是以套为单位的并且使用目标检测神经网络进行训练时采用交叉验证法,将数据集D划分成k个互斥子集,每个子集中包含n套连续二维图像且将n取值为个位数:
m=k*n
其中Di表示第i个子集,每次用k-1个子集的并集作为训练集,余下的那个子集作为测试集,这样就能够进行k(取值范围是根据数据集的样本量来定的,几十到几百不等)次训练和测试,最终每套二维图像中都能够得到相应的检测框。
步骤3中,由于初步检测框中含有较多假阳性的存在,所以考虑将检测框中的内容提取出来,对其中的内容进行分类。而在这其中会存在很多干扰项,为了分类网络能得到更多的信息,对检测框中的内容进行提取时,保持中心位置不变,将长和宽分别设置成了原检测框的1.5倍,则提取出来的检测框内容中会包含背景信息。
步骤3中,所述分类卷积神经网络为GoogLeNet网络,GoogLeNet网络包括一个结构Inception,该结构Inception用于在使用不同的卷积核之前和最大池化操作之后分别加上1*1的卷积核改变通道数来降低特征图的厚度,完整的GoogLeNet网络的结构是在传统的卷积层和池化层之后不断进行Inception结构的堆叠,
GoogLeNet网络的损失函数Losstotal计算公式如下:
Losstotal=0.3*loss1+0.3*loss2+loss3
其中loss1和loss2是中间层的两个辅助损失函数,在中间的两个inception模块处增加两个额外的分类器是为了增强反向传播时的梯度信号,这两个分类器的损失loss以0.3的权重加在整体损失上,loss3是最后层的损失函数,每个损失函数Loss都是以交叉熵的形式计算的:
其中N为分类数据集M中训练集的样本数量,e是自然常数,GoogLeNet网络的输入为xi,xi对应的真实标签为yi,hj为GoogLeNet网络最终输出向量,即样本分别属于j这个类别的预测概率(即分类结果),C为分类任务类别数;是输出向量中第i个样本属于真实类别的预测概率。
步骤3中采用的分类神经网络的模型是在自然图像数据集ImageNet上预训练好的,在所述预训练好的模型的基础上进行微调,即在全连接层随机初始化的同时,前层会复制所述预训练好的模型的权重,可以使得训练过程更快地收敛。达到设置的迭代次数之后,训练过程结束并且得到训练好的模型,将测试集通过该模型可以得到测试集的分类结果,依次采用步骤2中所述的交叉验证法,就可以得到所有检测框内容的分类结果。
步骤4中将分类结果为非目标的检测框舍去,将分类结果为目标的检测框显示在原始拉宽图像中,最后再将图片恢复成原始尺寸,就完成了对连续二维图像中多形态目标的检测。
本发明利用卷积神经网络可以自动学习图像特征的特点,提出了一种基于卷积神经网络针对连续二维图像中多形态目标的自动检测方法。本发明将卷积神经网络应用于二维图像中多形态目标的自动检测,可排除人为观察中的主观因素的干扰并具有较强的鲁棒性,实现多形态目标的精确检测。
附图说明
下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述或其他方面的优点将会变得更加清楚。
图1为本发明方法示意图。
图2为目标检测网络R-FCN的架构示意图。
图3为多折交叉验证示意图。
图4为分类网络GoogLeNet中Inception结构示意图。
图5为本发明流程图。
具体实施方式
下面结合附图及实施例对本发明做进一步说明。
实施例
如图1和图5所示,本发明公开了一种基于卷积神经网络针对连续二维图像中多形态目标的自动检测方法,包括如下步骤:
步骤1,对每例病人的双侧盆壁处的CT图像进行拉宽,得到原始拉宽图像,并使用现有的标注工具进行淋巴结的框定,将处理后的图像存入数据集D;
步骤2,将数据集D划分为训练集和测试集,在训练集上使用目标检测神经网络进行训练,将测试集通过训练好的目标检测模型,得到测试集的初步目标检测结果。依次进行交叉验证,每幅图像会得到相应的检测框;
步骤3,将检测框中的内容提取出来,存入数据集M并且划分训练集与测试集,使在训练集上使用分类神经网络进行训练,将测试集通过训练好的分类模型,得到测试集的分类结果。依次进行交叉验证,得到所有检测框内容的分类结果;
步骤4,将分类结果为非淋巴的检测框舍去,将分类结果为淋巴的检测框显示在原始拉宽图像中,最后再将图片恢复成原始尺寸。
本实例中,步骤1中输入的CT图像是随机从GE公司的Discovery CT750HDCT或Hispeed NX/i扫描仪上采集的,管电压均为120kV。Discovery CT750HDCT扫描仪采用自动毫安秒技术,Hispeed NX/i扫描仪管电流为400mAs。图像观察采用纵膈窗,窗宽为350,窗位为40。
本实例中,步骤1中数据集所使用的图像是从512*512的原图拉宽到尺寸为512*1024的图像,集中在人体的双侧盆壁部位,每两张之间的物理距离是1.25mm,由于人体之间的身高差异,这一部分的图片张数为50至80不等。完成图像的拉宽之后,在已拉宽的图像上使用LabelImg工具进行淋巴的标注,将处理后的图像存入数据集D。
本实例中,步骤2中所采用的目标检测神经网络为基于区域的全卷积网络R-FCN(Region-based Fully Convolutional Networks),该目标检测神经网络以全卷积网络R-FCN为主体,并且与一个区域推荐网络RPN(Region Proposal Network)共享卷积层。所述区域推荐网络RPN用于生成候选区域,所述主体的全卷积网络R-FCN对RPN网络生成的候选区域做分类或者进一步对候选区域进行边界的回归,从而实现目标的精确定位。基于区域的全卷积网络R-FCN与先前的目标检测网络Faster R-CNN相比,最大的创新之处在于提出了位置敏感感兴趣区域池化层position-sensitive RoI(Region of Interest)poolinglayer,这一结构上的改变可以解决目标检测网络Faster R-CNN检测速度慢的问题,将更多的共享层放在感兴趣区域池化层RoI pooling layer之前,避免重复计算。同时,因为在目标检测中既要分类也要定位,这一新结构的引入可以在位置不变性和位置可变性之间取得一个更好的平衡。
R-FCN的损失函数包括目标分类损失和边界框回归损失,分类部分为交叉熵损失,回归部分为smooth L1损失,计算公式为:
Lreg(t,t*)=∑smoothL1(t-t*),
其中,表示候选区域为前景的概率,为整个目标检测神经网络R-FCN的损失函数,包括Lcls和Lreg,其中Lcls为分类时的对数损失函数,Lreg是回归时的损失函数,Lreg包括t和t*;t是回归时对每个候选区域生成的一个四维参数向量,代表该候选区域预测的偏移量,t*表示RPN网络生成的候选区域相对于步骤1中真实标记框的实际偏移量,其中c*表示该候选区域的预测是否为前景,若为前景则取值为1,否则取值为0,取值为0则该候选区域不参与边界回归的损失计算;候选区域的边界回归使用smoothL1函数计算损失函数;λ参数作为一个权重来平衡Lcls和Lreg之间的重要性。该参数默认取值为10。
本实例中,步骤2中的目标检测模型是一个全卷积化的设计。如图2所示,数据集D中的CT图像首先经过一个在自然图像数据集ImageNet上预训练好的全卷积网络ResNet-50,然后一方面在最后一个卷积层的后面添加K2*(C+1)个卷积核去卷积从而得到位置敏感得分图position-sensitive score map,其中C为目标检测类别数,K表示对感兴趣区域在长宽方向各K等分成K2个小区域,K一般取值为3,;另一方面,全卷积网络ResNet-50的输出作为区域推荐网络的输入,区域推荐网络输出候选区域,也就是感兴趣区域,最后感兴趣区域池化层RoI Pooling layer将前面的位置敏感得分图和感兴趣区域作为输入,输出类别信息并且进行回归,则感兴趣区域池化层之后不存在额外的卷积层和全连接层。整个的训练过程是在深度学习框架Caffe上实现的,共训练迭代8000次。
本实例中,步骤2中的目标检测工作只是起到一个初步检测的作用,所以重点应该放在召回率上,即保留更多的候选框,可以对假阳性的目标进行后续处理,但是不要将真阳性的目标漏掉。实验结果显示,训练模型的召回率尚为可观,所以暂未对训练过程进行处理。
当目标检测神经网络达到设置的训练迭代次数8000后,针对训练集的训练过程结束并且得到训练好的目标检测模型,将测试集通过该模型,测试集中的每幅图像会得到相应的预测检测框、预测类别与预测得分,可以将预测结果以图像的形式显示出来并且可以自行调整显示的阈值,如果预测得分小于该阈值则该预测检测框将被剔除,否则保留。多次进行显示阈值的调整并且人为进行预测结果与实际结果的对比,本着不漏不错的原则选择出较为理想的阈值0.1,并且将符合条件的检测框坐标记录下来,用于下一步的检测框内容提取。
本实例中,步骤2中进行目标检测时,由于数据集D为m套完整的连续二维CT图像且连续CT图像之间是存在相似性的,所以在训练模型的时候采用了交叉验证法。如图3所示,将数据集D划分成k个大小相似的互斥子集每个子集中包含n套连续二维图像且将n取值为个位数:
m=k*n
其中Di表示第i个子集,每次用k-1个子集的并集作为训练集,余下的那个子集作为测试集,这样就能够进行k次训练和测试,保证每次的测试集与验证集之间不存在先验关系,最终每套二维图像中都可以得到相应的检测框。数据集中共有177套病人的连续CT图像,为了能让更多的数据用来训练来保证训练模型的鲁棒性,所以将n设为3,,即每个子集里只有3套病人的CT图像,根据公式,显然k的取值为59。这种做法是有点费时的,但是在数据集不太足够的情况下是非常可行的。在实验中,一般将n设置为个位数,k的取值根据m的取值来确定。
本实例中,步骤3中,由于初步检测框中含有较多假阳性的存在,所以考虑将检测框中的内容提取出来,对其中的内容进行分类。而在这其中会存在很多干扰项,为了分类网络能得到更多的信息,对检测框中的内容进行提取时,保持中心位置不变,将长和宽分别设置成了原检测框的1.5倍,这样提取出来的检测框内容中会包含背景信息有利于分类的判断。
本实例中,步骤3中采用的分类卷积神经网络为GoogLeNet网络,该网络提出了一个创造性的结构名为Inception,如图4所示,该结构是采用1*1卷积模块、3*3卷积模块、5*5卷积模块以及3*3的最大池化层的级联输出,并在3*3、5*5卷积模块之前以及3*3的最大池化层之后各添加1*1的卷积模块来降低特征图的厚度。完整的GoogLeNet结构是在传统的卷积层和池化层之后不断进行Inception结构的堆叠。
GoogLeNet的损失函数计算公式如下:
Losstotal=0.3*loss1+0.3*loss2+loss3
其中loss1和loss2是中间层的两个辅助损失函数,在中间的两个inception模块处增加两个额外的分类器是为了增强反向传播时的梯度信号,这两个分类器的损失loss以0.3的权重加在整体损失上,loss3是最后层的损失函数。每个损失函数Loss都是以交叉熵的形式计算的:
其中N为分类数据集M中训练集的样本数量,e是自然常数,GoogLeNet网络的输入为xi,xi对应的真实标签为yi,hj为GoogLeNet网络最终输出向量,即样本分别属于j这个类别的预测概率,C为分类任务类别数;是输出向量中第i个样本属于真实类别的预测概率。
本实例中步骤3中采用的网络是在深度学习框架Caffe上进行训练的,分类模型为在自然图像数据集ImageNet上预训练好的GoogLeNet模型,是从Caffe Model Zoo(http://caffe.berkeleyvision.org/model_zoo.html)中下载得来的。在该模型的基础上进行微调,在全连接层随机初始化的同时,前层会复制该预训练模型的权重,可以使得训练过程更快地收敛。达到设置的迭代次数8000次之后,训练过程结束并且得到训练好的模型,将测试集通过该模型可以得到测试集的分类结果,依次采用步骤2中所述的交叉验证法,就可以得到所有检测框内容的分类结果。
本实例中,在进行步骤3测试的时候仍采用上文所述的交叉验证法,将数据集分成多个相似尺寸的互斥子集,每次只使用一个子集作为测试集,剩下子集的并集作为训练集,从而得到所有检测框内容的分类结果。为了使得分类模型更好地显示图像的特征,任意一个子集中只有属于3组病人的检测框内容,使得训练集包含更多的数据。
本实例中,步骤4中将分类结果为非淋巴的检测框舍去,将分类结果为淋巴的检测框显示在原始拉宽图像中,最后再将图片恢复成原始尺寸,就完成了CT图像中双侧盆壁处多形态淋巴结的目标自动检测。
本发明提供了一种针对连续二维图像中多形态目标的自动检测方法,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部分均可用现有技术加以实现。