孙 强,郝 敏
(内蒙古农业大学机电工程学院,呼和浩特 010000)
内蒙古地区拥有大规模的畜牧养殖业,是我国牛奶、牛肉、羊肉、羊绒的主要产地之一。随着经济快速发展,国内市场对高蛋白的牛羊肉等需求逐年增加,呈现出消费增幅快于生产增幅的态势[1]。在内蒙古地区的牛羊饲养中,草原放牧畜产品更受市场青睐,但畜牧业发展要兼顾自然环境的保护,放牧生产端需要定期统计放牧牛羊数量反馈给牧民和有关部门进行载畜量分析、生产调整和科学管理,因此便捷准确地对同一放牧草原中不同放牧牲畜识别计数以折合为羊单位进行实际载畜量统计,进行草畜平衡分析对保护生态平衡和促进畜牧业健康发展、促进草地可持续发展具有十分重要的意义和作用。
目前牲畜养殖中电子耳标使用广泛[2],在福利化养殖中主要针对奶牛这种长期养殖牲畜采用耳标用于记录牛的健康状况,但这类接触式的计数手段成本高,不适用于短期养殖牲畜或草原自由放牧较多牲畜的场合。随着机器视觉的发展,李琦等[3]采用YOLOv3 与DeepSORT算法相结合,提出基于双线计数法的草原羊的自动计数,但该方法需要在羊圈中预设检测设施,不适用于大型草原。
随着智能化畜牧养殖业的发展,结合航拍图像使用机器视觉技术代替人眼,通过目标检测算法无接触进行目标场景下的牲畜识别和数量统计具有检测简单快速的优越性。伍天舟[4]利用无人机航拍图像制作羊头数据集结合SSD算法进行放牧羊群的自动计数。赵建敏等[5]提出基于无人机图像的羊群密集计数方法,初步解决了羊群密度判断。杜永兴等[6]采用标注点的方式标注羊只,高斯核回归转换成标签,提升了高密度场景下计数准确度。
但针对航拍图片中牛羊小目标粘连现象,目前研究中以羊头为目标比以羊背作目标检测效果好,但航拍图像中存在羊头被遮导致漏检;设计不同大小检测框无法满足牛羊等形态各异的检测需求。本文利用深度学习算法研究适应性更强的特征提取网络,以羊背作为检测目标,引入anchor-free 类的CenterNet 关键点检测算法,针对小目标检测难同时对牛羊进行分类识别,引入多尺度的特征提取网络Res2Net提取更多特征[7],再添加注意力机制优化模型,以快速准确地对牛、羊两种放牧牲畜进行识别与计数。
在内蒙古自治区乌兰察布草原,考虑到不同高度下待检测目标的分辨率,使用DJI Mavic Air2 无人机在20 m 和25 m 两个高度下对放牧场景下的多个羊群和牛群在雪地、草原、人工养殖场等多个不同场景、早中晚等不同光照条件下分别进行图像采集,研究所获取的无人机可见光原图像的分辨率最高为5472×3648 像素,航拍图像如图1所示。
图1 无人机航拍图像
本研究的深度学习实验平台的环境配置如表1所示。
表1 深度学习实验平台搭建
为了提升模型的泛化性能,从拍摄目标与拍摄条件两方面着手来提升数据的丰富度。牛羊数量较大,且觅食喜欢群聚,识别准确率与图像所含目标数量相关,其识别难度体现在牲畜群聚时识别对象粘连程度,因此图像裁剪和数据集构建时考虑单张图像内包含的各类识别对象的类型、数量。另外手动剔除了一些由于图片过曝过暗、目标遮挡过多、拍摄角度倾斜的低质量图像。
1.2.1 图像预处理
考虑到深度学习方法需要足够数量训练集图像进行模型训练,但原图像数量有限且含有较多目标,对原图像的不同类型目标进行单个目标的整只裁剪和包含目标大约20~400个不同数量目标区域裁剪以扩充数据集,达到每张样本图像中都含有多个待识别的目标的基本要求。
整只裁切后的图片长宽比并不规则,算法模型需要输入固定长宽比的图像,一般的resize处理强行改变长宽比导致牛羊目标体型变形影响后续模型训练,如图2所示。
图2 resize效果图
本研究引入等比例放缩的letterbox图像预处理输出特定尺寸的图片。由于裁剪图片的长宽比不同导致缩放填充后两端的灰度大小不同,灰度填充较多导致信息冗余影响推理速度,对letterbox 的缩放策略进行改进,即:先计算原图像宽高与输入尺寸的缩放比例Rw和Rh,若是放大选取R=min(Rw,Rh),若是缩小选取R=max(Rw,Rh),再将原图像按R进行相应缩放;此时原图像宽或高里有一边与规定输入尺寸相同,没有达到输入尺寸的另一边计算与规定输入尺寸的差值,然后进行上下(或左右)的填充,实现了对原图像自适应的灰度填充,如图3所示。
图3 letterbox效果图
图4 CenterNet网络结构
1.2.2 自建数据集
制作的数据集包括1000 张牛羊航拍图片,其中有200 张来自互联网,800 张图片来自乌兰察布草原。由程序随机划分100张做测试集,剩余900 张按照9∶1 的比例由程序随机划分训练集和验证集。表2是自建数据集所含目标数量分布情况。使用图像注释工具LabelImg 对裁剪及缩放后的图像进行牛羊分类标注,通过最小外接矩形将样本中的牛、羊背部分别标出,记录该矩形的左上、右下的顶点坐标并分别设置类别标签为cattle和sheep。
表2 数据集的目标数量分布
表3 ImageNet数据集的目标检测效果
表4 自建数据集的目标检测效果
本次研究采集的航拍牛、羊目标像素占原图像总像素的比例小,属于小目标检测范畴。待检测牛、羊目标自身包含的像素信息过少,因而包含的判定性特征过少;由于小目标的ground truth box 和anchor 都较小,加上小目标对定位的要求较高,anchor 和ground truth box 稍微偏移就会造成IoU(intersection over union)过低,导致该目标被模型判断为负样本[8]。本实验图像中牛羊所占比例不同,针对性设计anchor 无法满足自建数据集同一类型目标所需anchor 不同的要求,本研究使用不需要生成ancor 的anchor-free模型。
CenterNet 主 要 分 为Backbone、 Decoder、Head三个部分,将目标检测转换成中心点预测。经过Backbone提取初步特征,在Decoder中通过反卷积模块三次上采样得到更高的分辨率特征输入到Head,通过预测目标点的偏移量(Offset)与宽高(Width&Height)来获取预测的矩形框,模型对于牛、羊都会产生一个单独的Heatmap图,对于生成的Heatmap 图,如果某个坐标处含有牛、羊的中心点,则在该坐标处生成一个关键点。模型只需要从Heatmap 中提取目标,不使用NMS(non-maximum suppression),降低了计算量,最后将Head 的3 个分支预测结果进行整合,得到目标的检测框和所属的类别[9]。
本研究对于模型的改进与提升主要体现在防止小数据集训练过度拟合和提升模型对于牛羊计数的精度上。自建牛羊数据集图片较少,训练模型易产生过拟合。为获得准确的预测,使用下列三种方法预防过拟合。
2.2.1 运用迁移学习
迁移学习是先在可用的大型数据集上训练通用模型,然后在小型数据集上对其进行微调。本研究是对牛、羊的目标检测,模型在VOC 07+12数据集上预先训练,再对模型进行微调。比起从零开始使用小数据集训练的模型,使用大型数据集预先训练的模型更可能产生准确的预测[10]。
2.2.2 模型选择与组合
组合模型通过个体模型预测值加权平均计算出最终预测值,提升模型泛化能力。为防止过拟合,限制权重和参数量排除掉可能具有非线性或特征交互的模型,本研究使用CenterNet论文中平衡性最佳的ResNet 类作为特征提取网络,降低出现训练过拟合的可能。
2.2.3 平衡样本
小数据集中异常值对预测结果影响较大,处理数据时需要识别并删除异常值[11],而特殊数据不足导致数据种类不平衡时可使用合成样本。另一方面,在模型的目标中心点与分类中用Focal Loss 控制正负样本、容易分类和难分类样本的权重[12]。
交叉熵损失在二分类问题的函数为
上式中y表示目标的类别,值为1 和-1,类别的概率分别用P和(1-P)表示。
此时,CE(P,y) =CE(Pt)= -ln(Pt)。
通过引入一个在[0,1]范围内的系数αt实现正负样本对loss的控制:
通过(1 -Pt)可以计算出某个类属于容易分类还是难分类,引入调制系数(1 -Pt)γ来控制模型趋向于难分类样本:
通过将Focal loss 控制正负样本的加权,降低易分类样本参与模型训练的可能性。
小目标可利用像素较少难以提取特征,随着网络层数的增加,目标的特征信息与位置信息也逐渐丢失,难以检测。因此小目标检测引入多尺度学习提取深层语义信息与浅层表征信息。
2.3.1 替换多尺度Backbone
Res2Net是ResNet升级而来的一种多尺度特征提取网络。
图5(b)中的Bottleneck block 网络第一个1×1卷积核负责降低通道维度,最后一个1×1 卷积核负责提升通道维度,增加了网络深度,相比Basicblock的计算量反而有所下降[13]。
图5 Basicblock、Bottleneck、Bottle2neck(4s)结构
如图5(c),Res2Net在单个残差块内构造具有等级制的类似残差连接,取代了Bottleneck block 的3×3 卷积核,称为Bottle2neck。Res2Net在更细粒度级别表示多尺度特征,并增加了每个网络层的感受野。
在Res2Net 中引入了Scale 层,Scale 表示block 中分支的个数,图5(c)中X分成4 份,表示s= 4。而w表示每一个分支的通道数目,Res2Net 用一组较小的卷积核组替代n个通道的3×3卷积核,这些卷积核组以分层类似残差的连接,用来增加尺度表示输出特征[14]。由于s和w的引入,Res2Net具有多个版本。
选择参数量较少的版本替换原有的Backbone在自建的牛羊数据集上运行。
多类目标的检测模型需要直观地展现各指标的联系,选择各项指标平衡性最佳的模型。由于参数量大的模型训练小数据集更易过拟合,如图6所示,选择精度和参数量两个指标平衡性最好的Res2Net-v1b-50。
图6 Paraeters-mAP示意图
牛、羊两类目标具有一定差异,训练效果存在差异,绘制直方堆叠图展示模型性能,红色星星柱和蓝色斜线柱的高度分别代表APsheep和APcattle的值,整体的高度反映mAP高低,直方堆叠图从mAP和两类AP两个角度比较模型的性能。
图7 中选择Res2Net-v1b-50 的模型AP最高且参数量适中,APcattle-sheep虽然较高,但同类型的Res2Net-26w-4s 的APcattle-sheep较 低,Res2Net-v1b仅修改了Res2Net-26w-4s 代码的顶层,用三层卷积组合代替了原来的一层卷积层,后续有改善APcattle-sheep的可能。选用Res2Net-v1b-50的模型综合表现更好。
图7 APcattle-sheep直方堆叠图
图8 注意力机制位置添加示意图
2.3.2 引入注意力机制
在深度卷积神经网络中嵌入注意模块可以提升部分性能[15]。引入常用的3 种注意力机制,传统的通道注意力SENet[16],拥有空间及通道注意力CBAM[17],以及优化SENet 而来的轻量化ECANet[18],选择效果最佳的注意力机制。注意力机制是一个即插即用的模块,理论上可以置于任何一个特征层后,由于是改进后的组合模型,放在主干网络会导致预训练权重无法使用,选择加在Backbone 中,针对Res2Net 中添加了Scale 层,为不影响Res2Net 在更细粒度级别表示多尺度特征,选择Res2Net-v1b-50在Backbone的Attention Module-1 和Attention Module-2 两 个位置分别加入这三类注意力机制。训练结果见表5,在Attention Module-1 处添加ECANet 提升效果最佳,最终载畜量计数模型选择用此改进模型。
表5 添加注意力机制后自建数据集的检测效果
2.3.3 网络训练及参数设置
模型其他参数设置:选择adam 优化器来更新学习率从而对网络进行训练,达到快速收敛的效果;使用余弦退火指数衰减策略,使得模型收敛达到最优解,避免陷入局部最小值;训练时将初始学习率设置为5×10-6,网络训练时epoch值设置为500,Batch_size值设置为32。
2.4.1 检测速度评价
模型的参数量与计算速度有一定的关系,而评价模型检测速度主要是比较FPS(frames per second)。
通过代码记录检测每帧图片所用的时间T(单位:秒),得:
2.4.2 检测精度评价
其中,TP:被正确识别为正样本的数量;FP:被错误识别为正样本的数量;TN:被正确识别为负样本的数量;FN:被错误识别为负样本的数量。
根据训练数据绘制Precision-Recall曲线,得到:
本实验类平均精度为
为了反映对牛羊类别的检测差异,计算牛羊AP差值APcattle-sheep,得:
2.4.3 漏检率评价
参考行人检测的评价标准,对数平均漏检率(log-average miss rate,LAMR)是反映多目标图像检测能力的指标[19],每幅图误检个数(false positive per image,FPPI):
漏检率(miss rate,MR)反映正确预测负样本的能力。
绘制类似于Precision-Recall曲线的MR-FPPI曲线,在横坐标FPPI的10-2到100之间均匀取9个点,获取这9个点的MR值。
图像中FPPI上限与牛羊密度有关,建立在MR-FPPI曲线上的LAMR对模型有一定参考价值,LAMR越小模型性能越好。
为了检验改进后模型的检测能力,用自建牛羊数据集以同样的参数设置,对以ResNet-50为初步特征提取网络的CenterNet模型进行训练。牛和羊的检测框设为绿色和红色(如图9 所示),在只含牛的图片检测中,使用ResNet-50 提取特征信息不足,存在将背景识别为牛的情况;在同时含有牛羊目标的图像中,最终模型提升了多只羊粘连的检测以及牛羊的分类识别能力;在羊群密集时,最终模型对羊目标检测改善明显。
图9 目标检测框效果
CenterNet 检测框的生成依靠Heatmap 图,见图10,在Heatmap 中,若某个坐标处有物体目标的中心点,即在该坐标处产生一个高斯圆。由于检测框是在Heatmap 的基础上生成,通过Heatmap图可以看到黑色牛,尤其是偏黑色背景中ResNet-50 上的检测效果较差,而最终模型提取更多特征信息,对于拥有较小信息量的目标和受背景干扰目标的检测效果更佳。
图10 Heatmap目标检测效果
参数量接近时,牺牲部分检测速度,最终模型在牛羊计数任务上取得了更好的结果,见表6。
表6 模型参数比较
改进后的最终模型对比使用ResNet-50 的模型mAP提升了2.89 个百分点,对比CenterNet 原论文中使用的ResNet-18 和ResNet-101 分别提升了5.78 和4.15 个百分点,最终模型中牛和羊的LAMR 对比ResNet-50 都下降了约10 个百分点,提升了密集目标的检测能力。最终模型提升了个体分界不明显和粘连目标的检测能力。