一种基于 YOLOv5 模型的船舶进港检测装置实现_第1页
一种基于 YOLOv5 模型的船舶进港检测装置实现_第2页
一种基于 YOLOv5 模型的船舶进港检测装置实现_第3页
一种基于 YOLOv5 模型的船舶进港检测装置实现_第4页
一种基于 YOLOv5 模型的船舶进港检测装置实现_第5页
已阅读5页,还剩24页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

I一种基于YOLOv5模型的船舶进港检测装置实现摘要海洋运输是国际商务的主要手段之一,随着全球贸易量的增加,海洋运输对经济增长至关重要。然而,海上船舶的安全监管和管理一直是国际海事组织和各国政府面临的重大挑战。由于海域范围广阔,对船舶进行实时监控和管理要求高度的自动化和智能化技术支持。随着环保被重视,对船舶排放物监控的要求也在增加。因此,发展能够实现海上船舶实时监测和分类的高效智能检测系统显得十分必要。本项目我专注于解决一个重要的技术挑战:将基于YOLOv5的船舶检测算法部署到RK3588芯片上,这是一种配备了能够执行人工智能推理任务的NPU的高性能芯片。我的目标是实现一个系统,该系统能够通过连接的摄像头实时检测和识别海上船舶的种类。为了达到这一目标,我首先对YOLOv5模型进行了优化,以确保它能够在RK3588芯片的NPU上高效运行。通过这种方式,我能够利用芯片的强大计算能力,处理摄像头捕获的实时图像,并准确快速地识别出图像中的船舶。整个项目的实施证明了RK3588芯片在处理复杂图像识别任务时的能力,同时也展示了优化后的YOLOv5算法在实时船舶检测和分类方面的有效性。这不仅为海上交通安全和船只管理提供了有力的技术支持,而且也推动了在类似硬件平台上部署高级人工智能算法的可能性。我的工作不仅展现了在边缘计算设备上部署复杂人工智能模型的潜力,而且还为海洋监控、自动航行等领域的技术进步提供了实证基础。关键词:YOLOv5,神经处理单元(NPU),船舶检测ShipTargetDetectionandRecognitionMethodonSeaSurfaceBasedonMulti-LevelHybridNetworkAbstractAsglobaltradevolumecontinuestogrow,maritimetransportation,asoneofthemainmethodsofinternationaltrade,playsavitalroleineconomicdevelopment.However,thesafetysupervisionandmanagementofmaritimevesselshasalwaysbeenamajorchallengefacedbytheInternationalMaritimeOrganizationandvariousgovernments.Duetothevastseaarea,real-timemonitoringandmanagementofshipsrequiresahighdegreeofautomationandintelligenttechnicalsupport.Inaddition,asenvironmentalregulationsbecomeincreasinglystringent,monitoringshipemissionshasbecomeparticularlyimportant.Therefore,itisverynecessarytodevelopanefficientintelligentdetectionsystemthatcanrealizereal-timemonitoringandclassificationofmaritimeships.Inthisproject,Ifocusedonsolvinganimportanttechnicalchallenge:deployingtheYOLOv5-basedshipdetectionalgorithmontotheRK3588chip,ahigh-performancechipequippedwithanNPUcapableofperformingartificialintelligenceinferencetasks.Mygoalistoimplementasystemthatisabletodetectandidentifytypesofshipsatseainrealtimeviaconnectedcameras.Inordertoachievethisgoal,IfirstoptimizedtheYOLOv5modeltoensurethatitcanrunefficientlyontheNPUoftheRK3588chip.Inthisway,Iwasabletousethechip'spowerfulcomputingpowertoprocessreal-timeimagescapturedbythecameraandaccuratelyandquicklyidentifytheshipintheimage.TheimplementationoftheentireprojectprovedtheabilityoftheRK3588chiptohandlecompleximagerecognitiontasks,andalsodemonstratedtheeffectivenessoftheoptimizedYOLOv5algorithminreal-timeshipdetectionandclassification.MyworknotonlydemonstratesthepotentialfordeployingcomplexAImodelsonedgecomputingdevices,butalsoprovidesanempiricalbasisfortechnologicaladvancementsinareassuchasoceanmonitoringandautonomousnavigation.Keywords:YOLOv5,NeuralProcessingUnit(NPU),shipdetection目录TOC\o"1-3"\u摘要 IAbstract II第1章绪论 11.1论文研究背景和意义 11.2国内外现状 21.2.1基于机器学习的图像识别算法 21.2.2基于卷积神经网络的图像识别算法 21.2.3船舶识别研究现状 4第2章关键技术介绍 52.1OpenCV 52.1.1简介 52.2Pytorch 52.2.1主要特点 52.3Yolov5 52.3.1简介 52.3.2主要特点 52.4NPU 62.4.1简介 6第3章系统分析 83.1系统需求分析 83.2系统框架 83.3系统流程分析 9第4章系统设计 104.1设计指导思想和原则 104.1.1指导思想 104.1.2软件设计原则 104.2构架概述 104.2.1硬件层: 104.2.2软件层: 104.2.3图像处理与目标检测层: 104.2.4用户界面层: 114.2.5系统集成与测试: 114.3人机交互界面设计 114.3.1设计目标和原则 11第5章系统实现 135.1环境配置 135.1.1Windows操作系统环境配置 135.1.2电脑中虚拟机Linux操作系统环境配置 145.1.3香橙派Linux操作系统环境配置 165.2主要界面 175.3代码设计 185.3.1QT界面设计 185.3.2核心算法图像处理主要函数 18第6章系统测试 206.1 模型可执行性测试 206.2 测试用例 216.3测试总结 23第7章结论 25参考文献 26致谢 27-第1章绪论随着全球化的加速和国际贸易的持续增长,海上运输作为主要的物流方式之一,对于连接全球市场和促进经济发展扮演着不可或缺的角色。然而,海上航行的安全性和效率面临着种种挑战,如船舶碰撞、海盗袭击、环境保护等问题。因此,提高海上航行的安全性和减少海上事故的发生成为了迫切需要解决的问题。实时船舶识别与检测技术尤为关键​在这种情况下在此类情况。1.1论文研究背景和意义这些年来,我国的航海事业发展迅速,我国正努力成为世界航海强国。对船舶机械能目标检测技术[1]在海上安全方面有着广泛的应用前景。在民用领域,确定非法渔船和偷渡者的位置有助于管理和监督海上运输。在军事领域,确定具体目标有助于战略部署和加强海上攻击的预警能力。在复杂环境下进行实时检测成为领域内难点之一。传统的目标检测算法是使用滑动窗口[2],收集候选区域的HOG和SIFT特征[3][4],在这时候利用SVM[5]进行识别。这些算法主要用于背景简单、目标清晰可见且需要测量的场景。由于某些红外舰船照片的背景区分度较差,而且目标类型复杂、多样、多变,因此通过一般抽象特征识别舰船具有挑战性(《信号与信息处理2022年无线电工程》第52卷第12期2117页)。由于深度学习技术的不断提升,船舶目标技术也在不断提高。单级和两级目标检测算法是采用深度学习的目标检测方法的两大类,可根据是否使用多级处理来划分。两阶段策略,如R-CNN[6]、Faster-RCNN[7]等,通常要求算法事先生成一些候选帧,然后再通过CNN[8]进行目标分类;单阶段技术,如SSD[9]、CenterNet[10]、RetinaNet[11]、EfficientDet[12]、YOLO[13]等,则采用回归作为高效解决目标边缘定位问题的方法,无需事先生成候选帧。如YOLO[13]和EfficientDet[12]等。它们无需事先生成候选帧,因为它们可以利用回归问题高效地解决目标边缘定位问题。利用深度学习的船舶目标识别系统通过CNN实现自动特征检索,然后进行基于神经网络的分类和回归,最后将分类和回归的损失统一在一帧中。刘畅等人[14]利用从GA-RPN结构中重新获得的图片特征来指导锚帧的建立,解决了与建立锚帧相关的难题。王燕妮等人[15]在主特征提取网络中加入了ShuffleNetV2,从而减少了计算量并压缩了模型。基于多侧输出融合(MSOF)策略技术,Li等人[16]将UNet++网络用于精确定位目标,并通过在常规目标检测模型中加入特征融合层创建了多尺度检测模型。于野等人[17]基于FPN的多维感官输入CNN模型A-FPN,通过结合目标特征中最重要的特征,优化了模型的判别特征。在YOLOv4的基础上,赵玉荣等人[18]提出了YOLO-Marine模型;利用K-Means++聚类技术找到初始锚点,从而使船舶目标定位更准。随着深度学习技术的使用,目标检测的效率和准确性大幅提高,但在轻量级检测模型的完成、移动内置人工智能平台的实施以及其他重要技术方面仍存在问题。单级算法的精确度低于A对系统,但它更适用于嵌入式应用,而且推导速度快、资源消耗低。1.2国内外现状1.2.1基于机器学习的图像识别算法1998年,第一个叫LeNet-5的基本神经网络的构建,让人们对神经网络的最终创建有了乐观的预期[5]。该网络只有五层,使用两个一维全连接将输入数据分为十类。研究人员Viola通过动态编程计算指定图片数据,恢复相关信息,然后合并多个分类器进行分类。在人脸识别方向上效果非常好[6]。为了尝试描绘图像中独特的轮廓,研究人员在2005年恢复了一定量的边缘信息。计算信息后,他们使用SVM进行分类。之后,贝叶斯分类器被用于识别图像,利用统计专业知识为分类提供精确的结论[7]。当时,在某些研究人员利用他们掌握的决策树进行的图像识别测试中,平均识别率达到95%。与基于卷积神经网络的现代技术相比,传统的图片识别技术所需的解读工作量相对较小,而且只需要有限数量的样本。在某些无法获得大量样本的图片认证案例中,即使数据量很大,传统技术也能高精度地检测出目标。此外,传统的图片识别过程不需要先进的计算机硬件,而且模型易懂、参数少、训练周期短。但是传统的识别有明显缺点。首先,图像特征需要人工提取,既费力又费时。此外,所获得的目标特征是单一的,这意味着所学习到的模型可能只能检测到少数非常具体的特征,因此不足以用于市场营销。随着照片质量的提高和获取照片数量的增加,使用老式摄影处理方法处理大量高分辨率图像变得越来越困难。基于深度凸神经网络的图像识别技术目前已成为图像识别研究的主题,这是因为该技术应用广泛,能够端到端处理图像,能够从大量训练数据中提取特征,并且能够将镜头直接输入模型,而无需先由人工识别特征。1.2.2基于卷积神经网络的图像识别算法AlexKrizhevsky的七层AlexNet把卷积核当成网络模型,逐层对图像进行特征采样,在当时的ImageNet数据集竞赛中获得了84.6%的识别率[9],这使神经网络模型再次成为研究的焦点。几年后,SimonyanK等人推荐了经典的VGG-Net模型,该模型有19层网络,在当时的ImageNet竞赛中获得了92.7%的准确率[10]。它使用两个紧密堆叠的小卷积核,而不是一个7x7的大卷积核,从而降低了参数数量,增加了非线性系数。为了发现前瞻性区域,2014年开发了R-CNN图像识别程序[11]。这种方法利用了CNN网络的有限搜索。后来,开明等科学家为了不将设定比例大小的图片输入到模型中,设计了空间金字塔网络,利用池化方法的分数将图片调整到所需罗斯等人在2015年提出了基于空间金字塔网络的FastR-CNN方案。该算法不需要将一个大数据模块分解成许多小模块,然后分别计算每个模块以提取必要的细节,而是能够一次性计算每个值。此外,由于只需对数据进行一次计算,因此减少了必须对数据进行仔细计算的总次数。更高效的R-CNN是一种更快的算法,通常会保留卷积网络的参数,通过寻找目标有很大几率出现的位置,而不是随机地多次查看每个区域,从而大大减少了工作量,提高了图片中的目标检测速度。这种方法比检查图像中的每个区域更有效。何开明等人建立了ResNet网络模型,通过在早期网络模型的基础上不断探索网络模型来提高识别率。通过将前两层获得的信息传输到后一层,该模型保持了其非线性,并在当时的图像识别比赛中证明了其高准确率。2016年,Kim和他的同事谈到了PVANet网络技能,该技能在PascalLexicon数据库中实现了超过78%的平均mAP。他们是通过利用ResNet的属性,同时使用FasterR-CNN网络实现这一目标的。GidarisS.等人在2015年扩展了本地创建网络,提出了MR-CNN网络。戴杰在2016年发明了R-FCN目标识别算法。更快的R-CNN算法利用上下两个网络的信息来识别图像中不同大小的目标,2013年,Lin进一步发展了这一算法,创建了FPN算法。通过利用上层系统收集的数据,可以特别识别出小型攻击。何开明等人在2018年提出了MaskR-CNN方法,将它的积极作用与双线性插值相结合,以更好地识别合格区域。2019年,何伟龙在应用MaskR-CNN模型识别无人机摄像头拍摄的建筑物时,获得了超过95%的整体判断率。在阅读照片中的交通标志时,杨萌萌部署了FasterR-CNN网络,准确率超过97%。Madjiao使用ResNet和FasterR-CNN扫描合成孔径雷达图片,对大型目标的发现率达到98.5%,对小型目标的发现率超过80%。在检测系统需要立即提供检测结果的特定场景中,更快的检测方法至关重要。约瑟夫-雷德蒙(JosephRedmon)于2016年创建了YOLOv1算法,这个是最初的YOLO系列算法。1.2.3船舶识别研究现状虽然深度机器学习已在寻找物体的应用中得到大量部署,但船舶识别应用却非常罕见。大量的船舶识别方法都依赖于机器学习,尤其是文献,首先通过胡氏不变数据矩阵捕捉船舶特征,然后通过SVM分类器对船舶目标进行分类[33][34]。其中阎利斌对运砂船、巡逻船和沉砂船的发现率都是90%左右,朱成和实验结果的平均分类误解率是5%。吴女士在使用景别技术确定船只照片后,也得到了更准确的结果。上述三人都在努力改进视觉图像处理技术。中国的韩亮在遥感图像船舶目标识别中使用大津过程进行主成分评估,获得了90%以上的准确率[36]。作者孟云在一种方法中结合了itti和RX,在另一种方法中结合了HOG特征提取并建立了Adaboot分类器,从而能够从遥感设备的图像中发现舰船目标。第一种检测技术通过检测五个目标实现了100%的准确率;第二种方法对民用货船的识别率为80%,对游艇的识别率为76%。对于游艇,上述方法的精确度超过76%。王鹏将帧间差分法与背景颜色变化技术相结合,在遥感图像识别中取得了可接受的结果,可靠性超过83%。在此基础上,王鹏利用最大共享和平滑方法对Alexnet模型中的图形数据进行了评估,测试集的图像识别错误率低于10%。第2章关键技术介绍2.1OpenCV2.1.1简介用于视觉分析和数据挖掘的最著名的免费开源模块之一叫做OpenCV(即开源计算机视觉库)。OpenCV最初于2000年问世,现已发展成为利用计算机视觉构建快速、成功应用程序的首选工具。OpenCV框架提供从基本图像增强到复杂视觉分类的各种任务,通常用于各种计算机视觉应用,包括图像分析、视频分析、人脸识别和其他信息视觉领域。2.2Pytorch2.2.1主要特点PyTorch具有灵活的动态函数图、自主的差异化方法和简单易用的API,因此大受欢迎。它拥有巨大的GPU加速处理能力,使深度学习的创建、训练和部署变得异常简单。此外,PyTorch还拥有一个充满活力的社区和大量的预训练模型资源,这两者已经对学术研究和实践应用的发展产生了重要影响。所有这些特点使PyTorch成为学术界和开发人员最喜爱的平台,同时在几类机器学习和深度学习学科中占据了重要地位。2.3Yolov52.3.1简介YOLOv5的目标是在保持高精度的同时提供惊人的检测速度,这使其成为便携式应用、自动驾驶汽车和实时间谍等各种计算视觉应用场景的理想选择。2.3.2主要特点YOLOv5卓越的功效和适应性是其主要卖点。YOLOv5对网络架构进行了大幅改进,这使得模型能够高效地解释数据,同时具有极高的准确性。这对于自动驾驶汽车和交通监控等需要立即做出反应的应用条件尤为重要。其次,YOLOv5为不同大小的模型提供了可扩展性:较大的模型适用于服务器端应用以及精度更高的应用,较小的模型适用于边缘和移动设备上的计算。网络结构图如下图2.1:图2.1YOLOv5的网络结构图示YOLOv5的网络结构,包括其各种组件和模块,将在图中清楚地说明,以及它们如何相互连接,以实现既有效又准确的处理速度和精度。由于YOLOv5采用了多尺寸模型架构,因此可以根据不同的机器马力和资源进行调整,是各种情况和应用的理想选择。2.4NPU2.4.1简介在深度学习技术刚开始流行的时候,人们主要使用通用计算设备,如CPU和GPU,来执行神经网络计算。但是,随着神经网络的复杂度和规模不断增加,传统的计算设备已经不能满足快速、高效地执行神经网络计算的需求。因此,研究人员开始探索如何设计一种专门用于加速神经网络计算的处理器,这就是NPU的由来。早期的NPU主要是基于FPGA实现的。由于FPGA灵活可编程,所以它可以用于实现各种不同类型的神经网络处理器。随着深度学习技术的不断发展和普及,NPU的研究和开发也取得了越来越多的进展。2013年,Google推出TPU芯片,专门用于加速深度学习模型的训练和推理。TPU采用了特定的硬件架构和优化算法,可以实现高效、低功耗的神经网络计算。TPU的成功引起了业界的广泛关注,也促进了NPU的发展。随后,其他公司也开始研发自己的NPU。2015年,华为发布了一款名为“Kirin950”的处理器,集成了一种名为“NeuralProcessingUnit”(NPU)的模块,用于加速神经网络计算。2018年,华为推出了全新的“昇腾”(Ascend)系列处理器,其中包括专门用于加速深度学习计算的NPU模块。随着NPU技术的不断发展和普及,越来越多的公司开始将NPU集成到自己的芯片中,以加速神经网络计算。例如,苹果公司在2017年发布的A11芯片中集成了神经网络处理器,用于支持人脸识别等功能。瑞芯微也为了让芯片实现人工智能的应用,所以把NPU添加到了自研的芯片中,它叫做RKNPU。

第3章系统分析3.1系统需求分析首先,功能需求上,系统必须实现通过连接的摄像头实时捕捉画面,并利用RK3588上部署的优化过的YOLOv5模型进行船舶的实时检测与分类。性能需求方面,鉴于应用的实时性要求,系统需要具备低延迟处理图像和执行目标检测的能力,它还能一直保持准确率。此外,稳定性需求也至关重要,系统需要在长时间运行的情况下保持稳定,确保不会因为软件或硬件故障导致的服务中断。这些需求共同构成了项目成功的基础,我们将通过精心设计和严格测试,确保每项需求都能得到满足,从而为用户提供一个既快速又准确、稳定的船舶检测系统。3.2系统框架系统框架是设计在通过整合RK3588芯片、优化后的YOLOv5模型、实时摄像头输入以及PyQt界面,构建一个既高效又用户友好的船舶检测系统。核心硬件RK3588芯片内置的NPU为运行深度学习模型提供了强大的计算支持,保障了系统的高效性和稳定性。优化后的YOLOv5模型能够在此平台上高效执行,实现对摄像头捕获图像的实时检测和分类。系统通过PyQt开发的界面,为用户提供了一种直观且易于操作的方式来启动/停止检测任务、调整检测参数和查看实时检测结果,它既方便又易操作。整个系统框架的设计充分考虑了性能优化与用户交互的需求,确保了船舶检测任务的高效执行同时,也保证了良好的用户体验。系统框架如下图3.1所示:图3.1系统框架3.3系统流程分析在本项目的船舶检测系统中,整个工作流程是一连串精心设计的步骤,从用户通过PyQt界面的互动开始,到系统最终呈现出的检测结果,每个环节都经过了周密的规划。初始阶段,用户通过图形界面激活系统,触发一系列自检和初始化操作,这包括验证RK3588芯片及其内置NPU的状态,确保摄像头的正确连接和配置,以及加载经过优化适配的YOLOv5模型。摄像头开始捕获海域的实时画面,这些画面经过预处理—比如调整对比度、去除噪点—以提升后续检测的准确度。紧接着,处理后的图像被实时传输到NPU执行YOLOv5模型,进行复杂的图像分析和船舶识别。由于RK3588芯片的强大处理能力,即便面对高分辨率的图像流,系统也能够保持低延迟和高准确性的检测。检测到的船舶信息,如船舶类型、大小、位置等,实时呈现在用户界面上。这个界面不仅提供了即时的检测结果,还允许用户深入查询每艘船的详细数据,甚至包括历史检测记录和数据分析。在这一过程中,用户的交互起着关键作用。他们可以通过界面调整检测参数,比如改变检测敏感度或专注于特定类型的船舶。系统还能根据实时反馈和累计数据进行自我优化,比如调整图像处理流程,以更好地适应不同的环境条件和用户需求。此外,系统在持续运行中还自动记录关键性能指标和检测结果,便于后续的维护和升级。用户完成检测任务后,可以选择结束程序或重新启动以进行新一轮的监测。系统设计了一套高效的关闭流程,确保在结束操作前自动保存当前的配置和数据,以便下次启动时能夜无缝继续运行。这一连串的操作流程不仅充分考虑了技术实现的高效性和准确性,还重视了用户的操作体验和系统的长期稳定性,确保了船舶检测任务能够高效、准确、并且用户友好地执行。第4章系统设计4.1设计指导思想和原则4.1.1指导思想本项目旨在开发一个基于RK3588芯片和YOLOv5模型的船舶检测系统,其指导思想主要体现在提升海域安全监控的效能,能够高效能检测。通过集成高性能硬件和先进的深度学习技术,设计一个既能满足高速、高准确性需求,同时又易于操作和维护的系统,以服务于海上交通管理和海域安全的广泛领域。4.1.2软件设计原则在软件设计方面,项目遵循以下原则以保证系统的优越性能和良好用户体验:高内聚低耦合:系统模块化设计不仅便于管理和维护,还通过降低各个模块之间的依赖性,增强了系统的灵活性和稳定性。可测试性:在设计之初就考虑到了测试的便捷性,确保每个模块都能够独立进行测试,从而提高系统的可靠性和稳定性。4.2构架概述本项目设计时采用了多分层的架构思想,让系统拥有灵活,可扩展的特点,设计的架构如下:4.2.1硬件层:RK3588芯片平台:选择RK3588芯片是因为其强大的处理能力和内置NPU,这为运行复杂的深度学习模型提供了硬件保障。摄像头:高清摄像头的选用是为了获取高质量的实时海域图像,这对于提高船舶检测的准确率至关重要。4.2.2软件层:操作系统与开发环境:选择Linux操作系统作为项目环境,使用PyQt等工具开发用户界面。深度学习模型与算法优化:不仅选用了性能卓越的YOLOv5模型,还通过算法优化确保模型在NPU上的高效执行。4.2.3图像处理与目标检测层: 图像预处理:有调整图像大小、裁剪图像并使其标准化,以便为模型提供适当的数据。。目标检测与分类:YOLOv5模型在此层执行,实时地识别和分类图像中的船舶对象。4.2.4用户界面层: PyQt界面:提供了直观的操作界面,用户可以实时查看视频流、检测结果,及进行系统配置等操作。互动性与反馈:界面设计考虑了用户互动性,如实时更新的检测结果、系统状态指示等,以及反馈机制,包括错误提示和操作确认。4.2.5系统集成与测试: 集成测试:当我把整个项目做完后,我会进行集成测试保证模块与整体之间能够完整运行。性能评估:我会对系统的实时、准确、稳定这些方面进行对比总结,保证系统能够达到要求。通过这样的设计和实现,系统不仅具备高效准确的船舶检测能力,还提供了良好的用户体验和操作便利性。这种综合性的设计方法使得系统不仅适用于海域安全监控,还能满足海上交通管理等多种应用场景的需求。、4.3人机交互界面设计在本项目中,我使用了PyQt来构建人机交互界面。通过PyQt,我们能够利用Python的简洁语法和强大功能,同时享受Qt的丰富控件和模块,来构建直观、美观且功能丰富的用户界面。4.3.1设计目标和原则在本项目中,PyQt被用来创建一个用户友好的界面,通过该界面用户可以进行如下操作:实时视频流显示:界面中有一个专门的区域显示来自连接摄像头的实时视频流,用户可以直观地看到当前的监控画面。检测结果展示:当系统检测到船舶时,结果将在界面上以图形化的方式展示,如在检测到的船舶周围绘制边框,并显示船舶的类型。系统配置与控制:用户可以通过界面上的控制元素(如按钮、滑动条等)来调整检测参数(如敏感度、特定类型船舶的识别优先级等),或是启动和停止检测任务。通过PyQt创建的界面不仅美观,而且实用,大大增强了本项目船舶检测系统的用户体验和互动性,如图4.1所示:图4.1界面设计图第5章系统实现5.1环境配置本设计基于Windows操作系统和Linux操作系统,使用Python语言、采用Pychram作为开发工具。瑞芯微的Rk3588芯片的微控制器作为船舶进港检测系统的下位机负责对实时数据的推理。通过Pychram作为开发工具的电脑端作为上位机,进行模型的训练和Qt界面的设计。5.1.1Windows操作系统环境配置Windows在项目的系统实现过程中,Windows操作系统扮演了至关重要的角色。为了确保开发环境的稳定性和模型训练的高效性,我对Windows系统进行了细致的配置。Anconda环境的安装与设置首先,我在Windows操作系统中安装了Anconda。它可以建立不同的环境,使不同项目环境独立。此外,Anconda还提供了便捷的包管理功能,使得安装和更新Python库变得简单快捷。Python版本的选择我选择了Python3.8版本进行开发。它是当前广泛使用的Python版本之一,它提供了许多改进和新特性,如更强大的类型提示、更高效的数据处理能力等。Yolov5模型的训练在Windows环境下,我使用Pytorch框架来训练自己的Yolov5模型。通过在Windows系统上进行模型训练,并使用GPU加速训练,调参来提高准确率。总之,通过对Windows操作系统的精心配置,我们为Yolov5模型的训练和整个船舶进港检测系统的开发提供了一个高效、稳定和易于管理的环境。下面是Windows系统下安装的部分主要库如图5.1所示图5.1Windows系统的主要库5.1.2电脑中虚拟机Linux操作系统环境配置虚拟机的安装与配置首先,我在电脑端安装了VMware软件进行创建虚拟机。在其中安装Ubuntu20.04操作系统的镜像,如下图5.2所示。Ubuntu20.04是一个广泛使用的Linux发行版,它提供了稳定、安全且用户友好的操作环境,非常适合用于开发和测试。图5.2Ubuntu20.04操作系统Miniconda的安装在Ubuntu虚拟机中,我安装了Miniconda。我首先将安装包拷贝到了Ubuntu系统中,然后通过在终端运行“./Miniconda3-latest-Linux-x86_64.sh”命令来启动安装过程,如图5.3所示Miniconda安装完成。图5.3Miniconda安装完成环境依赖的安装接下来,我将rknn_toolkit2-1.4.0_22dcfef4-cp38-cp38-linux_x86_64.whl文件和requirements_cp38-1.4.0.txt文件拷贝到了Ubuntu系统中,文件如图5.4所示。这些文件包含了项目运行所需的依赖库和工具。其中,rknn_toolkit2-1.4.0_22dcfef4-cp38-cp38-linux_x86_64.whl是一个Python轮子文件,它包含了rknn工具包,这是实现NPU加速所必需的。而requirements_cp38-1.4.0.txt文件则列出了所有必要的Python库及其版本,我通过运行pipinstall-rrequirements_cp38-1.4.0.txt命令来安装这些库。至此,我成功地在Ubuntu20.04虚拟机中搭建了一个适合项目开发的RKNN环境。图5.4Ubuntu20.04操作系统5.1.3香橙派Linux操作系统环境配置系统环境配置香橙派的系统和电脑的系统环境有区别,所以系统配置的Ubuntu的版本有所不同香橙派的系统是arm64,所以安装的Ubuntu镜像也是Ubuntu20(aarch64)版本这个也是Rk3588芯片所支持的版本。环境搭建系统烧录完成后,首先需要要进行系统环境的搭建以适配模型,保证模型可以正常执行。由于香橙派的系统是arm64架构所以Miniconda3的版本与电脑虚拟机中安装的版本有所不同,安装所使用的版本是aarch64版本的安装包。使用conda的命令创建RKNN虚拟环境,安装RKNN-ToolkitLite2软件包rknn_toolkit_lite2-1.4.0-cp39-cp39-linux_aarch64.whl文件拷贝到开发板,以完成推理环境的布置。如下图5.5为ToolkitLite2的安装过程。图5.5ToolkitLite2的安装至此全部的环境安装已经完毕,香橙派开发板已经能够进行模型的推理功能。5.2主要界面启动Yolov5船舶进港检测系统,软件整体界面如下图5.6所示:图5.6软件整体界面软件界面介绍:(1)图片选择区域在软件界面的图片选择区域,用户可以通过点击“选择图片”按钮来浏览并加载本地存储的图像文件。选择图片,识别结果将会在界面的相应位置显示,通常包括船舶的类型、位置(如边界框坐标)以及置信度等信息。这个功能使得用户能够轻松地对静态图像进行船舶检测和分析。(2)视频选择区域视频选择区域允许用户加载并播放视频文件,软件可以将对视频帧进行检测并在窗口中显示推理结果,并提供相关信息。这个功能对于分析船舶的移动轨迹和行为模式非常有用,尤其是在监控和安全领域。(3)摄像头启动区域摄像头启动区域提供了启动选项。用户只需点击按钮,软件会获取摄像头设备视频流。同时,软件会实时分析视频流中的画面并将检测结果实时展示在界面上。这个功能特别适合于实时监控场景,如港口监控、海岸巡逻等,能够为用户提供即时的船舶检测结果。5.3代码设计5.3.1QT界面设计Qt界面是基于Pyqt进行创建其中包含窗口,按键,布局的相关定义,确保可以实现可以提供简介命令的图形操作界面。defsetupUi(self,MainWindow):defretranslateUi(self,MainWindow):definit_slots(self):5.3.2核心算法图像处理主要函数下面是部分主要的核心函数,主要在该项目中对图像处理方面起到核心作用。激活函数-defsigmoid(x)本项目使用了sigmoid函数,它的定义是sigmoid(x)=1/(1+exp(-x))。在二元分类问题中,该函数常用于将输入值x转换为区间(0,1),并将结果解释为概率。坐标转换函数-defxywh2xyxy(x)为了更好地理解和表示目标的位置,需要将目标的坐标格式从中心点加宽高转换为所需要的左右角坐标,便于后续的目标检测和框绘制。目标处理函数-defprocess(input,mask,anchors)process函数是目标检测后处理的关键步骤,它接收网络的原始输出、掩码和锚点框作为输入。该函数首先计算目标的置信度和类别概率,然后根据网格大小和锚点框调整目标的坐标和尺寸,展示信息。非极大值抑制函数-defnms_boxes(boxes,scores)为了去除重叠的目标帧并保留最佳检测结果,非极大值抑制是一种常用的目标检测后处理方法。nms_boxes函数实现了NMS算法,它通过计算目标框之间的交并比(IoU)来抑制重叠度过高的目标,确保每个目标只被检测一次。YOLOv5后处理函数-defyolov5_post_process(input_data)yolov5_post_process函数是整个目标检测后处理流程的整合,它首先对网络的输出应用多个处理掩码,然后调用process、filter_boxes和nms_boxes函数,最终得到经过筛选和优化的目标检测结果。目标绘制函数-defdraw(image,boxes,scores,classes)draw函数用于在原始图像上绘制检测到的目标框,并标注类别和置信度。它通过循环遍历每个目标的边界框、分数和类别,使用OpenCV库的绘图和文本函数在图像上进行标注。图像预处理函数-defletterbox(im,new_shape=(640,640),color=(0,0,0))为了减少预处理对检测结果的影响,信箱功能可对图片进行缩放和填充,以确保图片尺寸符合网络的需要,同时保持目标的纵横比不变。第6章系统测试在本章中,我将介绍如何在实际情况下测试舰船入港探测系统。我将执行一系列测试案例,以确保系统符合设计规范,并在实际环境中正常运行。模型可执行性测试首先会进行模型推理环境加载测试,下面的代码可以检测模型推理环境是否成功,根据结果会输出相应信息。ret=rknn.init_runtime(target='rk3588')ifret!=0:print('Initruntimeenvironmentfailed!')exit(ret)然后调用下面代码可以加载模型并对目标文件推理,最后安最缺率输出排名前5的类别。defsetupUi(self,MainWindow):MainWindow.setObjectName("MainWindow")defshow_outputs(output):output_sorted=sorted(output,reverse=True)top5_str='\nTOP5\n'foriinrange(5):value=output_sorted[i]index=np.where(output==value)forjinrange(len(index)):if(i+j)>=5:breakifvalue>0:topi='{}:{}\n'.format(index[j],value)else:topi='-1:0.0\n'top5_str+=topiprint(top5_str)defshow_perfs(perfs):perfs='perfs:{}\n'.format(perfs)print(perfs)defsoftmax(x):returnnp.exp(x)/sum(np.exp(x))show_outputs(softmax(np.array(outputs[0][0])))最终的输出结果如下图6.1所示:图6.1模型推理输出结果测试用例图像检测测试:检查系统识别各种船舶的准确性。。视频流处理测试:当处理提供的视频时检测系统是否还能正常处理。摄像头实时监控测试:验证系统是否能够对摄像头获取的数据正常处理。测试类型测试项目测试样例编号测试结果通过标准备注图像检测测试船舶识别准确性001√正确识别所有船舶类型测试多个图片002√003√视频流处理测试实时性和稳定性001√视频流无延迟,稳定运行连续视频测试002√003√摄像头实时监控测试实时图像检测能力001√图像清晰,实时响应通过摄像头捕获002√003√6.3测试总结系统测试这步对于整个系统保证项目的有效执行至关重要。通过本章的测试和分析,确认了船舶入口检测系统的有效性,保证了项目在实时工作环境下的准确执行。这为系统的最终项目落地和使用定下了不可磨灭的基础。第7章结论本项目所做的工作是将先进的人工智能算法应用于海上船舶检测,以提高海上交通安全和船只管理的效率。项目的核心任务是将基于YOLOv5的船舶检测算法成功部署到RK3588芯片上。RK3588芯片配备了高性能的NPU,专门用于执行人工

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论