基于深度学习的群体种鸭蛋受精信息检测方法
2021-02-01李庆旭王巧华肖仕杰马美湖
李庆旭 王巧华,2 肖仕杰 顾 伟 马美湖
(1.华中农业大学工学院, 武汉 430070; 2.农业农村部长江中下游农业装备重点实验室, 武汉 430070;3.国家蛋品研发中心, 武汉 430070)
0 引言
目前,我国禽蛋孵化产业自动化程度较低,主要采用人工照蛋方式剔除无精蛋。人工照蛋方式准确率低、速度慢,且影响到孵化饲养健康,亟需相关自动化装置代替人工,对无精蛋进行快速、精确检测及剔除[1]。针对此问题,研究者提出了机器视觉[2-3]、光谱[4-5]、敲击振动[6]等方法,对禽蛋的受精信息进行无损检测,均取得了较好的检测效果。但这些方法均针对单枚种蛋,检测效率较低,很难应用于实际生产中。因此,对整盘群体禽蛋中受精蛋的精准识别是解决该问题的关键。 文献[7]利用称量法结合机器视觉对群体种鸡蛋中的受精蛋进行检测,对孵化7 d的种鸡蛋检测精度为96.7%,由于需要每天对种蛋进行称量,故实际生产难度依然很大。
整盘群体禽蛋中受精蛋的检测难点在于群蛋的图像分割,特别是在群蛋中无精蛋较多的情况下。近些年,深度学习已成功应用于机器视觉领域,R-CNN[8]、YOLO[9]、SSD[10]等基于深度学习的目标检测算法有效地解决了复杂背景下的图像分割和图像识别问题。基于深度学习的目标检测算法在农业领域已被广泛使用[11-15]。
将深度学习引入机器视觉中,对群体种鸭蛋中受精蛋进行精准识别,并且检测出受精蛋的位置信息,可为后续相关机器人和机械手的研发提供技术支持。因此,本文以孵化5 d的群体种鸭蛋为研究对象,在常用的SSD-MobileNet[16]目标检测算法的基础上,提出一种以MobileNetV3[17]作为SSD特征提取网络的群体种鸭蛋受精信息检测方法。
1 材料与方法
1.1 数据采集
为采集大量图像数据,选取湖北省神丹种鸭养殖基地的缙云麻鸭种蛋7 776枚作为试验材料,进行3次试验,每次试验条件与试验方法完全相同。将种鸭蛋用酒精擦拭消毒并编号后放入智能孵化箱内孵化。为了模型后续部署实际生产时具有较好的泛化能力,模拟实际生产环境搭建了一套由CCD相机、整盘照蛋器、计算机、暗箱、LED光源、蛋盘等构成的图像采集装置,如图1所示。每隔24 h采集一次图像,种鸭蛋竖直放置于蛋盘,对应种鸭蛋的编号在图像中的位置均有记录。共采集获得324幅图像,每幅图像含有种鸭蛋24枚。在孵化15 d后对鸭蛋进行破壳处理,获得精准的受精结果,作为后续评价模型判别性能的真实依据。
采集得到的原始图像如图2所示,图像尺寸为1 634像素×1 234像素。随着孵化时间的增加受精蛋内受精卵会形成血管,同时蛋白粘度也发生变化[18],孵化5 d的群体种鸭蛋在功率为10 W的LED光源透射下,受精蛋的颜色呈暗红色,无精蛋颜色则较为明亮。差异较为明显,为使用SSD目标检测算法实现受精蛋和无精蛋的识别提供了可能性。
1.2 数据集准备
使用SSD目标检测算法训练前,需要对采集的原始图像进行人工标注。选择当前常用的LabelImage标注工具,对群体种鸭蛋图像中的受精蛋和无精蛋进行人工标注,标注完成后自动生成含有类别和位置信息的xml文件。标注完成后将324幅图像划分为训练集、测试集和验证集,其中训练集210幅图像、测试集90幅图像、验证集24幅图像。虽然图像数量相对较少,但是每幅图像含有24个种鸭蛋样本,324幅图像中含边框标注样本个数为7 776(其中受精蛋和无精蛋比例约为1∶1),训练集中受精蛋2 700枚,测试集中受精蛋927枚,验证集中受精蛋261枚,基本能够满足深度学习样本数量要求,故不再对数据进行扩增。最终将数据按照PASCAL VOC 数据集的格式存储。
2 群体种鸭蛋识别SSD网络改进
2.1 SSD-MobileNet网络结构
SSD-MobileNet网络将经典SSD的基础网络由VGG网络替换为MobileNet网络,作为图像的特征提取网络。SSD-MobileNet网络结构如图4所示,网络的前端为MobileNet网络,后端为SSD辅助网络。从图4可以看出,SSD-MobileNet的Conv11、Conv13、Conv14-2、Conv15-2、Conv16-2、Conv17-2特征层的每个单元产生的默认框个数分别为3、6、6、6、6、6,每个类别生成1 917个默认框。默认框中含有位置和类别信息,与人工标注的真实目标的位置和类别信息相比会有一定误差。检测框架需要同时进行位置和类别预测,最后通过非极大值抑制方法得到检测结果。训练的过程是使检测框架预测值与真实值误差不断减小的过程,使用位置损失和置信损失(分类损失)的加权和作为总体目标损失函数
(1)
(2)
(3)
(4)
式中N——匹配默认框的数量
l——预测边框坐标
g——真实边框坐标
c——Softmax函数对每个类别的置信度
x——真实边框与预测边框匹配标志
SL1——预测位置与真实位置的平滑L1损失
α——权重系数Lloc——位置损失
Lconf——分类损失
pos——正样本集合
neg——负样本集合
box——预测框中心坐标及其高和宽的集合
2.2 基于MobileNetV3_large的改进SSD网络
MobileNet网络中用深度可分离卷积代替了标准卷积(Convolution,Conv2d),同时引入了宽度因子和分辨率因子,极大地减少了参数量和计算量。但宽度因子和分辨率因子的引入会丢失大量特征,且MobileNet网络前向传播过程中存在ReLU非线性变换,ReLU激活函数在提取高维空间的特征时能有效增加非线性,但是在提取低维空间时会破坏特征的非线性,导致MobileNet网络在训练过程中存在线性瓶颈[21]。为此文献[22]结合深度可分离卷积在逆残差结构的基础上提出了MobileNetV2网络,增强了梯度的传播,保留了更多的特征。逆残差结构(Inverse residual structure,IRS)如图5所示,通过先升维再卷积后降维的操作有效地丰富了特征数量,同时使用ReLU6代替ReLU函数作为激活函数,提升了网络的鲁棒性[23]。ReLU6函数的实现公式为
Y=min(max(X,0),6)
(5)
式中Y——函数输出X——输入特征
为了进一步提升网络的检测速度、减小网络的参数量,文献[17]在MobileNetV2网络基础上提出了MobileNetV3网络。MobileNetV3网络引入了注意力机制模块(Squeeze-and-Excitation blocks)改进逆残差结构,引入注意力机制的逆残差模块(SE inverse residual convolution structure,SE IRS)如图6所示;同时使用H-Swish函数作为激活函数
(6)
式中y——H-Swish函数输出x——输入
最后利用资源受限的NAS(platform-aware NAS)与NetAdapt网络搜索技术确定网络结构,使得模型的检测精度和检测速度都有了提升。
MobileNetV3网络分为large和small 2个版本,两者仅在通道数和网络层数上有所不同。MobileNetV3_large网络参数如表1所示,共19层网络,包括标准卷积、逆残差卷积、注意力机制逆残差卷积及池化(Pool)等操作。针对群体种鸭蛋中受精蛋与无精蛋差异较为明显,为了进一步减少模型的参数量从而提高模型的检测速度,本文对常用的SSD-MobileNet网络改进如下:①将去掉分类层和输出层的MobileNetV3_large网络代替MobileNet作为SSD的基础网络。②利用逆残差结构代替SSD辅助网络中的标准卷积。③将网络的输入由300×300×3改为320×320×3,增加网络的预测精度。改进后的SSD网络结构如图7所示,每类生成2 034个默认框,然后经过检测框架进行预测,最后通过非极大值抑制算法得到种鸭蛋的位置和类别。改进后的SSD网络参数如表2所示。
表1 MobileNetV3_large网络参数Tab.1 MobileNetV3_large network parameters
表2 基于MobileNetV3_large的改进SSD网络参数Tab.2 SSD network parameters after improvement based on MobileNetV3_large
2.3 基于MobileNetV3_small的改进SSD网络
MobileNetV3网络的small版本为更加轻量化的网络。为了进一步提升模型的检测速度,利用MobileNetV3_small版本代替改进SSD群体种蛋检测网络中的基础网络。MobileNetV3_small网络与large版本相比,只是对网络层数和通道数进行了调整,减少了网络的参数量和计算量,其网络参数如表3所示,共15层网络。
表3 MobileNetV3_small网络参数Tab.3 MobileNetV3_small network parameters
本文利用MobileNetV3_small网络代替改进SSD群体种蛋检测网络中的MobileNetV3_large网络,网络输入尺寸为320×320×3,网络结构如图8所示。利用MobileNetV3_small网络的前13层作为SSD的基础网络,其他部分与基于MobileNetV3_large网络改进的SSD群体种蛋检测网络相同,网络参数如表4所示,每类生成2 034个默认框,经过检测框架进行预测,最后通过非极大值抑制算法获取种鸭蛋的位置和类别信息。
2.4 迁移学习
在深度学习领域中,迁移学习是一种常用的模型训练手段。避免了随机初始化网络权重和偏置等参数导致的模型收敛速度慢和网络的不稳定[24]。利用大数据集下已经训练好的预训练模型,通过共享网络前端的权值参数,微调网络后端的参数,从而使新任务下的模型训练能够迅速收敛,即使在小数据集下也只需要少量的训练时间和计算资源开销便可以实现对新任务的适应。本文利用COCO数据集下预训练好的模型权重初始化SSD网络的权重,通过训练对SSD网络参数进行微调,进一步减少了模型的训练时间与资源。
表4 基于MobileNetV3_small改进的SSD网络参数Tab.4 SSD network parameters after improvement based on MobileNetV3_small
3 模型训练及结果分析
3.1 试验平台
采用AMD锐龙 Threadripper 2920X型CPU;NIVIDIA GeForce RTX 2080Ti 型GPU,11 GB显存;128 GB内存;操作系统为Windows 10的硬件训练平台。深度学习框架使用Tensorflow-GPU 1.14.0,CUDA 9.2版本的并行计算框架,深度神经网络加速库选择CUDNN v7.6版本。本文的SSD目标检测模型的训练与测试均在Python 3.7版本下完成。
3.2 模型训练
模型训练的过程是模型不断调整自身参数,使得预测值与真实值不断接近的过程,训练过程中使用的目标损失函数为式(1),与SSD-MobileNet相同。基于MobileNetV3的large和small网络改进的SSD模型底层权重均使用迁移学习的方法进行初始化,其余权重采用均值为0、方差为0.03的高斯分布进行随机初始化。梯度更新是训练过程中不断调整权重和偏置的方法,从而使模型性能不断优化,本文使用批量随机梯度下降算法寻找梯度下降方向。初始学习率设置为0.04,学习率衰减方法为指数衰减法,衰减率设置为0.97。训练的批次图像数量(Batchsize)设置为16,最大训练次数设置为4×104,单步训练时间约为2 s,每训练10 min保存一次模型的参数。以基于MobileNetV3_large网络改进的SSD群体种鸭蛋检测网络的训练过程为例,改进前和small版本训练过程与之类似。图9为使用了迁移学习(Transfer learning-loss)及未使用迁移学习(Normal loss)的损失函数变化曲线。从图9可以看出,基于MobileNetV3_large改进的SSD网络在使用迁移学习进行训练1 000次后迅速收敛,训练6 000次后维持在较低水平小幅度振荡;而未使用迁移学习的基于MobileNetV3_large改进的SSD网络在训练4 000次后才开始迅速收敛,训练9 000次后维持在较低水平,说明使用迁移学习可以加快模型的收敛速度。
3.3 结果分析
3.3.1评价指标
目前评价基于深度学习的目标检测模型性能的主要手段是测试模型在验证集数据上的检测效果。常用的技术指标有准确率、召回率、漏检率、检测速度和模型占用内存。本文利用训练好的SSD-MobileNet模型和改进后 SSD模型分别对验证集24幅图像(含576个种鸭蛋)进行测试,用上述5个评价指标对比两者的优劣。漏检率M定义为
(7)
式中A——鸭蛋总数量
B——误把鸭蛋当作背景的数量
3.3.2测试结果及分析
对孵化5 d后的24幅群体种鸭蛋图像的测试结果进行统计,包括准确率、召回率、漏检率、检测速度和模型占用内存5项评价指标。共576枚种鸭蛋,SSD-MobileNet错判了18枚种鸭蛋(其中将无精蛋判为受精蛋10枚,将受精蛋判为无精蛋2枚,漏检6枚),基于MobileNetV3_large改进的SSD错判了11枚种鸭蛋(其中将无精蛋判为受精蛋7枚,将受精蛋判为无精蛋4枚,漏检0枚),基于MobileNetV3_small改进的SSD错判了20枚种鸭蛋(其中将无精蛋判为受精蛋9枚,将受精蛋判为无精蛋3枚,漏检8枚),统计结果如表5所示。
通过表5可以发现,基于MobileNetV3_large改进的SSD模型在精度和速度方面均优于改进前的SSD-MobileNet网络,基于MobileNetV3_small改进的SSD模型检测速度最快,但精度相比改进前的SSD-MobileNet网络未有提升。综合考虑检测精度和速度,基于MobileNetV3_large改进的SSD模型对群体种鸭蛋的识别效果最佳。基于MobileNetV3_large改进的SSD模型的检测速度可以达到68 f/s,远快于改进前的45 f/s,且模型占用内存仅为9.10 MB,满足部署到嵌入式系统的模型参数要求。此外漏检率是衡量模型可靠性的重要指标,改进后SSD模型的漏检率为0,说明模型的可靠性远高于SSD-MobileNet网络和基于MobileNetV3_small改进的SSD网络。图10为同一幅群体种鸭蛋图像SSD-MobileNet模型、基于MobileNetV3_large改进的SSD模型和基于MobileNetV3_small改进的SSD模型的检测结果。
表5 模型测试结果Tab.5 Model test results
4 结论
(1)运用MobileNetV3_large网络代替MobileNet网络作为SSD的基础网络,并使用逆残差结构代替SSD辅助网络中的标准卷积,对群体种鸭蛋中受精蛋和无精蛋的识别性能最佳,准确率和召回率分别为98.09%、97.32%,漏检率为0。模型占用内存仅为9.10 MB,检测速度可达到68 f/s,具有很好的鲁棒性,可满足实际生产要求。
(2)通过迁移学习,将COCO大数据集下预训练好的模型权重迁移到群体种鸭蛋中受精蛋和无精蛋的检测任务下,加速了模型的收敛速度,节约了训练成本。
(3)将群体种蛋中的个体单独分割出来,对每个种蛋进行受精识别,解决了群体种蛋图像难以分割的问题。利用卷积神经网络端对端的特点,输入一幅群体种鸭蛋图像可直接检测出种蛋的类别和位置信息,为群体种蛋受精信息检测提供了一种思路,加速了禽蛋孵化行业的智能化,也为后续研发相关自动化设备提供了技术支持。