冯裕清,杨信廷,徐大明,罗 娜,陈 枫,孙传恒
(1 上海海洋大学信息学院,上海 201306;2 国家农业信息化工程技术研究中心,北京 100097;3 农产品质量安全追溯技术及应用国家工程实验室,北京 100097)
中华绒螯蟹(Eriocheirsinensis)又称河蟹、大闸蟹,是中国主要的水产经济作物之一[1]。2019年全国大闸蟹的年产量达77万t,总产值逾越600亿元[2]。江苏是大闸蟹养殖主产地,产量约占全国的50%,特别是阳澄湖大闸蟹,因其青壳白肚、肉味鲜美而闻名[3],在餐饮市场中,单只阳澄湖大闸蟹的价格在几十乃至上百不等。大闸蟹作为水产商品商标注册过百件,品牌多、品牌杂[4],并且物流销售渠道错综复杂,目前溯源方式难以快捷有效地追溯到个体,对消费者食用安全以及供应商品牌价值建立产生消极影响。
目前,企业的个体河蟹溯源方法主要是在河蟹蟹钳上绑缚印有条形码或者二维码等标识的蟹扣[5],消费者通过移动终端设备扫描这些验证标识获取河蟹的产品信息[6],这种方式对于个体河蟹,追溯成本高、环保性差,而且蟹扣存在被不良商家回收利用的情况。一些研究表明,河蟹形态的生长会受到周围环境影响,其背甲易留下形态各异的沟壑、凸起、纹理等特征[7-8],因此可以从河蟹本身的形态特征进行个体验证[9]。张炳良等[10]提出了一种基于河蟹背甲图像与二维码结合的双重防伪验证模型,从河蟹本身的生物信息进行验证,但是识别过程依靠人眼比对判断,普通消费者并不具备甄别能力。邰伟鹏等[11]使用SURF和FLANN算法[12]提取并匹配河蟹背甲的特征点,实现了河蟹个体的识别,结果表明河蟹个体背甲特征存在一定的差异性,但是该方法易受到光照不均、噪声等外部条件的干扰,算法的鲁棒性较差。因此,对于河蟹的个体识别需要一种更便捷、更可靠的认证方式。
深度学习作为人工智能领域的一个重要分支,在计算机视觉、图像处理和自然语言处理等方面展现出最先进的性能[13],它将原始数据作为算法的输入,通过算法分层抽象将数据一层一层地抽象成为自身任务所需要的特征表示,整个过程不需要人为干预[14]。近年来深度学习在人脸识别[15]、医学图像[16]识别和其他领域识别[17]取得了一系列的研究成果[18],尤其是以AlexNet、VGGNet、GoogLeNet、ResNet以及DenseNet[19]等为代表的卷积神经网络模型。一些研究表明,卷积神经网络已经应用于奶牛个体[20-21]和猪个体的识别[22],对于奶牛个体躯干图像识别准确率达到90%以上,而对于猪脸个体的识别准确率达到99%。河蟹背甲形态各异,并且布满沟壑和纹理等生物性状,相比于人脸特征易被表情因素影响,蟹背坚实牢固,除非受到毁灭性打击,不然背甲形态不会轻易变化,因此,蟹背特征是一种潜在的进行河蟹个体自动识别的依据。
本研究提出了一种金字塔卷积结构的深度残差网络精准识别单体河蟹的方法,使用金字塔卷积层替换普通卷积层,可以在不增加额外计算成本的同时获取多尺度的图像细节信息,模型训练使用迁移学习方式弥补数据样本量不足以及训练时间较长的问题,最终实现河蟹的精准个体识别。研究结果为河蟹个体身份快捷可靠识别提供参考。
河蟹图像数据取自阳澄湖成年大闸蟹共100只,蟹壳尺寸在60~70 mm之间。为了数据能够较好地适应真实的光照条件,数据采集场所选取在明亮的室内(日光灯或自然光),由于拍摄时间包含早晨、中午、傍晚以及夜晚,因此采集的图像需要适应各种复杂光照条件。采集过程中,选用MER-2000-5GC/P工业相机采集数据,图像分辨率为5 496×3 672,相机固定在支架台上,每只河蟹采集5张蟹背甲上方不同角度图像,图像需要展现清晰完整的河蟹背甲轮廓、沟壑、凸起和纹理,河蟹背甲特征细节如图1所示。
图1 蟹背特征示例图
个体河蟹样本数量过少会影响模型训练效果,为了提取每只个体河蟹可辨识的生物特征,需要对原始数据进行预处理和扩充。河蟹数据集制作流程如图2所示。
图2 河蟹数据集制作流程
通过对每张预处理后的图像进行旋转变换(30°、45°、75°、90°)、翻转变换(垂直翻转、水平翻转)、亮度调节、高斯扰动、椒盐噪音和色彩抖动,数据集最终扩充至52 000张图像并将图像格式统一转化为JPG格式,有效增强了数据集的多样性,降低训练阶段过拟合的可能性,使得最终模型的泛化能力得到提高。数据集按照6∶2∶2划分训练集、验证集和测试集。
金字塔卷积结构包含n个不同类型卷积核的卷积层[23],在不增加计算成本和参数数目的前提下,不同尺度卷积核处理输入的特征图,不同类型核具有不同的空间分辨率和深度,以捕获更加详细的信息,较小字段的内核可以专注细节信息,增加内核大小可以提供上下文之间更可靠的信息[24]。随着空间大小的增加,卷积核的深度从第一级减少到第n级别,最后形成多个卷积分支。特征映射通过不同的卷积分支进行分组卷积,最后将不同分支的特征进行级联拼接形成一个融合特征。金字塔卷积结构如图3所示。
图3 金字塔卷积结构图
(1)
(2)
与标准卷积相比,金字塔卷积层可以在没有额外成本的情况下扩大核的接受域,它也适用于并行的不同类型的内核,具有不同的空间分辨率和深度。因此,金字塔卷积层会在多个尺度上解析输入,以捕获更详细的信息。这些不同类型的金字塔卷积层内核带来互补信息,有助于提高网络的识别性能。具有较小接受域的内核可以专注于细节,捕获关于较小的对象和/或部分对象的信息,同时增加内核的大小可以提供更可靠的细节。
Resnet是一种集图像、自动化编码和分类为一体的深度卷积神经网络,它通过使用特征传输来防止梯度消失。本研究使用基于金字塔卷积结构的残差瓶颈块代替Resnet的残差块,将标准残差块中的3×3的卷积核替换成不同内核级别(9×9、7×7、5×5、3×3)的金字塔卷积层,其中内核的深度在每个级别都有所不同。迁移学习[25]是运用之前模型已存有的知识对不同领域问题进行求解的一种新的机器学习方法,两领域共享的因素越多,则迁移学习的效果越好。于是,对于新的网络模型只需要训练很少的训练轮次就可以完成新的分类识别任务[26]。一些研究表明,迁移学习方法[27]已经在农作物病虫害图像识别中取得较好的效果[28-29]。迁移学习的实现方法有样本迁移、特征迁移、模型迁移和关系迁移,本研究选择模型迁移,相比于全新学习,模型迁移只需要对预训练好的网络参数进行微调,有助于网络模型训练快速收敛。由于ImageNet数据集样本量大,存在许多通用的边缘、纹理特征,因此可以将ImageNet中学习到的通用特征迁移到河蟹个体识别模型中。
基于迁移学习的模型训练架构如图4所示。首先,将大型数据集ImageNet输入进金字塔卷积结构的Resnet进行预训练,随后从预训练中得出的权重作为当前河蟹个体识别网络的初始参数。
图4 基于迁移学习和金字塔卷积层的模型训练架构
使用金字塔卷积层的深度残差网络结构图如图5所示。
网络结构主要由卷积层、金字塔瓶颈构建块、全局池化层、全连接层和Dropout层构成。其中Conv1由一个卷积核为7×7的卷积层构成,金字塔卷积块(PyConvBlock)从具有4个核大小级别开始,每个层的卷积深度随着级特征映射的空间减少而减少,其中G的数量代表该卷积层分组卷积的数目。在最后一个阶段,网络最终只有一个层次的金字塔卷积块,变为普通卷积层。每个卷积层之间使用批归一化(Bach-Normalization,BN)和修正线性单元(Rectified Linear Unit,ReLU)激活函数,批归一化通过固定减小均方差值来帮助网络加快训练速度,并且有助于梯度传播,在反向传播时帮助更新参数,帮助网络克服梯度消失的问题。
图5右侧展示了pyconvresnet34和pyconvresnet50的卷积模块的参数,其中pyconvresnet34的每个金字塔瓶颈构建块比pyconvresnet50的减少一个1×1的降维卷积块。
图5 基于金字塔卷积结构的深度残差网络
由于河蟹数据集是人工构建,数据样本构成存在缺陷,因此在全连接层后加入Dropout层[30],在一次循环中先随机选择神经层中的一些单元并将其临时隐藏,然后进行该次循环中神经网络的训练和优化过程。在下一次循环中,又将隐藏另外一些神经元,如此直至训练结束。可以比较有效地缓解过拟合的发生,在一定程度上达到正则化的效果。
学习器选择随机梯度下降(stochastic gradient descent,SGD)的梯度下降方式进行算法优化,本模型使用牛顿动量梯度下降(Nesterov Momentum)进行参数更新,该方法可以加快模型收敛速度,抑制梯度下降时上下震荡,预防模型陷入局部最优解。学习率衰减量为1e-6,Momentum参数更新动量设为0.9。
损失值计算选择交叉熵函数,交叉熵刻画的是实际输出概率与期望输出概率的距离,加快模型收敛速度。损失函数见式 (3) :
(3)
式中:l为损失值,p为期望分类输出,q为实际分类输出,x为批次输入样本。
使用Softmax函数,又称归一化指数函数,返回与待识别河蟹相似概率最大的类别作为预测结果,如果预测结果与真实结果相同,则判定识别正确,反之,则识别错误。Softmax函数公式如下(4):
(4)
式中:Zi为第i个节点的输出值,C为分类类别个数。
深度学习一直被称为“黑盒子”,内部算法不可见,但CNN却能够被可视化,通常,一幅图像经过卷积神经网络提取特征后,随着层次的深入,可视化结果会变得越来越模糊和抽象。图6为河蟹图像经过4个残差瓶颈块处理后的特征图。从第一阶段到第四阶段可以看出,随着网络深度的增加,从提取边缘轮廓特征到提取纹理特征,模型提取的特征越来越抽象,通过残差瓶颈块1和2卷积后,特征图可以提取蟹背边缘轮廓的特征信息,经过第3个残差瓶颈块卷积后,特征图可以提取蟹背沟壑和凸起的特征信息,最后由第4个残差瓶颈块可以提取出蟹背的纹理特征信息。综上,蟹背识别模型通过层层卷积提取的特征具有一定深度和区别性,实现了河蟹单体的准确识别。
图6 卷积层特征可视化
2.4试验平台
2.4.1 试验平台搭建
模型训练与测试均在Pytorch1.7框架下完成。硬件环境:处理器使用英特尔Core i7-9700K @ 3.60GHz 八核,内存32GB,显卡使用Nvidia GeForce RTX 2080Ti。
软件环境:CUDA Toolkit 11.2,CUDNN V11.2;Python 3.6.0;Pytorch 1.8.0;Windows 10 64bit操作系统。
模型训练时的batchsize为128,训练集和验证集输入图像采用均值分别为0.485、0.456、0.406,标准差分别为0.229、0.224、0.225的参数进行标准化变换,统一输入进网络的图像尺寸并转化为3通道的灰度图,模型初始学习率设置为0.05。
2.4.2 模型测试标准
为了分析河蟹识别模型性能,测试集的10 400张图像采用准确率(accuracy)作为评价标准,当且仅当图像编号识别与真实个体相同时,才判定识别正确,例如1号河蟹的40号图像识别为1号,则判定识别正确,否则识别错误。其中,对于识别模型的混淆矩阵中的变量定义如下(5):
(5)
式中:A为准确率,Ncorrect为预测正确数目,Ntotal为总数目。
如图7所示,其中PC(Pyramid convolution)表示金字塔卷积层,输入不同尺寸的数据集图像会大程度地影响识别结果,大尺寸的图像数据集可以提取更多更深层图像特征。当输入图像尺寸224×224时,模型识别的各项指标大幅提升,模型验证集准确率为99.87%,相比图像输入尺寸为128×128时的验证集准确率提高4.76%,并且识别时间只增加了0.067 s。如下表1,展示了不同图像输入尺寸下的模型性能,图像尺寸为224的模型准确率比较图像尺寸128的模型提升了10.19%,而识别时间无明显变化。
图7 两种尺寸的输入图像的模型训练对比
表1 两种尺寸的输入图像的模型性能比较
将预处理后的河蟹图像数据集作为输入分别输入进使用普通卷积层结构和改进后基于金字塔卷积结构的深度残差网络,其中网络深度选取34层、50层和101层。图8为不同卷积结构和不同网络深度的模型训练对比图,可以看出,所有模型的损失值呈现下降趋势,准确率都呈现上升趋势并在99%的时候趋于收敛,以虚线为标记的改进后的网络模型验证集准确率和损失函数值的收敛速度要略快于使用普通卷积层的网络模型。
图8 不同卷积结构和不同网络深度的模型训练过程对比
随着模型网络深度的增加,50层和101层的训练效果明显好于深度为34层网络的训练效果,而改进后的34层的深度残差网络、50层和101层网络模型各个模型的准确率曲线和损失值曲线几乎一致,因此,当使用改进后的34层的网络模型或者使用模型网络深度达到50层时,模型已经具备较强的学习能力。
表2为不同卷积结构和不同网络深度下模型性能对比。
表2 不同模型的性能比较
结果表明使用金字塔卷积结构的深度残差网络在网络深度为34层时提升较为明显,此时模型准确率提高了5.49%;当网络深度达到50层时,模型的准确率提高了1.3%;而当网络深度为101层时,模型的准确率不再提高,此时网络深度的加深不再影响模型的性能。
使用金字塔卷积层的Resnet50网络作为迁移学习的基准模型,图9展示了使用迁移学习时的网络模型在训练过程中准确率和损失值的变化曲线。借助迁移学习的优点,模型在早期就获得了较高的精度,并且损失值在较小的迭代轮次下趋于收敛。从图9可以看出,全新学习的训练曲线需要近20轮的迭代学习才能收敛,而使用迁移学习方法后,只需要5轮的迭代学习即可收敛,时间花费不足半小时,模型验证集准确率和损失函数曲线收敛速度提升近4倍。此时,使用迁移学习方式模型的准确率为98.88%,模型保持较高的识别准确率。
图9 不同学习方式下模型训练对比
提出了一种基于金字塔卷积层的河蟹个体识别算法,数据集采集模拟真实复杂的光照条件,通过3个模型性能指标比较模型的识别性能。改进后的网络比改进前的网络有显著提升,当网络深度为34层和50层时,模型的准确率分别提升了5.49%、1.3%;而当网络深度为101时,模型性能不再有提升,说明模型已经有足够的学习能力,不需要运算量更大、层次更深的网络进行训练学习。比较了金字塔卷积结构的50层的残差网络在不同输入图像尺寸下的模型性能,当输入尺寸为224×224时,模型性能全面高于输入尺寸为128×128时的模型性能,而识别时间只增加了0.067 s,满足了个体河蟹识别快捷性和实时性的要求。比较了全新学习和迁移学习的模型性能,迁移学习方法在样本量较少的情况下明显减少了模型训练时间,同时保持98.88%的高准确率。本研究下一步将探索通过深度网络模型提取出个体河蟹的背甲特征向量,并将个体特征向量作为河蟹厂商的关键追溯依据,最终形成一个完整的河蟹个体追溯系统。
□