APP下载

基于目标检测及边缘支持的鱼类图像分割方法

2023-03-07覃学标黄冬梅杜艳玲徐慧芳

农业机械学报 2023年1期
关键词:鱼类边缘像素

覃学标 黄冬梅,2 宋 巍 贺 琪 杜艳玲 徐慧芳

(1.上海海洋大学信息学院, 上海 201306; 2.上海电力大学电子与信息工程学院, 上海 200090)

0 引言

在渔业养殖过程中,需要定期地对鱼的生长状况进行监测[1-2]。受成本、安全和对生物体毁坏等因素的影响,依靠人工观测以获得鱼类的体长等生物学信息比较困难[3]。利用各种远程可操控的潜水设备替代人工观测是良好的解决方案,通过这些设备可以大范围地收集鱼类在水下活动的图像[4]。但要获得所需要的生物学信息,仍然需要进行大量的人工处理[5]。近几年,基于机器学习的图像处理方法获得较快发展,如何利用这些方法对潜水设备收集到的鱼类图像进行处理,是当前研究的热点[6-11]。

将鱼类目标从图像背景中分割出来是提取鱼类生物学信息的关键步骤,其分割精度决定信息提取的准确程度。国内外诸多学者开展鱼类图像分割相关的研究,王帅等[12]提出改进K-means聚类算法的金鱼阴影去除及图像分割方法,用于分析鱼类的行为。马兆敏等[13]使用阈值方法对金鱼图像进行分割。ZHOU等[14]依据边缘拐角和骨架形状对重叠的鱼类图像进行分割。虽然上述鱼类图像分割方法获得了较高精度,但其原理是对整幅图像进行分割,无法对多条鱼逐一进行分割。

基于深度学习的图像分割方法可以对多目标进行分割,目前被广泛地应用于各类图像分割任务中。RONNERBERGER等[15]提出的U-Net模型在医学图像上获得较好的分割效果。CHEN等[16]提出的DeepLabv3模型广泛应用于遥感图像的分割[17]。对于鱼类图像,YU等[18]基于Mask R-CNN开展鱼类图像分割研究,用于测量鱼的体长。SALEH等[19]基于ResNet-50开展鱼类图像分割研究。LARADJI等[20]通过在ResNet-38网络上添加类同分支的方式,进一步提高鱼类图像的分割精度。ISLAM等[21]基于VGG-16网络开展鱼类图像分割研究。基于深度学习的鱼类图像分割方法获得了较高的精度,但当前的研究主要是基于海中采集的数据开展实验,海中水下图像比较清晰,鱼的体型较小,较少出现相互遮挡以及截断的情况。在养殖条件下,水下图像比较模糊,由于鱼的体型较大,存在较多相互遮挡以及截断的情况。运用深度学习方法对这类图像进行分割时,易出现较多错检漏检的问题,分割精度较低。

本文提出基于目标检测及边缘支持的鱼类图像分割方法。应用目标检测的方法将鱼类目标界定在一定区域内,将整幅图像分割转化为区域分割,避免整幅图像分割过程中因遮挡或截断带来的噪声干扰;运用边缘支持对区域内的鱼类图像进行分割,以提高模型对模糊水下鱼类图像的适用性。

1 数据集构建与标注

使用GoPro RX0水下摄像机在室外水深1 m的养殖池中采集数据。采集时间为2020年5—6月13:00—16:00,图像分辨率为1 920像素×1 080像素,帧速率为50 f/s。受浑浊水体的影响,所采集的图像较模糊。将视频每10帧输出1幅图像,从中取出具有一条或多条完整轮廓的鱼图像,得到3 595幅鱼类图像。按比例7∶3将数据划分为训练集 2 517 幅图像和测试集1 078幅图像。使用标注软件LabelImg将图像中的鱼、鱼头和鱼尾标注为“fish”、“head”和“tail”。其中“fish”定义为肉眼可辨别为鱼的目标,截断或遮挡的目标均进行标注;“head”定义为肉眼可辨别为鱼头的目标,范围从鱼嘴到鱼颚的部分,大部分截断或遮挡的目标不进行标注;“tail”定义为肉眼可辨别为鱼尾的目标,范围从鱼肛门到尾鳍夹角的部分,大部分截断或遮挡的目标不进行标注,如图1所示。

图1 LabelImg标注效果Fig.1 LabelImg annotation

训练图像分割模型需要目标的掩码作为标注信息,使用Labelme对数据集进一步进行标注。标注对象为图中具有完整轮廓的“fish”类目标,大部分截断或遮挡的目标不进行标注。数据经过清洗,图中至少有一条具有完整轮廓的鱼,如出现多条具有完整轮廓的鱼,均对其进行标注,如图2所示。

图2 Labelme标注效果Fig.2 Labelme annotation

2 图像分割方法

本文方法分为目标检测和图像分割两部分。首先对鱼、鱼头和鱼尾进行目标检测,依据检测结果对图像中具有完整轮廓的鱼类目标进行提取,然后在此区域内运用边缘支持的方法对图像中的鱼进行分割,框架如图3所示。

图3 图像处理方法框架Fig.3 Framework of proposed method

2.1 基于目标检测的完整轮廓提取

提取鱼类的生物学信息要求目标具有完整性,需要对遮挡或截断的鱼进行排除。另外,在图像存在较多截断或遮挡的情况下,对图像中所有的目标进行分割会产生较多的噪声点,影响分割精度。基于以上两点,本文方法应用目标检测方法对图像中具有完整轮廓的鱼类目标进行提取,并对不完整的目标进行排除。

YOLO模型在鱼类检测上取得了较好的检测效果,本文选择其作为鱼类目标检测器[22-24]。假设一条完整的鱼类目标应该具有可检测到的鱼头和鱼尾,据此分别对图像中的鱼、鱼头和鱼尾进行检测,记输出的检测框为Bfish、Bhead和Btail。若结果中包含遮挡或截断的目标,需要对其进行排除。当鱼头和鱼尾的检测结果相较于鱼的检测结果误差小于图像长宽之和的1%时,判定这条鱼可检测到鱼头和鱼尾,是一条完整的鱼类目标。计算公式为

(1)

式中W——图像长H——图像宽

xfish——鱼检测框Bfish左上角x坐标

yfish——鱼检测框Bfish左上角y坐标

wfish——鱼检测框Bfish长

hfish——鱼检测框Bfish宽

xhead——鱼检测框Bhead左上角x坐标

yhead——鱼检测框Bhead左上角y坐标

whead——鱼检测框Bhead长

hhead——鱼检测框Bhead宽

xtail——鱼检测框Btail左上角x坐标

ytail——鱼检测框Btail左上角y坐标

wtail——鱼检测框Btail长

htail——鱼检测框Btail宽

2.2 边缘支持的鱼类图像分割

运用式(1)对图像中具有完整轮廓的鱼进行提取后,在此区域内对其进行分割。养殖条件下的水下鱼类图像比较模糊,其边缘特征不明显,输入基于深度学习的图像分割网络后,特征图经过多层卷积和池化操作后,边缘信息在深层网络中逐步减弱。为了加强边缘信息在深层网络中传递,本文方法将模糊水下图像的边缘特征值加入主干网络中,使得边缘特征在深层网络中得到补充,增强模型对模糊水下图像的适用性。本文方法使用ResNet作为主干网络,输入图像尺寸为513像素×513像素,模型输出结果的鱼体目标表示为255,背景表示为0。为了增加边缘信息的传递,在主干网络中添加2个边缘支持分支,如图4所示。

图4 边缘支持结构示意图Fig.4 Diagram of edge support structure

2.2.1边缘矩阵的计算

边缘支持需要边缘矩阵作为输入,计算边缘的算子主要有Roberts、Sobel、Prewitt、Canny等[25-27],其中,Canny算子具有较强的边缘提取能力,本文将其作为边缘矩阵的求解方法。其原理是通过计算像素点在不同方向上的梯度,设定双阈值获得边缘点。假定输入1幅图像,通过Canny算子获得边缘矩阵为

C=Canny(Iinput)

(2)

式中Iinput——输入图像C——边缘矩阵将边缘矩阵加入主干网络中表示为

Li=Li-1+C(i=1,2,…)

(3)

式中Li——前馈网络中第i层输出矩阵

为了便于计算,将双阈值中的最小边缘阈值设为0,通过调节最大边缘阈值c获得边缘矩阵。

2.2.2归一化

边缘矩阵用0和255表示,0代表背景,255代表边缘点。一般情况下,输入图像使用255进行归一化,而边缘点的值为255,如使用255对其进行归一化将导致该点权重过大。为了避免对参数值产生过大影响,本文使用255的n倍数对边缘点进行归一化。

3 实验与结果分析

在第1节建立的数据集上开展实验。为验证本文方法的效果,分别与Mask R-CNN模型、U-Net模型和DeepLabv3模型进行对比。通过消融实验对本文方法中起重要作用的参数进行分析,以确定较优参数组合。

3.1 训练设置

为了测试本文方法在不同主干网络上的分割效果,分别使用VGG-16、ResNet-50和ResNet-101作为主干网络进行实验。VGG-16网络的训练参数为:输入尺寸224像素×224像素,激活函数为Sigmoid,损失函数为CrossEntropyLoss,学习率0.001,Batch size设为8,训练300轮。ResNet-50和ResNet-101模型的训练参数设为:输入尺寸513像素×513像素,激活函数为ReLU,损失函数为CrossEntropyLoss,学习率0.001,Batch size设为4,训练300轮。边缘支持的参数设置为2个支持分支,边缘最大阈值c=12,归一化倍数n=3。目标检测模型YOLO的训练参数为:输入尺寸640像素×640像素,激活函数为Mish,损失函数为FocalLoss,学习率0.001,Batch size设为32,训练20 000轮。对比模型Mask R-CNN[18]、U-Net[15]和DeepLabv3[16]的训练参数,使用文献中的预设值,训练至收敛。实验环境为处理器AMD 1950X 3.4 GHz,内存 32 GB,显卡GTX-1080Ti,操作系统Ubuntu 16.04,编程语言Python 3.7。

3.2 评价指标

使用像素交并比(IOU)和单幅图像分割时间对模型的分割效果进行评价。

3.3 实验结果

表1为Mask R-CNN、U-Net、DeepLabv3模型和本文方法在VGG-16、ResNet-50、ResNet-101主干网络上分割结果对比。从表1可以看出,本文方法在ResNet-101上的像素交并比为85.66%,VGG-16和ResNet-50的像素交并比也高于其他对比模型,说明本文方法可以较好地对鱼类图像进行分割。由于VGG-16的网络层数较少,其分割精度较低;ResNet-101的网络较深,其分割精度较高,说明主干网络越深模型的分割精度越高。在运行时间上,Mask R-CNN模型单幅图像分割时间较长,达2 s;U-Net模型耗时最短,为0.19 s;本文方法+ResNet-101的分割时间为0.61 s,长于U-Net模型,但短于Mask R-CNN模型。运行时间虽然不能满足实时分割的生产需求,但可以应用于静态鱼类图像的分割。

表1 实验结果对比Tab.1 Comparison of experimental results

图5为Mask R-CNN、U-Net、DeepLabv3模型和本文方法在VGG-16、ResNet-50、ResNet-101主干网络上分割结果图。从图5可以看出,Mask R-CNN模型由于其用于分割计算的分支网络层数较少,出现较多错检漏检的像素点。U-Net和DeepLabv3模型对整幅图像进行分割,亦出现较多错检漏检的像素点。本文方法在网络层数较少的VGG-16上分割结果较差,存在一定程度的错检漏检点。基于ResNet-101的模型分割结果较好,得到接近于标签的高精度分割效果。

图5 不同模型分割结果对比Fig.5 Comparison of segmentation results of different models

3.4 结果分析

3.4.1消融实验

表2为目标检测和边缘支持消融实验结果。从表2可以看出,在未加入目标检测和边缘支持前,模型的像素交并比仅为69.81%。加入目标检测之后,像素交并比为83.62%,提升13.81个百分点,说明基于目标检测的完整轮廓提取对提高模型的分割精度具有较明显提升作用。加入边缘支持后,像素交并比进一步提高2.04个百分点至85.66%,说明边缘支持对模型的分割精度也具有提升作用。在运行时间上,加入目标检测和边缘支持后,单幅图像分割时间增加了0.18 s,未产生较大影响。

表2 消融实验结果Tab.2 Ablation experiment

3.4.2边缘支持分支的数量

表3为边缘阈值c=12、归一化倍数n=3时,不同边缘支持分支数量的分割精度。从表3可以看出,不添加边缘支持分支时,IOU为83.62%;添加2个边缘支持分支后,IOU提高至85.66%;而当支持分支数量为4时,IOU出现了下降。说明边缘支持分支数量对模型的分割精度具有直接影响,在本文数据中,添加边缘支持分支数量为2时,分割效果较好。

表3 不同边缘支持分支数量的交并比Tab.3 IOU of different edge supported

3.4.3边缘阈值

图6为边缘阈值c分别为6、9、12、15时的特征图。从图6可以看出,不同阈值所产生的边缘量差距较大。当c=6时,干扰点较多;而当c=15时,边缘点较少。

图6 不同边缘阈值的特征图Fig.6 Characteristic diagrams of different thresholds

表4为边缘支持分支数量为2、归一化倍数n=3时,不同边缘阈值的交并比。从表4可以看出,当c=6时,IOU较低;而当c=15时,IOU降低。说明边缘阈值对模型的分割精度产生较大影响,较小或较大的阈值均达不到提高分割精度的目的。在本文数据中,边缘阈值c=12时,分割效果较好。

表4 不同边缘阈值的交并比Tab.4 IOU of different thresholds

3.4.4边缘矩阵的归一化倍数

表5为边缘支持分支数量为2、边缘阈值c=12时,不同归一化倍数n的交并比。从表5可以看出,当n=1时,IOU较低;当n=3时,IOU较高;而当n=5时,IOU出现了下降。说明边缘矩阵的归一化倍数对模型的分割精度同样具有影响,边缘矩阵的归一化倍数较低时所起作用较小,较高则达不到提高精度的目的。在本文数据中,归一化倍数n=3时,分割效果较好。

表5 不同归一化倍数的交并比Tab.5 IOU of different multiples

4 讨论

与U-Net和DeepLabv3模型相比,本文方法的交并比分别高11.36个百分点和9.45个百分点。U-Net和DeepLabv3模型是以整幅图像作为对象进行分割,受遮挡或截断情况的影响,其分割结果中出现较多错检漏检的像素点。本文应用目标检测的方法对图像中具有完整轮廓的鱼类目标进行提取,避免整幅图像分割因遮挡或截断带来的噪声干扰。消融实验结果也显示,与未加入目标检测算法相比,应用目标检测后模型的分割精度提高13.81个百分点,说明应用目标检测可以有效地提高模型的分割效果。

本文方法类似于Mask R-CNN模型的分割原理,分割过程分为目标检测和图像分割两部分。Mask R-CNN使用Faster R-CNN作为检测器,确定目标后外接一个分支对区域内的目标进行分割,但其分割分支的网络层数较小,分割精度较低。本文方法使用YOLO模型作为检测器,检测精度较高。在分割部分,运用边缘支持的深层网络,使得本文方法的分割精度比Mask R-CNN模型的分割精度高14.24个百分点。

为了加强边缘信息在深层网络中传递,本文方法将边缘的特征值加入主干网络中,使得模型对模糊水下图像具有适用性,分割精度进一步提高2.04个百分点。边缘支持分支的数量、边缘阈值以及边缘矩阵的归一化倍数等参数的选择对模型的分割精度有影响。边缘支持分支数量为2、边缘阈值c=12、归一化倍数n=3为最优参数组合。

5 结论

(1)提出基于目标检测及边缘支持的鱼类图像分割方法,交并比为85.66%,获得较好的分割效果,可以应用于静态鱼类图像的分割。

(2)应用目标检测方法对图像中具有完整轮廓的鱼进行提取,可以避免整幅图像分割因遮挡或截断带来的噪声干扰。与未加入目标检测算法相比,分割精度提高13.81个百分点。

(3)应用边缘支持的鱼类图像分割方法使得模型对较模糊水下图像具有较好适用性,模型的分割精度在应用目标检测的基础上进一步提高2.04个百分点。

猜你喜欢

鱼类边缘像素
基于MFCC和ResNet的鱼类行为识别
像素前线之“幻影”2000
鱼类运动会
“像素”仙人掌
ÉVOLUTIONDIGAE Style de vie tactile
一张图看懂边缘计算
高像素不是全部
在边缘寻找自我
走在边缘
边缘艺术