基于深度学习SSDResNet50V1FPN 模型在马鲛鱼检测中的应用
2022-11-08韦钧乐侯明鑫
韦钧乐 侯明鑫 ,2*
(1.广东海洋大学机械与动力工程学院,广东 湛江 524088;2.南方海洋科学与工程广东省实验室,广东 湛江 524013)
0 引言
2021 年4 月25 日,《广东省国民经济和社会发展第十四个五年规划和二〇三五年远景目标纲要》正式发布,其中一项指出,打造世界级海洋创新平台,积极抢占全球涉海创新增长制高点,深入推进湛江海洋经济发展示范区建设。湛江,三面临海,海域面积2.1 万平方公里,海岸线长2 023 公里约占全省海岸线的三分之一、全国的十分之一,自古以来就因海洋生物资源丰富闻名海内外。凭借着得天独厚的地理位置,湛江的渔业非常发达。其中马鲛鱼产业在湛江水产中占据重要的地位。马鲛鱼,体形狭长,头及体背部蓝黑色,一般体长为25~50 cm、体重300~1 000 g。马鲛鱼群每年春季游到粤西沿海产卵,形成鱼汛。因其肉质细嫩,味道鲜美,且营养价值高,是近海作业主要捕捞对象。因此,为了更好地实施规划纲要,渔民们科学合理地分拣出渔获物中的马鲛鱼十分必要。
1 目标检测的应用领域
目标检测(Object Detection),其本质的任务是找出图像中所有的目标物体,确定它们的类别和位置。在实际检测情况中,往往有许多不可抗力的因素,由于各类物体有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具有挑战性的问题。随着计算机技术的不断发展,图像采集技术的日益提高,这几项技术促进了目标检测的日臻完善。目标检测应用广泛,徐乐先等基于深度学习对车位进行检测,祝朝坤等基于目标检测的智能垃圾分类垃圾桶的设计,任宇晴等对水果成熟度的识别。机器学习的目标检测技术不仅在人工智能理论层面进行了系里研究,同时,在各行业有目标检测需求的场景中得到了广泛的应用。
2 目标检测在马鲛鱼识别中的应用
根据目前的文献检索,目标检测虽然在绝大多数领域已有较为成熟的研究和应用,但是尚未广泛应用于渔业,尤其是对鱼类的检测识别相对有限。传统的对渔获物进行分类方法大多依靠人眼识别,一般的渔获物淡季尚且能满足市场需求,但是在捕捞的旺季,渔获物数目巨量增加,这使得工人的作业任务量增加巨大。随着工作时间的增加,工人的专注度降低,难免会造成分类错误,引起后续一系列的麻烦。为了解决这一难题,本文采用机器学习中的目标检测技术对鱼类进行识别检测,再结合相关的渔获物器械打捞,能有效地节省工人工作时间,提高工作效率。
本文将以马鲛鱼为例,提出一种基于深度学习SSD 模型在马鲛鱼检测中的算法模型。通过该深度学习模型以马鲛鱼为案例进行成功的目标检测,验证本文提出模型的可行性。同时,本文提出的基于深度学习目标检测模型SSDResNet50V1FPN 的检测方法,可以进一步推广应用到其他种类有目标检测需求的渔获物场景中。
3 本文选取模型介绍
3.1 基本流程
本文基于深度学习TensorFlow 框架对渔民捕获的鱼类进行分类识别检测。首先根据需要识别的鱼类——马鲛鱼选取恰当的模型。然后利用Python 的爬虫功能从网上的图库爬取了上万张马鲛鱼相关的图片,并对图片进行筛选。要删除会加大机器学习运行负担的像素过大图片,通过对这些图片进行相关的预处理,即将图像进行尺寸调整、旋转、拉伸、光线补偿、灰度变直方图均衡化、规范化、几何校正、过滤及锐化等操作,令其符合TensorFlow 框架下对图像识别的要求。然后再构建出深度学习SSDResNet50V1FPN 模型,并对模型进行多次训练,实现经过算法修改调整后,达到最终检测效果的目标。本文提出的深度学习目标检测实现流程为模型确定,收集图片,训练模型,调整参数,模型验证。
3.2 模型选取
本文选用的是TensorFlow 框架,与其他深度学习框架对比,其特点是在建模能力、模型部署、性能、架构、生态系统等多个方面呈现优越性。
本文选取的是深度学习SSDResNet50V1FPN 模型。SSD,全称Single Shot MultiBox Detector,是Wei Liu 在ECCV 2016 上提出的一种目标检测算法,是主要的检测框架之一,相比Faster RCNN 有明显的速度优势,相比YOLO 又有明显的MAP 优势。SSD 的方法是基于一个前馈卷积神经网络,通过算法产生候选框,然后再对这些候选框分类和回归,接着生成一个反应检测对象于检测目标相关的可靠度分数。SSD 采用卷积神经网络(CNN)来直接进行检测,提取了不同尺度的特征图来做检测,大尺度特征图可以用来检测小物体,而小尺度特征图可以用来检测大物体;再由SSD 采用了不同尺度和长宽比的先验框Prior boxes,在Faster R-CNN 中叫作锚(Anchors)。
3.3 训练集的选取
本次实验从11 630 选取了10 000 张马鲛鱼的图片,其中9 000 张作为训练集,1 000 张作为测试集。训练集全部被保存到了“images1”目录下,根据每张图片里马鲛鱼的体型,姿态的不同以达到高准确率的训练效果。测试集则被保存到了“images2”目录文件下,这些图片用于对模型的训练效果进行检测。为了确定该模型的训练效果,还需要利用labeling 软件进行目标边框的处理,得到XML 文件。此处还需修改labeling 软件中的data 文件,将其改为“mackerel”,选择边框打标后可以为保存XML 文件,且保存的XML文件名与图片的名字一一对应。
4 模型的训练和结果
4.1 平台搭建
本次训练的工作站硬件采用Dell7920,CPU 为Intel Xeon 5218R,内存64G,1TB 三星ssd 970 EVO Plus,显卡为NVIDIA GeForce RTX 2080Ti(12G)GPU;软件环境为Ubuntu 20.04,TensorFlow 2.8 版本。
4.2 模型训练曲线
本文采用SSDResNet50V1FPN 模型对10 000 张马鲛鱼图片进行训练,总的损失函数如图1 所示,从图1 可以看出经过25 000 步训练后,总的损失函数减少到2.2×10,图1 中的曲线平滑度设置为0.8,从整个曲线训练的过程可以看出在25 000 步训练后,采用SSDResNet50V1FPN 模型训练已经达到稳定状态。
图1 基于SSDResNet50V1FPN 模型总的损失函数训练曲线(25 000 步)
5 结语
机器学习的应用成果已经渗透融入于社会生产的方方面面,基于机器学习研究目标检测更是成为一个热门的方向。本文基于TensorFlow 目标检测以渔获物马鲛鱼为例,进行了算法识别的应用研究,通过设计SSDResNet50V1FPN 模型,经过9 000 张图片作为训练集,1 000 张马鲛鱼的图片作为测试集。经过25 000步训练后,SSDResNet50V1FPN 模型损失函数收敛到2.2×10,训练曲线表明此模型应用于马鲛鱼的目标检测精度已经良好,且可以用于渔获物马鲛鱼的检测中。进一步的,本文基于深度学习SSDResNet50V1FPN 模型不仅适用于马鲛鱼的检测,也同样适用于其他海产品的检测。