基于深度学习的常见市场渔获检测分类算法研究

2022-12-28 11:20李克祥王国庆郑国华潘海华周昌智
中国新技术新产品 2022年19期
关键词:残差次数准确率

李克祥 王国庆 郑国华 潘海华 周昌智

(浙江索思科技有限公司,浙江 温州 325000)

1 关键技术

1.1 迁移学习

传统机器学习方法往往是针对特定任务创建数据训练模型的,这也导致模型之间互相孤立、毫无联系,训练习得的内容并没有延续下去。迁移学习是将在一个场景中获得的知识经验应用到新的场景中,以达到辅助学习的目的,迁移学习使模型之间可以传递学习内容,避免花费大量时间和资源重新标记数据、训练模型[1]。迁移学习利用其他模型已经学习的知识来提高新模型的性能,节约模型训练的计算资源,当数据稀缺或获取成本高昂时,能够利用更少的数据获得稳定的模型,提高模型泛化能力和模型训练效率。

1.2 预训练网络模型

预训练模型(pre-trained model)一般是在规模足够大的数据集下进行训练而产生的,具备很多的参数量以及复杂的网络结构,是为解决类似问题而创造的。对当前大部分的图像识别处理预训练模型来说,训练的原始数据集一般可以通用,预训练网络学到的特征空间层次结构和权重不需要过多修改就可以应用到特定的新问题上,也就是所谓的微调(fine tune),是“迁移学习”的一种方式。预训练模型使深度学习对处理小数据问题更有效,这也是深度学习的一个优势[2]。

1.3 ResNet网络模型

深度学习随着网络层数的加深,理论上模型的表达能力会逐渐提高,但是卷积神经网络CNN到达一定的深度后,分类性能不再提高,反而导致网络收敛变缓,准确率随之下降,即使增大数据集解决过拟合问题,也不会有所改善。ResNet网络的提出解决了这个问题,其引入残差网络的设计,采用shortcut的方式跳过输入数据的卷积层操作,直接把输入x加到输出中,克服了网络深度加深对模型训练梯度下降的不良影响。

残差模块的结构设计如图1所示。F(X)为X经过权重层输出的结果,即指的是残差,而右侧曲线Xidentity表示X本身跳过了权重层直接与F(X)进行叠加,relu表示网络激活函数。使用这种快捷径的结构能够在进行反向传播的同时保证无衰减地传递信号,因此即使增加网络层数,学习效率也很高。

图1 ResNet残差模块结构图

ResNet网络模型中最常用的是ResNet50,网络结构如图2所示,包括49个卷积层和1个全连接层。其中,第一阶段不包括残差块,CONV表示对输入进行卷积操作,Batch Norm表示正则化处理,ReLU表示激活函数,MAXPOOL表示进行最大池化计算。第二阶段~第五阶段包括残差块结构,图块CONV-BLOCK不会改变残差块的尺寸,只用于添加残差块的维度,而图块IDBLOCK则不改变残差块的维度。在ResNet50网络结构中,残差块都有3层卷积,那网络总共有1+3×(3+4+6+3)=49个卷积层,加上最后的全连接层,总共是50层,这也是ResNet50名称的由来[3]。通过使用16个残差块的堆叠构建了深度达到50层的卷积神经网络,再经过AvgPOOL平均池化层输出特征向量、Flatten平面化图层降维处理,最后由全连接层FC对这个特征向量进行计算并输出类别概率。

图2 ResNet50网络模型图

2 试验设计

2.1 数据集构建

现有公开的数据集资源很匮乏,特定领域的数据集资源更稀缺。网上收集的现成鱼类数据集数量和丰富性难以满足模型训练的需要,通过人工拍照、网络爬虫方式获取相关图片,爬虫通过Python脚本实现,用关键词搜索的方式在电商平台、百度图片爬取对应的图片。试验发现,爬取图片会出现图名不对应的情况,需要改变方式,从百科中更有针对性地获取数据,经过人工审查、筛选和判断归集图片,并采用尺度变换和内容变换的方式对数据集进行增强处理。

采用Python脚本实现图像批处理功能,对存在尺度不一、格式不定等问题的鱼类图像进行统一数据处理,完成对917个样本进行图像采集和归纳的任务,并对每张图片进行编号排目,归置到对应的30种类别文件目录中,用于下一步的模型训练。

2.2 模型训练参数调整

2.2.1 学习率

学习率是模型训练时可控、可调整的超参数之一,其作用是控制梯度下降的迭代步长。如果学习率过大,就会造成损失梯度下降速度较快的问题,模型loss无法收敛;反之,学习率过小会导致模型收敛速度变慢,甚至会陷入局部最优的情况。最理想的结果是权衡两者变化,损失梯度收敛较快又能下降到比较小的位置。在ResNet网络的迁移学习中,通过冻结底层学习率调整新的全连接层学习率,经过多次试验选择最优学习率。默认的学习率设置都比较小,推荐参数一般为0.000 1,在该范围扩大或缩小数量级进行测试,以选择最优值。

2.2.2 批尺寸

批尺寸是指单次训练所选取样本的数量,其大小影响模型的优化程度和速度。在合理范围内增大批尺寸能提高内存利用率,减少单次训练中批数据的迭代次数,梯度确定的下降方向就越准,但是盲目增大批尺寸会导致单次训练时间增加,参数的修正变得缓慢,超过某个临界点还会导致模型泛化能力下降,而在该临界点之下,模型性能随批尺寸变化而变化的程度通常没有学习率明显。考虑该试验为CPU环境,设置批尺寸小于64为宜。

2.2.3 迭代次数

将所有样本数据送入网络完成1次前向计算以及反向传播的过程称为一个迭代,在实际模型训练时,所有数据迭代训练1次是不够的,往往需要经过多次反复的迭代才能拟合收敛。神经网络模型的权重结构会随着迭代次数的增加而逐步更新,loss曲线从不拟合状态逐渐进入优化拟合状态,如果迭代次数继续增加,那么最终模型将进入过拟合状态。但迭代次数的选择没有一个确切的答案,不同的数据样本有不同的迭代次数,一般数据集的多样化程度越高,迭代次数也应该越多,合适的迭代次数能使模型训练达到更好的效果。综合考虑样本集数量(1 917个)以及样本种类(30种),迭代10次就可以大致收敛。

2.3 网络构建

基于神经网络框架平台PyTorch搭建ResNet网络模型,根据ResNet中的残差学习模块的不同分别构建BasicBlock(nn.Module)类和Bottleneck(nn.Module)类,逐层实现ResNet34、ResNet50以及ResNet101网络结构,例如ResNet50网络根据图2的结构模型逐层搭建,并通过宏定义的方式进行网络模型封装,以方便模型训练时对该自定义模块进行调用。

3 试验过程

3.1 试验环境

该试验使用基于Python语言的深度学习神经网络框架平台PyTorch,硬件环境为Intel(R) Core(TM) i5-4210M CPU @ 2.60GHz,Windows 1 064位家庭版21H2,编译软件为PyCharm2020社区版,基础配置Anaconda 3,创建Python3.7版本虚拟环境,并在该解释器下安装了Open CV、TensorBoardX等依赖库,以满足试验的需要。

3.2 数据集处理及训练参数

对基础数据集进行拆分,按照9∶1的比例分为训练集和验证集,级目录结构保持与基础数据集一致,以方便后续模型的训练。其中,训练集1 739张,验证集178张,并且采取相同的预处理操作,保证验证和测试结果的准确性。

神经网络中超参数的取值对模型的性能有很大的影响,试验中分类识别模型训练所使用的优化器是Adam,综合考虑硬件训练环境资源,设定学习率为固定的值0.000 1,批尺寸的数值设定为16,即每次批量读取16张图片,以交叉熵误差函数(Cross Entropy Loss)作为损失函数,在不占用太大计算资源的情况下,使模型可以快速收敛。

3.3 模型训练

采用迁移学习机制,试验前下载3个预训练模型(ResNet34、ResNet50以及ResNet101),并分别构建ResNet34、ResNet50以及ResNet101网络模型,以相同的市场渔获数据集进行训练,训练周期设置为10,即1次试验迭代10轮,通过TensorBoardX绘制训练损失loss曲线以及验证的准确率与loss曲线,观察模型收敛情况,展示网络模型在训练集和验证集上的识别效果。

ResNet中的残差学习模块有2种形式:1) Basicblock。用于层数较少的模型。2) Bottleneck。目的是减少参数量和计算量。ResNet50网络就是模型分界,层数小于50的使用Basicblock,其余的网络模型使用Bottleneck[4]。而ResNet50与ResNet101相比,唯一的不同在于网络conv4_x,ResNet50有6个残差模块(block),而ResNet101有23个block[5]。

训练loss曲线如图3所示。由图3可知,ResNet34网络较为简单,收敛速度快,在第三轮训练时基本就趋于稳定了,而另外2个网络模型则在第四轮之后才达到相近的loss值。从训练时间来看,3个ResNet网络模型训练时长分别为2.2 h、3.5 h和5.7 h,由此可知,网络结构和卷积网络层数的增加对模型训练花费的时间有较大的影响。

图3 训练损失loss曲线

验证loss曲线以及准确率如图4所示。首先,对照准确率acc曲线,在训练10轮后,3个模型的准确率acc均达到0.9以上,ResNet34训练过程中曲线波动较大,而另外2个模型训练过程较平稳。其次,对照验证loss曲线,三者曲线loss值均降至0.4以下,对比之下,ResNet34的loss已趋于稳定,而另外2个模型的loss值仍有下降的趋势,ResNet101网络表现得更明显。

图4 验证loss曲线以及准确率

对模型训练的学习率lr进行微调,将其设置为0.000 05和0.000 30,并没有推荐参数0.000 10的效果好。另外,调整迭代次数批处理数量的大小对计算机的资源占用率影响较大,对模型的训练效果影响较小,这些现象也符合试验前的分析。

4 结语

该试验以市场常见的30种渔获物为对象,横向对比ResNet网络模型的训练效果,综合上述数据表现,整体准确率和loss收敛差别不大,都达到了较好的效果,在一般的使用场景下,ResNet50网络模型可以符合使用需求。下一步打算丰富当前的渔获数据集,增加模型训练的迭代次数,并将算法模型投入实际生产环境使用,以验证模型的精度与稳定性。

猜你喜欢
残差次数准确率
基于双向GRU与残差拟合的车辆跟驰建模
机场航站楼年雷击次数计算
2020年,我国汽车召回次数同比减少10.8%,召回数量同比增长3.9%
不同序列磁共振成像诊断脊柱损伤的临床准确率比较探讨
一类无界算子的二次数值域和谱
基于残差学习的自适应无人机目标跟踪算法
基于递归残差网络的图像超分辨率重建
高速公路车牌识别标识站准确率验证法
平稳自相关过程的残差累积和控制图