基于E-DCN-Cascade RCNN的牛群目标检测算法
2022-08-23徐文贵王智霖
李 琦,沈 雷,徐文贵,王智霖
(杭州电子科技大学通信工程学院,浙江 杭州 310018)
0 引 言
近年来,畜牧养殖业向规模化、信息化、精细化方向发展,集约化养殖逐渐取代散户养殖等小规模养殖。大规模牛场管理中,需对牛进行精细化管理,牛群的目标检测至关重要。目前,目标检测主要分为传统目标检测和深度学习目标检测。传统目标检测主要采用方向梯度直方图(Histogram of Oriented Gradient, HOG)加支持向量机(Support Vector Machines, SVM)[1],描述子生成过程时间长,速度慢,实时性差。采用深度学习方法使得检测性能不断提升。文献[2]使用区域神经卷积网络(Region Convolutional Neural Network,RCNN)进行物体目标检测,取得了较好的结果,但由于使用选择搜索算法生成的每个候选区域都要执行卷积网络前向传播,检测速度很慢。文献[3]使用Fast RCNN主干网络对图片进行特征提取,再进行候选区域的选择,避免了多次卷积,提高了检测速度。文献[4]采用Faster RCNN进行目标检测,使用区域候选网络(Region Proposal Network,RPN)代替选择搜索算法,综合性能得到一定提升,检测速度提升明显。为了进一步提高检测效果,在特征提取阶段,文献[5]使用特征金字塔进行特征融合处理,提高了网络的特征提取能力;文献[6]使用膨胀卷积增强了特征的感受野,但可能会丢失特征之间的连续信息;文献[7]运用可变形卷积将卷积区域覆盖在检测物体周围,降低了背景噪声的干扰。目标检测在行人检测上取得了非常不错的效果,但较少用于畜牧养殖业。大规模牛场的牛舍情况复杂,牛身与牛舍背景非常相似,牛群相对密集,遮挡情况严重,区分度不高。本文采用可变形-膨胀卷积(Expand-Deformable Convolutional Networks, E-DCN)网络将每一级的特征进行融合,再使用特征金字塔网络(Feature Pyramid Network,FPN)对特征进行多级融合,最后使用级联检测器[8]逐层提高候选框的阈值,提出一种基于可变形-膨胀卷积级联网络(Expand-Deformable Convolutional Networks Cascade Region Convolutional Neural Network,E-DCN-Cascade RCNN)的牛群目标检测算法。
1 E-DCN-Cascade RCNN
1.1 网络结构
本文提出的E-DCN-Cascade RCNN牛群目标检测算法网络结构如图1所示,由特征提取网络E-DCN-Resnet101、特征金字塔和级联检测器组成。
图1 E-DCN-Cascade RCNN网络结构
1.1.1 E-DCN-Resnet101
特征提取网络E-DCN-Resnet101主要由5个部分组成,包括1个卷积块conv1和4个残差块。其中conv1包含1个7×7卷积层、1个最大池化层、1个ReLU激活函数层、1个BN层(批量归一化层)。4个残差块包含conv2_x,conv3_x,conv4_x,conv5_x,残差块的数量分别为3,4,23,3。conv2_x中包含2个1×1卷积层、1个3×3的卷积层、3个ReLU激活函数层和BN层。conv3_x,conv4_x,conv5_x分别包含2个1×1卷积层、2个3×3的E-DCN层、3个ReLU激活函数层和BN层。使用E-DCN进行conv3_x,conv4_x,conv5_x的特征提取,保证对应特征图大小(通道数C×宽W×高H)不变,分别为128×28×28,256×14×14,512×7×7。可变形卷积将卷积区域贴合于牛身周围,降低遮挡对牛身特征的干扰,并将更多的权重放在牛身特征上,增大与牛舍背景信息的对比度。膨胀卷积能够增加感受野,但会降低空间分辨力。本文选取不同的膨胀率,分别为r1=1,r2=2和r1=1,r2=3,得到融合后的E-DCN在第5特征层的特征,并转化为热力图,特征对比图如图2所示。
图2 不同膨胀率的DCN的特征对比图
用颜色深浅来区分不同区域的作用权重,颜色越深,权重越大。膨胀率设置过大,虽然能增强特征的感受野,但也会造成更大的特征损失。从图2可以看出,图2(b)中圆圈标记的位置比图2(c)的颜色更深,说明其作用权重更大,更能表现牛身的特征,故本文选取的膨胀率为r1=1和r2=2。
标准卷积原理中,对于3×3的标准卷积核,用一个规矩的网格R对输入特征图进行采样,R={(-1,-1),(-1,0),…,(0,1),(0,1),(1,1)}代表卷积核的9个位置。对输入特征图的每一个位置P0进行卷积操作后,求得的加权和为:
y(P0)=∑Pn∈Rw(Pn)x(P0+Pn)
(1)
式中,Pn为卷积核的每一个位置,w为卷积核,x为特征图。
膨胀率r1=1和r2=2的可变形-膨胀卷积融合结构的具体实现如图3所示。
图3 膨胀率r1=1和r2=2的可变形-膨胀卷积融合结构
图3中,大小为3×3、膨胀率分别为r1=1和r2=2的标准卷积核为K1,K2。为了让卷积区域贴合牛身,使得牛身和牛舍背景具有更好的区分度,在标准卷积基础上引入可变形卷积,可变形卷积核为C1,C2,在标准卷积采样中通过增加偏移量来实现卷积核变形,加权求和后得到:
y′(P0)=∑Pn∈Rw(Pn)x(P0+Pn+ΔPn)
(2)
式中,ΔPn为偏移量,{ΔPn|n=1,2,…,9}对应图3中的偏移。ΔPn不一定为整数像素,很有可能为小数,所以使用双线性插值方法进行取整,可得:
x(p)=∑qmax(0,1-|qx-px|)max(0,1-|qy-py|)x(q)
(3)
式中,p=P0+Pn+ΔPn,p表示任意一个位置,q表示特征图x上所有整数的空间位置。
通过式(3)得到的x(p)即为通过可变形卷积核K1,K2后的特征图F1和F2,采用concat方法对F1和F2进行通道拼接,得到大小为4C×W×H的特征图,再使用1×1的卷积核进行降维操作,得到大小为C×W×H的特征图Q,确保融合后的特征图与后续卷积操作得到的特征图相匹配。得到的最终融合特征图Q为:
(4)
式中,x1(p)和x2(p)分别为经过膨胀率r1=1和r2=2的可变形卷积核得到的特征,Gdcn(·)表示可变形卷积操作,“*”表示conv卷积操作,Cconcat(·)表示concat拼接操作,f1×1(·)表示使用1×1卷积核卷积操作,用于改变特征通道数。
1.1.2 特征金字塔
为了增强提取的牛身特征的多层感知力,经过E-DCN-Resnet101提取特征后,将conv2_x,conv3_x,conv4_x,conv5_x的最后一层输出作为特征金字塔的初始特征集{F2,F3,F4,F5},每一层的最深层均具有最显著的牛身特征。首先,按照从高层到浅层的方向,运用上采样方法使得牛身特征相互匹配;然后,对特征图进行融合,得到具有多层感知力的牛身特征图集{P2,P3,P4,P5},并将其输入到RPN中进行分类和边框回归。
1.1.3 级联检测器
检测阶段,用级联检测器进行检验,共使用3个检测器,每个检测器包含感兴趣区域匹配(Region of Interest_Align,ROI_Align)、全连接层FC、分类得分 C 和边框回归B。检测时,通过前一个检测器输出的边框回归B对候选目标区域进行重采样,即用前一个回归网络输出的候选边框作为下一个检测器的输入,为了提高识别精度,根据牛身特征,从大量实验数据中发现,交并比(Intersection Over Union,IOU)阈值从0.50到0.60再到0.70逐步提升,可以获得较好的精确度。先将IOU阈值设置为0.50,在ROI_Align1中,通过回归得到候选框B1和分类得分C1,再将IOU阈值提高到0.60,将B1输入到ROI_Align2中,回归得到更新后的候选框B2和分类得分C2,最后将IOU提高到0.70,将B2输入到ROI_Align3中,回归得到最终候选框B3和分类得分C3,提升了牛群检测的效果。
1.2 损失函数
本文提出的E-DCN-Cascade RCNN牛群目标检测算法中,网络的损失函数为分类损失与回归损失的总和,其表达式如下:
(5)
2 实验结果与分析
实验服务器GPU为NVIDIA GeForce RTX 3090,深度学习框架为PyTorch,训练集图片大小为1 280×720,模型训练使用批处理大小(batch_size)为64,学习率为0.02,epoch设置为15,在训练到第8和第11批次时进行衰减。优化器使用随机梯度下降(Stochastic Gradient Descent, SGD),动量设置为0.9,权重衰减因子设置为0.000 1。
在牛场顶端部署摄像头,拍摄获得的图片尺寸为1 280×720,将图片进行标注,每张图片标注4~5头牛,共标注700张图片,其中500张作为训练集,200张作为验证集,并将图片做成coco数据集格式。
置信度设置为0.70,分别采用Cascade RCNN算法和E-DCN-Cascade RCNN算法对卧姿、站姿、其他姿态的牛群进行检测,效果如图4—图6所示。
图4 卧姿遮挡牛群检测效果图
图5 站姿遮挡牛群检测效果图
图6 其他姿态遮挡情况牛群检测效果图
从图4—图6可以看出,采用Cascade RCNN检测时,均出现漏检现象。图6中,2种算法都检测到镜头边缘只露出小半身的牛,但本文算法的置信度为0.98,Cascade RCNN的置信度为0.90,说明本文算法具有更强的特征提取能力。
本文采用单体平均精确度(Average Precision,AP)作为衡量检测性能的指标。精确率P表示预测样本中真正样本数占所有正样本数的比例,P=TP/(TP+FP),其中,真正例(True Positives,TP)指被正确划分为正例的个数,假正例(False Positives,FP)指被错误划分为正例的个数。召回率R表示预测样本中实际正样本数占所有预测的样本的比例,计算公式为R= TP/(TP+FN),其中,假反例(False Negatives,FN)指被错误划分为负例的个数。通过计算P和R得到P-R曲线图,其包围的面积就是AP值。
在Linux环境下,IOU阈值设置为0.75,置信度阈值设置为0.50,分别采用Cascade RCNN,Cascade RCNN + DCN,E-DCN-Cascade RCNN进行消融实验,得到的AP如表1所示。
表1 牛群测试数据集消融实验结果 单位:%
从表1可以看出,和Cascade RCNN + DCN和Cascade RCNN相比,E-DCN-Cascade RCNN的AP值分别提高了1.9%和4.2%。
在Linux环境下,设置IOU阈值为0.75,置信度阈值为0.50,分别采用Faster RCNN,Retina Net,Cascade RCNN以及本文提出的E-DCN-Cascade RCNN算法对牛群进行检测实验,得到各算法的AP如表2所示。
表2 不同算法的检测结果 单位:%
从表2可以看出,和Cascade RCNN,Retina Net,Faster RCNN算法相比,E-DCN-Cascade RCNN算法的AP值分别提高了4.2%,6.4%,10.3%。
3 结束语
为了解决牛场复杂环境下牛群检测精度过低的问题,本文提出一种E-DCN-Cascade RCNN牛群目标检测算法。在主干网络Resnet101融合可变形-膨胀卷积进行特征提取,并使用FPN对各层特征融合,最后在RPN中级联3个检测器,提高了检测精度。虽然,本文算法的网络模型的检测精度AP有较大提升,但是网络模型占用的内存依然不小。下一步计划在不降低网络模型精度的前提下,轻量化网络模型,以方便移植到多路摄像头终端,降低实际场景的应用成本。