摘 要 针对生猪智能化管理中传统标识方法存在的易脱标,易引起生猪感染等问题,采用基于改进 YOLOv3模型的非侵入式方法,对生猪多个体识别进行研 究。针 对 原 有 的 YOLOv3模 型,在 Darknet53特征提取器中引入密连块,结合下采样层组成新的骨干网络;在 YOLOv3模型中添加改进的 SPP单 元,最 终 构 建 了 YOLOv3_DB_SPP模型。试验采用的猪脸数据集共分为10类,数据增强后样本为8512张,训练集和测试集比例约为9∶1。结果表明:1)YOLOv3_DB_SPP模型在各分类概率阈值下检测猪脸数据集时的平均精度均值均高于 YOLOv3模型;2)当IOU 阈值为0.5,分类概率 阈 值 为 0.1时,YOLOv3_DB_SPP 模型的平均精度均值比 YOLOv3模 型 高 9.87%;3)YOLOv3_DB_SPP模型检测远距离有遮挡的小目标样本时,平均精度值均高于 YOLOv3模型。YOLOv3_DB_SPP模型用于猪脸识别时,能够提高基础特征提取器的特征提取能力以及检测器的准确率。
本文源自中国农业大学学报 发表时间:2021-03-09 《中国农业大学学报》是教育部主管、中国农业大学主办的国家级综合性农业学术期刊。本刊主要刊登生物学、作物学、植物保护、园艺学、动物科学与动物医学、食品科学与营养工程、农业资源与环境工程、农业机械工程、信息与电气工程、水利与土木工程及农业经济管理等学科的学术论文、文献综述和研究快报等。读者对象为国内外高等院校师生、广大农业科技工作者及管理干部。
关键词 猪脸识别;YOLOv3;DenseNet;SPP
近年来,随着生猪养殖业智能化的发展,生猪的精准管理变得尤为 重 要,而 识 别 生 猪个体则是进行针对性养殖的关键。传统的识别方式包括颜色标记、佩戴 射 频 识 别 耳 标 (Radiofrequencyidentification,RFID)等。使用颜色 标 记 的 方 法 虽 然 直 观,但 仅 限于生猪较少的情况;而佩戴耳标则可能存在耳标损坏,脱标以及生猪感染寄生虫等问题。
现有的猪脸识别研究较少,主要包括:1)Naoki等[1]利用特征空间方法,采用手动分割的特征实现生猪 个 体 识 别,在 16 个 类 别 的 数 据 集 上 达 到97.9% 的识别率;2)Hansen等[2]搭建了基于卷积,最大池化等 结 构 的 CNN 模 型,在农场猪脸识别上取得了较好结果;3)秦兴等[3]利用双线性卷积神经网络进行生猪面部特征提取,并将不同层次的特征做外积融合形成最终个体特征,在其测试图像集上达到了95.73%的识别准确率。上述研究在解决猪脸识别问题 时,主要考虑单个个体样本受光照、姿态、场景等因 素 的 影 响,当样本图像中有多个个体时,难以完成自动化管理中复杂环境下的多个体识别任务。
随着深度学习技术在计算机视觉领域的广泛运用[4-6],深度卷 积 神 经 网 络 在 人 脸 识 别 领 域 成 果 颇丰。理论上,应用于非侵入式场景的人脸识别对于猪脸识别有一定参考价值。深度学习技术在人脸识别领 域 的 研 究 主 要 包 括:1)Taigman 等[7]提 出 的Deep-Face方法,使用4000个人200万的大规模训练数据训练深度卷积神经网络,对人脸对齐和人脸表示提出改进,在 LFW 数据集上达到97.35%的准确率;2)Sun等[8-9]提出的 DeepID系列使用25个网络模型,并在网络结构上同时考虑分类损失和验证损失等,显著提升了人脸识别效果;3)Sun等[10]提出的 DeepID2神 经 网 络 结 构 利 用 人 脸 识 别 信 号 提取不同人脸特征,增大不同人脸图像间的类间差异,并使用人脸验证信号提取同一个人脸的特征,减小类 内 差 异,从 而 学 习 到 区 分 能 力 较 强 的 特 征;4)Florian等[11]提出的 FaceNet网络结构共拥有27层网络层,引入 Triplet损失函数提取人脸的特征信息,使得模型的学习能力 更 高 效;5)Omkar等[12]在网络结构中引入跨层连接,并使用了260万的大规模数据集,在 LFW 和 YTF 数 据 集 上 达 到 很 好 的结果。
基于以上研究,本研究拟采用在骨干网络中引入密连块(DenseBlock)以及在检测器中引入改进的SPP单元的方法,以期设计出能够在多个尺度特征图上对不同大小的目标进行检测,能够有针对性的实现多个体识别任务的猪脸识别算法。
1 材料与方法
1.1 样本采集
样本猪来自安徽蒙城京徽蒙养猪场,使用罗技C920Pro摄像头作为实时采集工具,利用 NanoPc-T4开发板将 USB连接的摄像头采集到的图像传输到开发板的I/O 缓冲区中,在开发板的图形运算单元上对图像数 据 进 行 压 缩 打 包 处 理,利 用4G 通 信模块将图像信息经过互联网传输到服务器。试验中安装摄像头的圈舍光照较为充足,且试验采集装置能够远程控制摄像头的旋转,使得采集到的样本图像具有不同角度的生猪个体脸部信息。
为保证采集到的样本画面连续,能够辨认生猪个体是否为同一只,试验采集装置采样时间间隔设置为0.5s;由于过短的时间间隔可导致采集的样本图像之间相似度过高甚至画面接近重复,故对采集到的样本图像进行了筛选。本研究对连续采集图像之间 采 用 结 构 相 似 性 指 数 (Structuralsimilarityindex,SSIM)进行比较。经过对样本进行一系列的比较试 验,试 验 样 本 同 时 选 用 SSIM 值 <0.78 的2张图像,若大 于 该 值,则选用序号靠后的图 像,样本图像分辨率为1920像素×1080像素。
1.2 YOLOv3
YOLOv3模型使 用 连 续 的1×1和3×3卷 积以及残差模块构成了 1 个 包 含 52 个 卷 积 层 以 及1个全连接层的53层特征提取器 Darknet53,结构见图1,此时输入图片大小为256像素×256像素。在预测时,为了能够充分利用早期特征映射中的上采样特征和细粒度特征,YOLOv3模型使用了多尺度预测方法[13],输入图片大小为416像素×416像素。YOLOv3模型 首 先 去 除 特 征 提 取 结 构 中 的 全连接层,在最后1个残差块的后面增加若干个核大小为1×1和3×3的卷积层集合,并使用最后1个1×1卷积层进行预测,此即为scale1。然后对该尺度提取到的特征图执行上采样操作,并 使 用concat操作将其与上一个残差块提取到的大小为26×26的特征拼接,拼接后的特征图投入其后的多层卷积集合并预测,此即为scale2。最后,将scale2中提取的特征上采样到52×52,并将其与上上个残差块输出的特征拼接形成大小为52×52的特征图,将该特征图输入其后的卷积层集合进行第3次预测,此即为scale3。
YOLOv3模型提供3种不同尺寸的先验框,并依据不同的下采样尺度,采用 K-means方法聚类得到9种尺寸的先验框,按照大特征图小尺寸框的原则分配。YOLOv3 模型利用线性回归预测每个先验框的目标分值[14]。网络模型给每个groundtruth对象只分配1个先验框。训练时,采用误差平方和作为边框预测的损失函数。图2给出先验框与预测边界框在 图 像 上 的 关 系。预测边界框的中心坐标(bx,by)及宽度bw,高度bh 的计算过程为:
式中:σ()为sigmoid函数;tx,ty 为预测边界框的中心偏移量;Cx,Cy 分别为目标所在单元相对于图像左上角的横坐标与纵坐标;pw,ph 分 别 为 先 验 框 的宽度和高度;tw,th 分别为预测边界框的宽度和高度缩放比例。
YOLOv3模型为每个边界框采用多标签分类,使用单独的逻辑回归分类器取代softmax分类。在训练过 程 中,利 用 二 值 交 叉 熵 损 失 (Binarycrossentropy)来预测类别。
1.3 DenseNet
密连 网 络 (DenseNet)是卷积神经网络中的一种跨连模型。密连网络包括密连块和用于连接密连块的过渡层。密连网络的优势在于能够有效解决深层神经网络的梯度消失问题,并在实现特征重用的同时减少了参数[15-16]。
1个L 层的密连网络,其第l层有l个输入,且第l层的特征图将传递给其后的L -l层以实现特征重 用,网 络 共 有 L(L+1)2 个 连 接。网 络 连 接 模式为:xl = Hl([x0,x1,…xl-1]) (2)式中:xl 为 第l 层 的 输 出;Hl(·)为 批 标 准 化 层(Batchnormalizationlayer,BNLayer),ReLU 函数以及3×3卷积层构成的组合函数。
2 YOLOv3_DB_SPP模型
由于猪场养殖环境的限制,采集到的生猪样本面部存在脏污遮挡,需要深层神经网络提取更具表征性的特征用于识别。然而,由于标记检测图像的时间代价大,短期内无法获取较大的样本数来应对深层神经网络可能出现的梯度消失问题。本研究在原始 YOLOv3模型的基础上提出了 YOLOv3_DB_SPP模型。该结构首先在基础特征提取器中引入了 DenseNet中 的 DenseBlock。其 次,为 了 在 不 引入过多参数的前提下融合多尺度的信息,该结构在骨干网络之后添加改进的SPP单元,以提高检测猪群样本中占整张图片面积较小的生猪个体时的准确率。
2.1 特征提取器
YOLOv3_DB_SPP 模型的特征提取器包括Convolutional单 元 和 DenseBlock 模 块 2 部 分,结构见图3。Convolutional单元由BNLayer,7×7或3×3的卷积层,LeakyReLU 激活函数构成(图4)。其中 BN Layer用 于 自 适 应 的 重 参 数 化,起 到 避 免网络参数分布发生偏移的作用,在一定程度上能够缓解深层网络的过拟合以及梯度消失问题,且对参数初始化的影响比较小。为了更充分的保留原图信息,提 高 对 小 目 标 的 检 测 精 度,本 研 究 参 考ResNet[17]和 GoogLeNet[18]的 做 法,将 特 征 提 取 器第一个卷积层的核大小设置为7×7,并在该层实现第一次下采样,其余的4次下采样均采用3×3的卷积层实现。
改 进 的 特 征 提 取 器 使 用 DenseBlock 代 替 原来 的 Residual单 元,DenseBlock中 每 个 卷 积 层 输出 的 特 征 图 数 目 为k,k 值 的 设 置 较 残 差 模 块 会小 得 多,使 得 网 络 更 窄,在加深层次的同时参数数目不至于增长的过 多,减 少 网 络 计 算 量。本 研究 采 用 的5个 DenseBlock除 Denseblock1 之 外 其余4个 DenseBlock的 结 构 一 致,如 图 5 所 示。其中 非 线 性 转 换 Hi 由 BN Layer,1×1 的 卷 积 层,LeakyReLU 激 活 函 数 以 及 大 小 为 3×3 的 卷 积层 组 成。 本 研 究 使 用 LeakyReLU 函 数 取 代 原DenseNet网 络 中 使 用 的 ReLU 函 数,以 防 止 取 到负 值 的 参 数 被 置 0 导 致 该 神 经 元 无 法 学 习。 在3×3的卷积层之前仍然添加1×1的 卷 积 作 为 瓶颈 层,用 于 对 输 入 到 3×3 卷积层的特征进行降维,减 少 计 算 量。
为 了 不 引 入 过 多 参 数,本 研 究 使 用 的DenseBlock1中 每 个 卷 积 层 的 输 出 通 道 数 设 置 为32,且 仅 使 用 3 层 的 结 构。 经 过 DenseBlock1 对特 征 的 重 复 利 用 之 后,对 后 面 的 DenseBlock2,3,4采 取 或 加 深 层 次 或 减 小 输 出 通 道 数 的 做 法,这3个 密 连 块 的k值 分 别 为 16、16、32,且 均 包 含 8个 卷 积 层。 最 后 一 个 密 连 块 为 了 输 出 更 加 丰 富的特征信息设置了较大的通道数64,采 用4层 结构。由 于 DenseBlock 中 的 卷 积 层 较 Residual中要 多,故 将 其 叠 加 使 用 次 数 分 别 减 少 到 1、2、4、2、1。避 免 因 次 数 使 用 过 多 导 致 网 络 层 次 过 深,影 响 到 模 型 的 效 率。YOLOv3_DB_SPP 模 型 结构 见 图6。
2.2 检测器
由于猪场养殖环境分为单只圈养和多只圈养,采集多只圈养的样本时,样本图像中生猪个体多且拥挤,部分生猪距离摄像头距离较远,且有遮挡猪脸的情况发生。为了能够检测到这类小目标,本研究提出的 YOLOv3_DB_SPP模型引入了改进的SPP模块。
YOLOv3_DB_SPP模型中,先在特征提取器之后增加 ConvolutionalSet。它 包 括3组1×1和3×3的卷积层,再在该单元的后面引入改进的 SPP单元(图7)。改进的SPP单元对卷积层提取的特征图分别进行大小为7×7,5×5以及3×3的最大池化。为了保持输入输出尺寸一致,在池化操作前对特征提取器的输出做了 padding操作,并设置 池 化步长为1。
改进的 SPP单元对3种不同尺度池化的结 果进行了concat操作,多次最大池化操作在不同尺度上保留响应最强烈的特征,且利用拼接特征提取器的输出与改进的 SPP 单元的输出保留卷积层提 取的特征,再经过1个3×3卷积层的处理后,输入第一尺度检测器的1×1卷积层,实现在尺寸为13× 13的特征图上的检测操作。
相对于传统的SPP,改进的SPP单元将输入的特征图与池化后的特征图进行通道合并,使得更多的特征被捕获,提高了大目标及一般目标的识别精度。其中较小尺度的池化,用于提取远距离小目标的代表性特征。
网络的第二 个 尺 度 对 改 进 的 SPP 单 元 输 出 与骨干网络输出拼接得到的特征图进行上采样,输出特征 图 大 小 为 26×26。与 YOLOv3 模 型 不 同,YOLOv3_DB_SPP模型中密连块层数较多,如果仍然 将 上 采 样 得 到 的 26 × 26 的 特 征 图 与DenseBlock4输出的特征图进行拼接操作,输 出 的通道数将会变得很大,而在此处进行1×1降维又有可能会丢失部分特征,故在第二尺度采用第四个下采样层大小为26×26的输出与其进行拼接。再 经过 ConvolutionalSet和 3×3 卷 积 后 输 入 1×1 卷积层,完 成 第 二 次 检 测。最后一个尺度重复第二个尺度的 操 作,将第三个下采样 层的输出与第二尺度拼接后特征的上采样特征进行拼接,经 过 一系 列1×1和3×3卷积后在最后一个1×1卷积上完成预测。
3 试验数据集
试验中网络模型的输入为416像素×416像素的 RGB彩色生猪 图 像,原 数 据 集2128张,经 过 水平翻转,随 机 裁 剪,镜 像 翻 转 以 及 随 机 移 位 产 生8512张样本,训练集和测试集样本数比例约为9∶1。
试验采用的猪脸数据集包含的10个生猪个体分别编号为pig1,pig2,…,pig10。使用labelImg手动标框并 赋 标 签 名,界 面 见 图8。labelImg生 成 的XML文件包含了样本图像的尺寸以及样本框左上角和右下角的坐标等信息。
4 试验方法
本试验 采 用 的 操 作 系 统 为 Ubuntu18.04.3,CPU 为Inteli59400F2.9GHz,内 存64G,GPU为 NVIDIAGEFORCERTX2080Ti,显存32G;深度学习框架为 Tensorflow,版本号1.13.0。
试验 分 为 3 个 阶 段,分 别 训 练 15、25、40 个epoch,batch尺 寸 为32,设置最大学习率lrmax和 最小学习 率lrmin,迭代步数指迭代的 batch数 目。由于网络训练初期可能出现loss值 为 NaN 的 情 况,为了避免该问题,第一阶段的学习率设置为当前迭代步数与第 一 阶 段 总 迭 代 步 数 的 比 值 与lrmax 的 乘积,该阶段用于稳定训练,学习率逐渐增大至lrmax。第一阶段与第二阶段均冻结除去检测器外所有层的参数,利用模型在 PASCAL VOC2007数据集 上 训练得到的参数作为初始参数,仅训练检测器层,最终学习率为lrmax与lrmin的中值。最后一阶段进行全网训练,最终学习率为lrmin。
由于改进的 YOLOv3_DB_SPP模型与 YOLOv3模型在卷积层层数,参数数目等方面均有区别,因此在训练时本试验根据模型收敛实际情况使用了2组参数。针对 YOLOv3和 YOLOv3_DB模型,lrmax和lrmin分别设置为10-4和10-6,针对 YOLOv3_DB_SPP模型,lrmax和lrmin分别设置为10-5和10-7。
网络模型的损失函数分为3个部分,目标类别的损失Lcls以及置信度损失Lconf使用二值交叉熵函数,定位损失Lloc采用预测偏移量与真实偏移量之间差的平方和作为损失函数,三者之和为最终损失total_loss,具体如下:
式中:S表示将图像分成S×S的网格;B 为每个网格单元预测的边界框个数;C 为置信度值;^Ci 为预测置信度值输入Sigmoid函数后的输出;c为类别;pi(c)为包含目标的第i个单元格中目标属于类别c的概率;^pi(c)为 将 预 测 概 率 输 入 Sigmoid函 数 后的输出;Iobjij 根据第i个网格单元的第j个边界框是否有目 标 分 别 取1、0,Inoobj ij 取 值 与 之 相 反;xi、yi、wi、hi 为groundtruth 框 的 中 心 坐 标、宽 度、高 度;^xi、^yi、^wi、^hi 为预测边界框的中心坐标、宽度、高度。
5 结果与分析
在迭代20315个迭代步数后,3个模型的总损失值均收敛到0.15附近(图9),三者训练时间均为3.0~3.5h。
1 示 出 当IOU 阈 值 为 0.5,分 类 概 率 阈 值T=0.1时3种 模 型 对 猪 脸 数 据 集 的 检 测 结 果,包括平均 精 度 均 值(Meanaverageprecision,mAP)与平 均 精 度 值 (Average precision,AP)。 其 中YOLOv3_DB模型 表 示 未 加 改 进 的 SPP单 元 的 检测器。可 以 看 出,YOLOv3_DB 模 型 与 YOLOv3_DB_SPP模 型 的 mAP值 均 高 于 YOLOv3模 型,且后者较前 者 有 显 著 提 升,说 明 本 研 究 提 出 的 方 法对提高检测准确率有明显作用。YOLOv3_DB 方法在前7类样本上的 AP值虽然有所 提 升,但 对 于pig8,pig9,pig10 这种多只圈养的生猪样本,检 测结果并不够好,而 YOLOv3_DB_SPP模型不仅前7类样本的 检 测 效 果 优 于 前 2 种 模 型,且 对 多 只 圈养的样本仍有较高检测结 果,说 明 改 进 的 SPP单元对于检 测 距 离 较 远,遮挡较多的小目 标物体有所助益。
为了进一步说明模型的性能,表2示出不同分类概率阈值下3种模型检测猪脸数据集时的 mAP值以及检测速度,此时IOU 阈值仍为0.5。可以看出随着分类概率阈值的不断提升,YOLOv3模型的mAP下降十分明显,而改进的2版模型结果受影响相对较小,结果表明 YOLOv3模型的检测结果普遍是低概 率 的,一 旦 阈 值 提 升,低 概 率 结 果 被 剔 除,mAP也就随之下降;且对这10类 样 本 进 行 目 标 检测时,改进的网络模型检测每种生猪个体时的 mAP相较 于 YOLOv3 模型均有不同幅度 的提升,但YOLOv3_DB 模型与 YOLOv3_DB_SPP 模 型 的 检测速度要次于 YOLOv3模型。
图10示出 YOLOv3,YOLOv3_DB和 YOLOv3_DB_SPP这3种 模 型 对 多 只 圈 养 样 本 的 检 测 结 果。可以看出,相 对 于 YOLOv3模 型,YOLOv3_DB 模型能 够 很 好 检 测 出 右 下 角 有 阴 影 遮 挡 的 生 猪;YOLOv3_DB_SPP 相 对 于 YOLOv3 和 YOLOv3_DB模型,实现了对角落里遮挡较多的小样本的检测。
图11示出 YOLOv3,YOLOv3_DB和 YOLOv3_DB_SPP这3种模型检测多只圈养样本时产生的预测 边 界 框。 可 见,YOLOv3_DB 模 型 相 对 于YOLOv3模型,预测边界框框出的检测目标更加完整;YOLOv3_DB_SPP模型相较于前2种模型能够实现对较远距离下遮挡较多的小目标的检测,但对小样本边界框的定位不够精确。
6 结 论
本研究将 DenseBlock引入 YOLOv3模型的特征提 取 器 Darknet53得 到 检 测 模 型 YOLOv3_DB,并将其与改进的SPP单元结合,提出一种新的检测模型 YOLOv3_DB_SPP,应用到生猪识别中。当IOU阈值为0.5,分类概率阈值为0.1时,YOLOv3_DB模型检测猪脸数据集时的平均精度均值为82.76%,检测速度60帧/s,与 YOLOv3模型相比,其平均精度均值高出2.76%,速度仅相差5帧/s;YOLOv3_DB_SPP模型检测猪脸数据集时的平均精度均值为90.18%,检测速度56帧/s,相较于 YOLOv3模型,其平均精度均值高9.87%,速度慢9帧/s。试验表明本研究提出的 YOLOv3_DB_SPP模型在检测速度损失不大的情况下,提高了检测精度并实现了对远距离有遮挡小目标的检测,但预测边界框的定位精度仍有待提高。