基于YOLOv5 算法对斑马鱼幼鱼的检测研究
2022-07-29周福欢柴鑫雨
周福欢,柴鑫雨
(上海理工大学 健康科学与工程学院,上海 200093)
0 引言
斑马鱼幼鱼作为典型模型动物之一,其视觉引导行为,如:视动反射、视运动反应、逃避反应等;精神疾病引起的行为,如:药物成瘾和戒断、攻击性、恐惧和焦虑等得到了广泛的研究。视频检测是研究幼鱼行为的基础步骤。但是,幼鱼体积小,身体边缘透明,与培养皿边缘对比度低,运动模型处于近似睡眠或爆发状态,使得识别难度高。传统的目标检测算法主要依靠目标物体与背景之间的差异来进行识别,比如:物体的灰度、颜色、光流、边缘、纹理和梯度等特征。但幼鱼姿态变化、不连续运动、遮挡、光照强度等环境的干扰使得检测精度低。近年来,由于卷积神经网络对图像的强大表征能力,也在一定程度上推动了目标检测算法的较为快速发展。
目前,基于深度学习的检测算法一般可分为2类。一类是基于候选框的两阶段检测算法,具有较高的定位和识别精度,如R-CNN、Fast R-CNN、Faster R-CNN,Mask R-CNN;另一类是基于回归的单阶段检测算法,具有较高的检测速度,如YOLO 系列算法和SSD 算法。其中,YOLO 算法已经成为多目标检测领域的研究热点,现已广泛应用于各个行业。YOLO 可以将候选框定位、特征提取和物体分类整合到一个骨干网络中,实现端到端的检测。以此为基点,YOLOv2、YOLOv3、YOLOv4 和YOLOv5也紧随其后相继问世,其中YOLOv5 具有轻量级架构,检测精度上与YOLOv4 相当,但速度优于YOLOv4。基于此,本文将使用基于YOLOv5 网络对斑马鱼幼鱼进行检测。
1 YOLOv5 网络模型介绍
YOLOv5 算法根据网络宽度与深度分为4 种模型,依次为 YOLOv5s、YOLOv5m、YOLOv5x 和YOLOv5l,精度逐渐提高,但检测速度逐渐降低。本文选取YOLOv5m 检测斑马鱼幼鱼,在有限的设备条件下获取最好的检测精度与检测速度。
YOLOv5 网络结构可分为4 个部分,即:输入(Input)、骨干网络(Backbone)、颈部(Neck)和预测层(Prediction),如图1 所示。输入端对图片进行预处理,主要有自适应图片缩放、自适应锚框计算,并使用Mosaic 来扩充数据集;骨干网络对输入图像提取特征信息;颈部的作用是融合从骨干网部分提取的特征信息,发送到预测层部分;预测层由3 个尺度的特征图组成,分别用于检测小、中、大目标。例如,当输入分辨率为608×608 的图像时,将检测到分辨率超过8×8 的小目标、分辨率超过16×16 的中等目标、以及分辨率超过32×32 的大目标。故使用K-means++聚类算法获取数据集的锚框(Anchor boxes),得出幼鱼的头部矩形框大小在8~20 像素之间。因此,本文对YOLOv5 删除大尺度的预测层部分和其相应的颈部组件,保留小、中尺度预测层部分,得到YOLOv5m-sm 模型,去掉大、中尺度预测层,保留小尺度预测层,得到YOLOv5m-s 模型。
图1 YOLOv5 结构图Fig.1 The structure of YOLOv5 model
2 实验
2.1 实验平台
本文算法的实验平台配置,见表1。
表1 实验平台配置Tab.1 Experimental platform configuration
2.2 数据集
将幼鱼放在培养皿中,培养皿底部放置一个LED 灯光源,手机以一定高度在室内光线下垂直拍摄,具体信息见表2。拍摄的图像含有杂质、排泄物、波纹等来提高数据集的多样性。
表2 幼鱼数据集Tab.2 The dataset of larvae
本文使用DarkLabel 标注软件以1 fps 将视频进行分帧,选取幼鱼眼部进行标记,由此就得到了Zebradata 数据集。每张图像标记后得到一个.txt 文件,主要包括目标类别、识别难度、矩形框的左上角与右下角坐标信息。
为了增强数据多样性,提高模型训练时的泛化能力,使用了数据扩充方法,如:Mosaic、Mixup 和Cutout。其中,Mosaic 是随机选取4 张图片,按照随机缩放、随机裁剪和随机排布的方式进行拼接。Mixup 是将多张图像像素融合形成一张新的图像。Cutout 是利用一个任意大小的矩形框随机遮挡原图像上的任意区域,模拟目标遮挡情况。
2.3 实验流程
基于YOLOv5 的斑马鱼幼鱼多目标检测过程如图2 所示。这里,将Zebradata 数据集的图像大小归一化为640×640,批量大小设为2,初始学习率设为0.003 2,训练50 世代(epochs),可使损失函数收敛。训练好的模型可对幼鱼自动识别与定位,显示出目标类别与置信度。
图2 基于YOLOv5 算法的幼鱼多目标检测过程Fig.2 Multi-target detection process for zebrafish larvae based on YOLOv5
2.4 评价准则
为了评估YOLO 模型对幼鱼的检测能力,本文采用准确率()、召回率()和平均精度()指标对模型进行评估。对此可做研究分述如下。
(1)准确率与召回率。计算公式具体如下:
其中,T表示目标被正确预测出来的数量;F表示目标被误测出来的数量、即误检; F表示目标未被预测出来的数量、即漏检。
(2)平均精度(Average Precision,):用于评估一个类别训练的模型,主要是通过计算模型的PR 曲线下的面积,此时需用到的数学公式为:
其中,为精确率,为召回率。
3 实验结果与分析
使用160 张含有23 条幼鱼的图像作为测试集,批量大小为4,置信度阈值为0.5,交并比()阈值为0.9,图像输入大小归一化为736×736。为了体现本文算法性能的优越性,对YOLOv3m、YOLOv5s、YOLOv5m-s、YOLOv5m-sm 和YOLOv5m 模型进行精度测试实验。实验结果见表3。
从表3 中可以看出,YOLOv3 网络检测精度不及YOLOv5 网络,只含有小尺度预测层的YOLOv5m-s模型性能表现最好,相对于YOLOv5m,准确度提高19.71%,回收率提高了10.34%,平均精度上提高13.29%,推理速度(Inference)提高13.92%。当幼鱼处在培养皿边缘时,与背景对比度很低的情况下,YOLOv5m-s 模型也可以很好地检测到幼鱼。
表3 检测结果Tab.3 The experimental detection results
4 结束语
对于幼鱼单类别小目标检测,本文通过对YOLOv5m 删减不同尺度的预测层,得到YOLOv5ms 和YOLOv5-sm 模型。为了验证模型精度,对YOLOv3m、YOLOv5s、YOLOv5m-s、YOLOv5-sm 和YOLOv5m 网络进行识别精度评估,结果表明YOLOv5m-s 模型性能最优,准确度为0.923,召回率为0.886,平均精度为0.912,实现了幼鱼检测的高精度和高速度,满足实时检测需求。