1.一种融合FCN和多通道阈值分割的哺乳母猪图像分割方法,其特征在于,包括以下步骤:S1、采集母猪的视频图像,并建立母猪分割视频图像库;
S2、建立FCN母猪分割模型,用该模型对测试图像进行分割,获取FCN母猪图像分割结果;
S3、对FCN母猪图像分割结果外接最小面积矩形框,并对该矩形框区域的灰度图和H分量进行Otsu阈值分割,从而获取阈值分割结果;
S4、将FCN母猪图像分割结果和阈值分割结果进行融合,获取母猪图像的最终分割结果;
所述步骤S1的具体过程如下:
S11、数据采集:实时采集获取俯视母猪视频图像;
S12、构建数据库:剔除母猪身体缺失1/2以上、运动模糊的视频帧,构建训练集、验证集和测试集;
S13、手工标注母猪图像:手工标注出母猪在图像中的所有像素点;
所述步骤S2的具体过程如下:
S21、设计FCN母猪分割模型结构;
S211、选择卷积神经网络;
S212、移除卷积神经网络的分类层;
S213、设计与全连接层输入数据同等尺寸的卷积核,并与卷积核输入数据做卷积运算,将卷积神经网络的所有全连接层转化为卷积层;
S214、增加卷积层,对最高层池化层n进行1×1卷积运算,输出维度为类别个数,得到该池化层n的预测结果score(n),对预测结果score(n)进行反卷积,得到该池化层n的反卷积预测结果score_up(n);
S215、对池化层n的上一层池化层n-1进行1×1卷积运算,输出维度为类别个数,得到该池化层n-1的预测结果score(n-1);
S216、将上述两个结果score(n-1)与score_up(n)相加,并进行反卷积,得到该池化层n-1的反卷积预测结果score_up(n-1);
S217、对池化层n-1的上一层池化层n-2进行1×1卷积运算,输出维度为类别个数,得到该池化层n-2的预测结果score(n-2);
S218、将上述两个结果score(n-2)与score_up(n-1)相加,并进行反卷积,得到该池化层n-2的反卷积预测结果score_up(n-2);
S219、最后增加一个用来进行损失计算的Loss层;
S22、训练FCN母猪分割模型;
S221、对训练集进行直方图均衡化;
S222、在训练集上训练FCN母猪分割模型,以在ImageNet上训练好的分类卷积神经网络模型为预训练模型,微调母猪分割网络能够加快收敛速度和防止过拟合;首次前向传播时,如果预训练模型和分割网络结构中某层的名称相同,则直接调用预训练模型的该层参数,反之采用随机高斯分布初始化该层参数;数据传播到最后一层,根据母猪的实际标记结果计算损失,并采用随机梯度下降法,不断优化网络参数,对母猪图像进行有监督学习,以获取最优全卷积网络的连接权值和偏置值;
S23、利用FCN母猪分割模型对测试集图像进行分割;
S231、对测试图像进行直方图均衡化;
S232、利用训练好的FCN母猪分割模型对预处理后的测试图像进行分割,提取母猪区域;
S233、对FCN的分割结果进行后处理,通过形态学和面积阈值填充空洞并移除小面积区域。
2.根据权利要求1所述的一种融合FCN和多通道阈值分割的哺乳母猪图像分割方法,其特征在于,所述步骤S3的具体过程如下:S31:对FCN的母猪分割结果外接小面积矩形框,并提取原始图像所在的矩形框区域;
S32:将提取的矩形框区域图像分别转换到灰度空间和HSV空间,通过对M幅不同光线,不同栏的母猪图像进行统计,获取小猪的平均灰度值作为灰度阈值,用以排除小猪区域;在H分量上使用Otsu方法计算H分量的色调阈值;按照以下公式提取母猪像素,其中STH(i,j)表示分割后的二值图,H(i,j)表示H分量,G(i,j)表示灰度图像,thh是色调阈值,thg是灰度阈值;
如果H分量的色调值大于色调阈值且灰度图像I上的灰度值大于灰度阈值,则将像素点标记1,否则标记为0,得到阈值分割结果,并进行后处理。
3.根据权利要求2所述的一种融合FCN和多通道阈值分割的哺乳母猪图像分割方法,其特征在于,所述步骤S4融合是将FCN的分割结果和阈值分割按照以下公式融合,其中SFCN(i,j)是FCN分割结果,STH(i,j)是多通道阈值分割结果,融合后进行后处理,获取最终分割结果I(i,j);
4.根据权利要求1所述的一种融合FCN和多通道阈值分割的哺乳母猪图像分割方法,其特征在于,所述反卷积是指对输出数据进行上采样,上采样是通过双线性插值实现的。
5.根据权利要求1所述的一种融合FCN和多通道阈值分割的哺乳母猪图像分割方法,其特征在于,所述池化层n的预测结果score(n)是一副二维图,每个坐标点位置的值代表了每个类别的概率。
6.根据权利要求1所述的一种融合FCN和多通道阈值分割的哺乳母猪图像分割方法,其特征在于,所述训练集是指用来训练分割模型的数据集;所述验证集是指在训练过程中,用来优化网络结构参数的数据集,选择最优网络模型;所述测试集是指用来测试模型性能,并进行性能评价。