基于光流法的鱼群摄食状态细粒度分类算法

2021-08-04 05:53徐立鸿刘世晶
农业工程学报 2021年9期
关键词:细粒度摄食鱼群

唐 宸,徐立鸿※,刘世晶

(1. 同济大学电子与信息工程学院,上海 201804;2. 中国水产科学研究院渔业机械仪器研究所,上海 200092)

0 引言

近年来,由于水产养殖产品需求量的日益增长,渔业养殖技术受到了越来越多的关注[1]。研究表明,科学、合理的饵料投放技术是确保鱼群健康生长的关键[2-3],实际养殖过程中可以通过对鱼群的摄食状态进行分类来描述其摄食行为[4-5],进而实现对鱼群摄食过程的实时监控[6-8]。此外,随着养殖规模的扩大,循环养殖系统(Recirculating Aquaculture System, RAS)逐渐成为渔业工厂化养殖的首选方案[9-10]。该系统装配了水流循环装置以确保水流的循环清洁,能够最大程度地保证水产养殖的可持续性[11]。因此,在循环养殖系统中研究鱼群的摄食状态分类算法,对在工厂化养殖中精细地描述鱼群的摄食行为、实现更加精准的投饵自动控制,具有重大意义。

目前,针对鱼群摄食状态分类算法的研究,可分为基于声学模型和基于视觉模型两类。如Juell等[12-13]通过声学传感器探测饵料的剩余情况以进一步分析鱼群当前的摄食状态;Masaló等[14]则通过声纳技术直接探测鱼群的游动状态,然而这些算法大多依赖于价格高昂的声学传感器而无法大规模应用于实际生产环境。相比之下,基于视觉模型的算法研究仅使用视频采集设备,成本相对较低,此类算法逐渐成为该领域的研究热点。Atoum等[15]和Li等[16]利用相关滤波技术跟踪单条鱼的游动情况进而分析鱼群整体的摄食状态,但这类鱼群跟踪算法较难处理鱼群遮挡情况,因此在养殖密度较大的循环养殖系统中不太适用。另外,从鱼群整体角度考虑,Duarte等[17]提出了图像处理活动系数(Image Processing Activity Index, IPAI),通过视频的帧间差值来计算鱼群的游动系数;Liu等[18]和Zhou等[19]提出了鱼群摄食聚集系数(Flocking Index of Fish Feeding Behavior, FIFFB)和鱼群摄食抢食强度(Snatch Intensity of Fish Feeding Behavior, SIFFB)2个系数来量化鱼群的聚集和抢食程度;陈彩文等[20]基于鱼群摄食图像的纹理特征来评估鱼群的摄食强度;Zhou等[21]直接采用卷积神经网络对鱼群摄食的图像进行分类;Håkon等[22]提出了双流循环神经网络(Dual Stream Recurrent Network, DSRN)

对鱼群的摄食状态进行分类,DSRN的网络结构为VGGNet[23]和ResNet[24],计算量大,在实际使用时计算机需装配GTX1080或更高等级显卡,不太适用于经济成本受限的工厂化养殖环境,而张佳林等[25]提出了变分贝叶斯卷积神经网络(Variational Auto Encoder Convolutional Neural Network, VAE-CNN)通过提取视频的变分贝叶斯特征对工厂化养殖环境的鱼群摄食状态进行分类。

光流法基于视频相邻帧计算光流位移场表征物体的运动趋势,根据该光流位移场可以计算物体的运动特征,尤其适用于分析视频内物体的运动状态[26-29],如Zhao等[27]通过光流法计算鱼群的游动特征,提出了一个动能模型对鱼群的聚集和离散程度进行建模。由于当前对鱼群摄食行为的研究大多采用深度学习方法,应用光流法的研究较为鲜见,因此本研究创新性地将光流法用于提取鱼群在视频相邻帧间的运动特征,进而对鱼群的摄食状态进行分类。

综上,大部分鱼群摄食状态分类算法都基于实验室的理想环境开展研究,导致算法在应用时往往存在诸如光照、能见度等条件限制而无法应用于复杂的工厂化养殖环境。本研究旨在提出一种适用于工厂化循环养殖系统的鱼群摄食状态分类算法,首先收集并标注了基于水下视角的鱼群摄食状态细粒度分类数据集,其次通过光流法提取视频内鱼群的帧间运动特征,然后构建一个帧间运动特征分类网络对该特征进行细粒度分类,最后基于投票策略确定视频的最终类别,该算法可为精细化描述鱼群的摄食行为,实现精准投饵自动控制提供参考。

1 材料与方法

1.1 试验材料与环境

本研究试验对象为大西洋鲑鱼(Salmo salarL.),该鱼种具有较强的抢食性,且在不同摄食阶段的行为差异较为明显,试验鱼体长约40~45 cm,平均鱼体质量2 kg左右。试验数据采集于山东烟台的东方海洋科技有限公司(中国)7号养殖车间,车间内养殖池池深1.8 m,平均半径4 m。养殖池水温保持在15 ℃左右,池内溶解氧浓度保持在10~12 mg/L,养殖密度约为7.5条/m3。

该养殖车间配备的投饵装置为箱式投饵机,投饵时该机器会沿着导轨向周围抛洒饵料。该投饵机采用定时定量的投饵方式,每日08:00、12:40、20:00进行投饵,每次投饵操作并非1次性将饵料全部投出,而是按照投饵1 min、暂停1 min的方式进行间隔投饵,该方式有利于鱼群在每次投饵时充分摄食。

1.2 视频采集系统方案

视频采集设备为水下摄像机(Hero7,GoPro,美国),视频图像分辨率为1 920×1 080像素,帧率为30 Hz。所有视频均以水下视角采集,4个摄像机以90°间隔安装在养殖池四周,通过立杆固定在距池底0.5 m的高度,靠紧池壁,保证拍摄视角水平。基于4个位置采集视频能够较好的避免单一视角下鱼群摄食行为不明显的情况。整个视频采集过程中确保视频的光照一致性,剔除光照过强、过弱的视频片段。此外,循环养殖池存在人工增氧行为,增氧过程中采集的视频片段其画面内容难以分辨,也需剔除。视频处理依靠基于Python语言的图像处理库OpenCV完成。

1.3 数据集制作

所采集原始视频长度均在2~3 min不等,首先将原始视频按照鱼群的未摄食、弱摄食和强摄食进行标注,其次在原始视频内部按照3 s的长度切分出多条样本,并对这些样本进行筛选,剔除画面被异物遮挡、充氧曝气的噪声样本,最后构成鱼群摄食状态细粒度分类数据集。

原始视频的标注参照Øverli等[30]提出的鱼群摄食状态标注规则完成,分为:1)未摄食:鱼群对周围饵料无反应,正常巡游;2)弱摄食:鱼群开始主动进食,但只对周围饵料有反应,游动范围较小;3)强摄食:鱼群开始主动抢食,游动范围明显扩大。

标注工作由5名研究人员同时展开,采取一致性原则,即至少4人对某个视频样本标注同一类别后该样本可被确定标为对应类别,否则将其记为“类别模糊样本”并直接废弃。最终,鱼群摄食状态细粒度分类数据集的单个样本长度为3 s(90帧),共包含752个视频样本,其中未摄食、弱摄食和强摄食类别分别包含311、311和130个样本,训练集样本(525个)、验证集样本(75个)、测试集样本(152个)按照7:1:2的比例划分。

考虑到基于水下视角采集视频的光照情况较差,视频画面较暗,以偏蓝绿色调为主,大部份像素点的像素值都集中在[50,100]区间内,本研究采用直方图线性变换法,拉宽像素值的分布区间,增强视频画面的亮度和对比度。

2 基于光流法的鱼群摄食状态细粒度分类算法构建

2.1 光流法提取帧间运动特征

本研究采用光流法[31]提取视频内鱼群的帧间运动特征。光流法在图像的全局范围内计算每个像素点在相邻帧间的偏移量,形成光流位移场。该光流位移场能够很好地表示循环养殖池场景中鱼群整体的运动情况。

光流法依赖于下述3个假设:1)亮度恒定,目标的像素值在相邻帧间不会发生变化;2)时间连续,物体在相邻帧间的运动十分微小;3)空间一致,领域范围内的像素点具有相同的运动趋势。基于亮度恒定假设,目标的像素值在相邻帧中保持不变,该等量关系如式(1)所示:

式中p(x,y,t)表示坐标为(x,y)的像素点在t时刻的像素值,pixels;p(x+x',y+y',t+t')表示该像素点在t+t′时刻移动到(x+x′,y+y′)位置后的像素值,pixels。对式(1)进行泰勒展开,推导出光流方程如式(2)所示:

式中px为像素值p对位置x的偏导,pixels;py为像素值p对位置y的偏导,pixels;pt为像素值p对时刻t的偏导,pixels/s;u为光流沿x方向的运动矢量,pixels/s;v为光流沿y方向的运动矢量,pixels/s。

像素点移动的幅值强度(pixels)和相角角度(°)计算如式(3)和式(4)所示:

式中Px(u,v)为光流位移场中坐标为(u,v)的像素点沿水平方向x的偏导,pixels;Py(u,v)为坐标为(u,v)的像素点沿垂直方向y的偏导,pixels;mag(u,v)为坐标为(u,v)的像素点移动的幅值强度,pixels;ang(u,v)为坐标为(u,v)的像素点移动的相角角度,(°)。本研究采用光流法计算得到视频相邻帧的光流位移场后,根据该光流位移场的水平分量px和垂直分量py计算每个位置像素点移动的幅值强度(pixels)和相角角度(°),然后将幅值强度和相角角度分别在最小值至最大值范围内均匀地划分为多个区间,并统计不同区间内的像素点数量,得到幅值强度和相角角度的区间分布信息,将该分布信息作为视频内相邻两帧的帧间运动特征。

对于鱼群摄食状态细粒度分类数据集中的单个视频样本(其包含90帧图像),采用光流法对视频内所有相邻帧计算,可得到89个帧间运动特征,由此可将鱼群摄食状态细粒度分类数据集转化为帧间运动特征细粒度分类数据集,帧间运动特征细粒度分类数据集共包含66 928个样本,其中未摄食、弱摄食和强摄食类别分别包含27 79、27 679和11 570个样本,训练集样本(46 725个)、验证集样本(6 675个)、测试集样本(13 528个)按照7:1:2的比例划分。

2.2 帧间运动特征分类网络

本研究提出了1个包含5层全连接层的帧间运动特征分类网络对光流法提取的帧间运动特征进行分类,该网络的整体结构如图1所示。

其中,网络的输入层为光流法提取的16维的帧间运动特征,输入层之后为3层隐含层,其激活函数均采用Relu激活函数,隐含层节点数分别为64、128、64,输出层有3个节点分别代表未摄食、弱摄食和强摄食3个类别,并采用Softmax分类函数预测类别概率,如式(5)所示:

式中L为对数损失值;Gi表示类别i对应的标签,其中真实类别标签为1,其余类别标签为0,该损失函数只会针对标签为1的真实类别计算对数损失值,且预测概率越小,对数损失值越大。

该网络基于帧间运动特征细粒度分类数据集训练,训练集包含46 725个帧间运动特征样本,该数据规模能够较好的满足帧间运动特征分类网络的训练需求,可减小训练过程中出现过拟合的可能性。该网络的学习率为0.001,迭代次数为2000次。

2.3 投票策略

鱼群摄食状态细粒度分类数据集的单个视频样本经过光流法计算可得到89个帧间运动特征样本,经过帧间运动特征分类网络分类可得到89个对应的分类结果(未摄食、弱摄食和强摄食),算法后续根据这89个分类结果确定视频样本的最终类别。

本研究提出了基于自定义阈值的多数投票策略,在89个帧间运动特征的分类结果中选择预测频率最高的类别作为视频样本最终的候选类别,且额外增加了阈值判断(阈值可自行设置为视频帧总数量的50%、80%或其他任意值),要求候选类别对应的预测频率大于阈值时算法才将其预测为视频的最终类别,否则将其预测为“不确定类别”。例如某个视频样本的89个帧间运动特征在未摄食、弱摄食和强摄食3个类别中分别有48、18、23个预测样本,投票阈值设置为视频帧总数量的60%,此时未摄食类别的预测频率最高为53.9%,但低于阈值60%,因此算法最终将该视频样本预测为不确定类别。

本研究基于候选类别预测频率(R, %)的计算方法如式(7)所示:

式中m为候选类别的帧间运动特征样本的数量,Tf为所有类别的帧间运动特征样本的总数量。

投票阈值和视频样本预测类别的预测频率成正比关系,投票阈值设置越高,算法最终预测类别的预测频率就越高。因此算法可以通过调整投票阈值,获得不同预测频率的预测结果。

投票阈值的设定如下:若对鱼群摄食状态的分类精准度要求较高,推荐将投票阈值设置为80%,以高预测频率尽可能地保证视频样本预测的正确性;若对鱼群摄食状态分类结果的确定性要求较高,推荐将投票阈值设置为50%,避免大量视频样本因预测频率不达标而被预测为不确定类别。

2.4 性能评价指标

本研究选取了精准度(Precision, %)、召回率(Recall, %)、F1得分(F1-score, %)、视频准确率(AccuracyV,%)和帧间运动特征准确率(AccuracyF,%)5个评价指标来评估算法的最终性能。精准度、召回率、F1得分用于评价算法在每个类别内部的分类效果,视频准确率和帧间运动特征准确率用于评价算法在类别间的综合分类效果。

精准度表示算法预测的所有属于该类别的样本中预测正确的比例,召回率表示所有真实属于该类别的样本中被算法正确预测的比例。如果仅仅关注精准度指标,则容易出现算法保守预测的情况(即算法只对极少数样本做出预测,大量正确样本被遗漏,则会出现精准度很高但召回率很低的现象);而仅仅关注召回率指标则容易出现算法暴力召回的情况(即算法将所有类别的样本全都预测为某一类别,则会出现精准度很低但召回率很高的现象)。F1得分则综合考虑了精准度和召回率之间的关系,评估算法性能时能够避免算法出现保守预测和暴力召回的情况。视频准确率用于衡量算法最终对视频样本的分类效果,其以视频样本为单位进行计算,其计算如式(8)所示:

式中Nv为预测正确的视频样本数量,Tv为所有类别的视频样本的总数量。帧间运动特征准确率用于衡量算法内部帧间运动特征分类网络的分类效果,其以帧间运动特征样本为单位进行计算,其计算如式(9)所示:

式中Nf为预测正确的帧间运动特征样本数量,Tf为所有类别的帧间运动特征样本的总数量。

3 结果与分析

3.1 帧间运动特征维度选择

本研究算法在提取视频内鱼群的帧间运动特征时首先通过光流法计算得到像素点运动的幅值强度和相角角度信息,并将幅值强度和相角角度在最小值至最大值的范围内均匀地划分为多个区间,该区间划分数量将会影响算法最终的分类效果(表1)。投票阈值设置为50%,幅值强度和相角角度的区间划分数量从4个增加至8个时,算法的帧间运动特征准确率和视频准确率均有明显提升,分别达94.6%和98.7%;当区间划分数量从8个增加至16个时,算法的帧间运动特征准确率和视频准确率增幅很小,分别为0.3个百分点和0.5个百分点,说明增加区间划分数量所带来的效果提升已趋于饱和。考虑到区间划分越多,特征复杂度越高,本研究算法最终采用幅值强度和相角角度的8个区间划分方案,在保证分类效果的前提下,尽可能地降低帧间运动特征的维度。

表1 不同区间数量下本研究算法的帧间运动特征准确率和视频准确率 Table 1 Inter-frame motion feature accuracy and video accuracy of algorithm proposed in this study under different numbers of ranges

3.2 本研究算法试验结果分析

本研究算法在投票阈值设置为50%时未摄食、弱摄食和强摄食类别的的精准度、召回率和F1得分如表2所示,3个类别的F1得分分别为99.5%、97.6%和95.2%,均在95%以上,说明该算法在50%投票阈值情况下能够很好地完成鱼群摄食状态的细粒度分类任务。

表2 投票阈值设置为50%时本研究算法的性能 Table 2 Performances of algorithm proposed in this study when voting threshold is 50%

3.3 其他摄食状态分类算法试验结果对比

为验证鱼群摄食状态细粒度分类任务中时序信息的重要性,本研究与以下3类相关算法进行了对比试验:1)基于纹理特征的算法,参考陈彩文等[20]通过图像的纹理信息表征鱼群的摄食强度,将本研究中通过光流法提取的帧间运动特征替换为基于灰度共生矩阵提取的单帧纹理特征。该算法首先通过灰度共生矩阵提取视频单帧的纹理特征,并训练分类神经网络对该纹理特征进行分类,最后通过投票策略预测视频样本的最终类别。投票阈值设置为50%时该算法在未摄食、弱摄食和强摄食类别的F1得分分别为90.3%、89.6%和7.3%(表3),此时该算法的视频准确率为80.9%(表4),细粒度分类效果较差;2)单帧卷积神经网络算法,参考Zhou等[21]直接采用卷积神经网络对视频内部所有的单帧图像进行分类。该算法直接训练卷积神经网络对视频内部所有的单帧图像进行分类,后续同样通过投票策略预测视频样本的最终类别。投票阈值设置为50%时该算法在未摄食、弱摄食和强摄食类别的F1得分分别为91.6%、86.8%和91.1%(表3),此时该算法的视频准确率为89.4%;当投票阈值提高至80%时该算法的视频准确率大幅下降至62.5%,对比本研究算法91.4%的视频准确率,两者差距明显(表4);3)基于水下视角的变分贝叶斯卷积神经网络分类算法[25](Variational Auto Encoder Convolutional Neural Network, VAE-CNN)。本研究修改了VAE-CNN算法的网络结构,将其从原先的鱼群摄食状态二分类结构扩展到鱼群摄食状态的细粒度分类结构,该算法将视频内所有单帧图像的变分贝叶斯特征进行合并作为该视频样本的最终特征,并对该特征进行分类。投票阈值设置为50%时未摄食、弱摄食和强摄食类别的F1得分分别为63.4%、64.1%和0(表3)。VAE-CNN算法直接对视频样本进行分类,无法引入投票策略,因此针对不同投票阈值计算视频准确率的评估方法不适用于该算法。此外,本研究算法的视频准确率随着投票阈值的升高而呈现下降趋势。投票阈值越高,算法预测视频类别时对候选类别预测频率的要求就越高,更多的视频可能因为候选类别的预测频率未达到投票阈值而被预测为不确定类别,即被正确预测的视频样本数减少。投票阈值从为50%提高至80%时,本研究算法的视频准确率呈现下降趋势,从98.7%降至91.4%(表4)。

表3 投票阈值设置为50%时不同算法在3种类别的F1得分 Table 3 F1-score of different algorithms in 3 categories when voting threshold is 50%

表4 不同投票阈值下不同算法的视频准确率 Table 4 Video accuracy of different algorithms under different voting thresholds

分析以上对比试验结果,得到以下结论:

1)基于纹理特征的算法无法对强摄食类别进行分类,说明视频单帧图像的纹理特征所包含的信息无法解决鱼群强、弱摄食状态的细粒度分类问题。本研究算法通过光流法提取帧间运动特征的创新方法更加有效。

2)基于单帧CNN的算法在提高投票阈值时视频准确率下降明显,说明该算法在视频内部对很多帧分类错误,无法准确地学习鱼群强、弱摄食状态之间的差异。本研究算法通过光流法提取帧间运动特征的创新方法更加有效。

3)VAE-CNN算法的对比试验表明,在鱼群摄食状态细粒度分类任务上,直接合并VAE特征所包含的信息不足以区分鱼群强、弱摄食状态之间的差异。考虑到VAE-CNN算法直接基于视频样本训练,本研究中的鱼群摄食状态细粒度分类数据集仅包含752个视频样本,数据集规模过小也会影响VAE-CNN算法的学习能力。这也说明了本研究算法能够很好地解决数据集规模过小的问题,通过光流法提取视频的帧间运动特征将视频样本转化为帧间运动特征样本,隐式的扩大了训练数据的规模。

4 结 论

本研究面向工厂化循环养殖池环境采集视频,制作了一个鱼群摄食状态的细粒度分类数据集,并提出了一种基于光流法特征提取的鱼群摄食状态细粒度分类算法,同时对其效果进行了验证。验证结果表明,该算法通过对鱼群摄食状态的细粒度分类能够更精细地描述鱼群的摄食行为,且有以下特点:

1)本研究算法在投票阈值设置为50%时,视频准确率达98.7%;在投票阈值提高至80%时,视频准确率为91.4%。在不同的投票阈值设置下,算法的视频准确率始终在90.0%以上,说明该算法在工厂化循环养殖池场景中的分类鲁棒性较强。

2)较之于基于纹理特征的算法和单帧卷积神经网络算法对视频内的单帧图像提取特征,本研究算法提取视频相邻帧的帧间运动特征在鱼群摄食状态的细粒度分类任务上更加有效。

3)较之于变分贝叶斯卷积神经网络分类算法(Variational Auto Encoder Convolutional Neural Network, VAE-CNN),本研究算法通过光流法提取视频内部的帧间运动特征,将视频样本转化为帧间运动特征样本,隐式的扩大了数据集规模,解决了视频数据集规模过小不利于算法训练的问题。

本研究根据工厂化循环养殖池中鱼群的巡游特点针对性的提出了基于光流法特征提取的鱼群摄食状态细粒度分类算法,然而在非工厂化的野外养殖环境中鱼群的巡游特点可能有所不同,本研究的下一步工作将面向野外养殖环境进一步完善当前算法。

猜你喜欢
细粒度摄食鱼群
“贵蚕1号”“华康2号”对人工饲料摄食效果评价
中华大蟾蜍幼蟾的摄食节律研究※
两种不同投喂策略对加州鲈摄食量和生长的影响
“川山×蜀水”小蚕人工饲料摄食性改良研究进展
人工鱼群算法在雷达探测器射频端电路设计中的应用
在线评论情感分析研究综述
基于型号装备?角色的IETM访问控制研究
基于web粒度可配的编辑锁设计
鱼群漩涡
朱梦琪??《鱼群》