基于轻量型 S3D 算法的鱼类摄食强度识别系统设计与试验

2023-06-25 05:28冯双星王丁弘
渔业现代化 2023年3期
关键词:运算量鱼群摄食

冯双星,王丁弘,潘 良,周 超

(1 北京市农林科学院信息技术研究中心,北京 100097;2 国家农业信息化工程技术研究中心,北京 100097;3 农产品质量安全追溯技术及应用国家工程研究中心,北京 100097)

金鳟(Oncorhynchusaguabonita)是虹鳟的亚种,在其养殖过程中,饲料支出约占总成本的40%以上[1-2]。相关研究表明,对鱼类摄食强度进行实时精确的量化,并用于指导投喂,可有效减少过投喂的发生,进而提高饲料利用率[3-5]。

机器视觉技术因其成本低、无损的特点[6-8],在水产养殖中得到了广泛应用[9-10]。但传统的机器学习算法过于依赖手工提取的特征,应用受限。目前,深度学习[11]凭借其特征自动学习和处理大量数据能力,已广泛应用于鱼类目标识别、水质预测、生物量估测、行为量化等多个方面[12-15]。其中,鱼类摄食强度的评估也是其应用的重要领域之一[16-17]。涂雪滢等[18]基于深度学习,识别了鲈鱼、鲫鱼、锦鲤等5种典型养殖鱼类,识别精度为95.47%。提出了基于LeNet5框架的摄食强度评估系统,分级准确率达90%。朱明等[19]基于轻量级MobileNetV3-Small网络,对鲈鱼的摄食状态进行了分类。

鱼群摄食是一个连续、快速的过程,实时检测鱼群摄食强度有助于实现饲料按需投喂。单帧图像虽然可以通过鱼群的空间分布提取其聚散等空间信息,但在提取鱼群行为的时间序列信息时受限。摄食视频可提供鱼群时间和空间的运动变化信息。Måløy等[20]设计了一种基于光流和RGB图像的双流循环神经网络,识别鲑鱼摄食和非摄食状态的准确率可达81.4%。张佳林等[21]基于卷积神经网络,实现了鱼群摄食和非摄食状态的分类,准确率为89%。

基于深度学习的视频动作识别算法起始于2014年的DeepVideo[22]。之后,双流法[23]被提出。3D CNN可实现较好效果,C3D[24]网络已被用于行为识别、场景识别等领域。为了进一步降低三维网络训练的复杂性,在保持3D CNN实时性的同时,又对其3D内核分解为2D 空间卷积和1D时间卷积两个单独的操作,进一步提出了R2+1D算法[25]和S3D[26]算法。目前摄食强度分级主要基于视频流中识别动作,对鱼群摄食视频进行强度分级,难以精细反映鱼群摄食活动变化。S3D算法兼顾更优的准确率和更少的参数运算量,可用于摄食强度检测。

基于此,本研究结合时序动作检测方法,使用S3D算法,利用滑窗在视频流中精确定位鱼群摄食强度等级,更精细地反映鱼群摄食状态。同时开发了鱼类摄食强度识别系统,可为开发智能的投饲系统提供有用的输入信息。

1 材料与方法

1.1 试验对象与系统

本试验在北京市农林科学院信息技术研究中心的水产精准养殖实验室进行,如图1所示。系统共有6个养殖池,每个养殖池直径1 m,高度1.2 m,养殖水深1 m。以金鳟为试验对象,平均规格520±10 g,密度9.1 kg/m3,溶氧质量浓度10~12 mg/L,养殖温度为(16±0.4)℃。每天投喂2次,投喂时间分别为10:00和17:00。为避免影响其正常习性,6个养殖池的金鳟均已经过两个月的适应性养殖。投喂装置为循环养殖池上方的投饲机(图1),其可以调节抛洒范围,以便在水面抛洒饲料时更加均匀。在饲料投放同时,开始采集鱼群摄食的视频图像。

图1 试验装置图Fig.1 Experimental device

本研究采集视频的方案为水面拍摄,摄像机型号为GOPRO HERO8,如图1所示,摄像机放置于养殖池水面上方50 cm高度,为保证视野宽阔,在画面中尽可能多地拍摄内容,镜头设置为“宽”(16~34 mm)。

1.2 数据集建立

本研究基于相关文献[18,27]和专家经验,将鱼群摄食强度分为 “None” “Weak” “Medium” “Strong” 四级(图2)。其中,“None”表示鱼类无摄食欲望,对饲料没有反应,此时出现大量残余饲料;“Weak”表示鱼只摄食落在前面的饲料,出现少量残饲;“Medium”表示鱼类主动游向饲料并摄食; “Strong”表示鱼类剧烈抢食,如图2。

图2 鱼群摄食强度数据集划分Fig.2 Data set division of fish feeding intensity

将采集到的鱼类摄食视频编号,为了保证视频包含完整的行为信息,视频样本的时长为5~9 s,共采集400段不同行为视频,共154 259帧。其中,“Strong”强度93段视频,29 040帧;“Medium”强度107段视频,34 618帧;“Weak”强度共有98段视频,38 702帧;“None”强度共有102段视频,51 899帧。取总数的20%作为测试集,其余80%数据按照8∶2的比例划分训练集和验证集。

1.3 S3D摄食强度检测模型

鱼群摄食具有时间较短、切换快的特点,而S3D算法能更好地提取短期鱼群摄食的时空特征。S3D算法主要是I3D网络作为基准,使用Inception模块和深度可分离卷积。创造性地提出了3D时空Sep-Inc模块,并与池化层和3D卷积层交替搭建成新的S3D网络。其有效增加了算法的表征能力,减少了运算量,其算法流程如图3所示。

图3 S3D算法及投喂控制系统框架图Fig.3 Frame diagram of S3D algorithm and feeding control system

1.4 3D时空Sep-Inc模块

S3D模型中的3D时空Sep-Inc模块,基于Inception模块和深度可分离卷积改进而来,其将输出的不同尺寸特征进行融合,其中深度可分离卷积核尺寸设定为3。为准确和快速检测鱼群摄食动作,使用小卷积核,避免使用大卷积核增加模型运算量,进而减慢摄食强度检测。3D时空Sep-Inc模块如图4所示。

图4 3D时空Sep-Inc模块Fig.4 3D spatiotemporal Sep-Inc module

1.5 训练环境

本试验主机操作系统Windows10,CPU为Intel Core i7-9700K,GPU为 Nvidia GeForce RTX 2080 Ti(11 GB)。采用框架 PyTorch 1.7.1,加速环境为CUDA 10.1和CUDNN 7.6.5。

2 结果与分析

2.1 算法的训练结果及性能比较

训练模型时,考虑到GPU内存,本研究将batch size设置为16,迭代次数设置为200,学习率为0.01,通过SGD优化器对网络参数进行优化。训练使用16帧RGB剪辑作为输入,输入数据大小为3通道×16帧×112像素×112像素。

本算法训练过程的损失曲线如图5所示。

图5 训练损失曲线Fig.5 Training loss curve

可以看出,在25次迭代之前,损失迅速减小,然后随着迭代次数的增加,损失缓慢向下振荡,趋于稳定。最终损失值稳定在约0.5。损失值的逐渐减小和稳定意味着模型逐渐收敛,训练结果达到预期,证明了模型的鲁棒性,适合于养殖工厂中鱼群的摄食强度识别。最终,算法识别结果如表1所示。

表1 不同模型试验结果比较Tab.1 Comparison of different models

其中,准确率(accuracy)是所有鱼群摄食强度正确率的平均值,值越高,算法的识别正确率越高。Parameters表示神经网络模型的参数,GFLOPs表示每秒10亿次浮点运算的次数,这两个参数能综合反应模型的运算量,参数越小,模型越轻量化。S3D算法的准确率达到92.68%,与C3D[24]和R2+1D[25]算法相比较,本研究中算法的准确率为92.68%,比C3D提高了9.75%,比R2+1D提高了14.63%。S3D比C3D的 Parameters参数下降88.27%,比R2+1D 的Parameters参数下降71.41%。S3D比C3D 的GFLOPs下降87.60%,比R2+1D 的GFLOPs下降88.5%。从表1这3个参数对S3D、C3D和R2+1D算法的运算性能进行综合分对比判断,本研究的算法不仅在鱼群摄食强度分级的准确率最优,而且相比于C3D[24]和R2+1D[25]算法,模型运算量大幅度下降,运算速度快,具有高度轻量化的特点。其通过对影响视频分类的主要模块进行设计与构建,实现网络运算速度和识别准确性之间的平衡[26],说明本算法在量化时间短、切换快的鱼群摄食时空特征上有显著优势。

2.2 算法的运行效率分析

为评估算法的运行效率,将分割后的鱼群摄食视频进行测试,从而获得相应的摄食强度标签。用FPS(Frames Per Second)和ANFR(Average number of frames recognized per second)指标[28]进行评价。FPS指每秒传输帧数,用于保存、显示动态视频的信息数量。ANFR表示模型每秒内识别帧的平均数量,可综合反应算法的实时性和硬件平台性能。本试验中,在2080Ti NVIDIA GPU配置下,输入视频FPS为60 Hz,ANFR为17 f/s。每次预测使用16个视频帧,输出17个行为标签,即对鱼群摄食进行17次预测。从上述指标可以看出,FPS大于ANFR,因为基于Opencv读取视频帧之后输入模型,降低了时间效率,但是识别效果依然良好。结果表明,将S3D算法应用于养殖场中鱼群摄食行为的快速准确识别是可行的,其在保持较高准确率的前提下,仍然可以提高算法的效率,兼顾了速度和准确性[23],为鱼群摄食行为的智能感知奠定了基础信息,并有利于改善养殖的效率。

3 系统实现与结果讨论

3.1 识别系统实现

为更好实现鱼群摄食强度检测,本研究基于轻量型S3D模型,应用时序动作检测,使用PyQt5开发了鱼群摄食强度实时检测系统,实时预测鱼群摄食强度。如图6所示。

图6 基于滑动窗口实时预测摄食强度Fig.6 Real time prediction of feeding intensity based on sliding window

基于滑动窗口采样[29]在视频中定位动作和预测未分割的视频流,以获得相应的标签。长视频行为测试时,如使用帧数过多,预测的视频帧中可能同时包含两种动作帧,易引起模型误判。如图7所示,点击打开按钮,检测开始,系统对当前的鱼群摄食视频流进行分析,提供其当前的摄食强度标签和置信度,并能提供相应的投喂指令建议。当前鱼群处于Strong摄食强度状态,置信度为0.93,提供的投喂指令为加大投喂。同时,摄食强度曲线也能反映鱼群的总体摄食强度的时间状态。

图7 鱼类摄食强度识别系统Fig.7 Fish feeding intensity identification system

为了减少滑窗经过不同动作交界处误判的概率,本算法预测帧数设为16,在保证预测精度的基础上,减小误判率。图8是应用滑动窗口机制对鱼群实时摄食视频流的摄食强度识别结果。横坐标代表视频长度,视频长度70 s,一共2 100帧,逐帧识别,总共有2 100个识别结果。纵坐标1~4代表None、Weak、Medium和Strong四级强度。图8为算法的识别结果和真实参考值。

图8 算法实时检测结果Fig.8 Real time detection

从图8可以看出,Medium和Weak误判的概率高于Strong和None,Strong和None识别效果更好,这也与以前的研究保持一致[30]。而且Strong和Medium的时间短于Weak和None,但是在Strong和Medium两个时间段,鱼群摄食大部分饲料颗粒。在Weak和None切换时,因为Weak和None交界处的相似性,易造成误判。参考测试集的视频数量,取19段鱼群摄食视频,根据模型识别的正确时间长度与总时间的比值,计算平均识别正确率。总视频长度为1 330 s,正确时间长度为1 059.67 s,平均识别正确率为79.67%。总体上仍能实现对大部分时间段摄食强度的准确识别,为鱼群的智能投喂奠定了良好的基础。

3.2 识别系统讨论

综上,本系统通过嵌入深度学习模型,相比于传统机器学习的方法,在智能性上有较大提高。与挪威Måløy等[20]的研究相比,后者只能识别摄食与非摄食两种状态,本研究在此基础上,将其拓展为“Strong”“Medium”“Weak” 和 “None”4种摄食强度状态,其优点在于,4种状态可为智能的投饲机输入更灵活和丰富的控制指令,以更好地为鱼类按需投喂提供决策依据。与智能可调速的投饲机配合,可以控制饲料投放速度,在鱼类摄食强度减弱时,可有效避免饲料浪费的产生。此外,还可以有效避免因鱼群摄食和非摄食状态临界状态转换时带来的误判。

与前期利用支持向量机、前向神经网络等传统机器学习方法[17]相比,本研究基于深度学习,无需提取复杂的手工特征,对于复杂的场景,如可变的光照条件等情况下,本算法可以自动学习图像中蕴含的摄食相关的深层特征[11],有效避免传统机器学习方法性能对特征选取的依赖[31],手工特征等图像处理步骤的增加,不仅延长计算时间,还增加误判的风险。Zhou等[30]的研究,也证实了本研究算法思路的先进性,其非线性逼近能力弥补了传统机器学习算法的不足[32],具有较强的鲁棒性和较高的准确性,可以取得较好的摄食强度分级性能。

与C3D、R2+1D等方法相比,本算法在保持最优准确率的前提下,所用参数量至少减少70%。也进一步说明,S3D算法提出的3D时空Sep-Inc模块,可以较好提取时序特征,保持了高精度。并且其改进后的1×3×3的卷积,减少了运算量,在部署到实际现场时,其轻量化的优点更为突出[26]。

4 结论

为实现按鱼类需求投喂,本研究提出了基于轻量型S3D算法的鱼类摄食强度识别算法,可有效识别“Strong” “Medium” “Weak” 和 “None” 四种鱼群摄食强度,准确率为92.68%;比C3D、R2+1D分别提高了9.75%、14.63%;同时,Parameters参数分别下降88.27% 和71.41%,GFLOPs分别下降87.6%和88.5%。在保持较高鱼群摄食强度分级准确率的前提下,减少了参数和运算量。此外,本研究还以金鳟为例,开发了金鳟鱼的摄食强度识别系统,可为鱼类投喂提供理论依据。在未来的工作中,将在当前鱼群摄食识别的基础上,进一步扩展到更多的鱼类品种,更好地为指导鱼类投喂奠定基础。

猜你喜欢
运算量鱼群摄食
两种不同投喂策略对加州鲈摄食量和生长的影响
轻则摄食减慢,重则大量死鱼!加州鲈养殖亚硝酸盐超标,预防处理如何做好?
用平面几何知识解平面解析几何题
笼养灰胸竹鸡入冬前日摄食量规律的研究
减少运算量的途径
鱼群漩涡
让抛物线动起来吧,为运算量“瘦身”
基于改进鱼群优化支持向量机的短期风电功率预测
基于人工鱼群算法的光伏阵列多峰MPPT控制策略
多子群并行人工鱼群算法的改进研究