基于Yolov7算法的海上船舶类型检测与识别(含源码、数据集及权重文件),涵盖六大类别船舶识别
基于yolov7的海上船舶检测和识别(含源码和数据集) 总共六个类别:ore carrier,passenger ship,container ship,bulk cargo carrier,general cargo ship,fishing boat 详细信息如下: 1.数据集7000张图片,7000个xml文件,7000个txt 2.包含训练好的权重文件
一、系统概述
YOLOv7海上船舶检测系统基于YOLOv7目标检测算法构建,专注于实现海上场景下船舶的精准检测与识别。该系统支持图像、视频两种输入类型的检测任务,同时提供模型导出、性能测试等功能模块,可部署于Triton Inference Server实现高效推理,适用于海事监控、海上交通管理等实际应用场景。系统整体采用Python语言开发,依赖PyTorch深度学习框架,结合OpenCV等工具库完成数据预处理与结果可视化,代码结构清晰,模块间耦合度低,具备良好的可扩展性与可维护性。
二、核心功能模块解析
(一)目标检测核心模块(detect.py)
该模块是系统的核心检测入口,负责完成从数据加载、模型推理到结果输出的全流程处理,支持图像文件、视频文件及网络流(RTSP/RTMP)等多种输入源。
- 参数配置:通过命令行参数解析,支持对模型权重路径、输入源路径、推理图像尺寸、置信度阈值(默认0.25)、IOU阈值(默认0.45)、设备选择(CPU/GPU)等关键参数进行配置,同时提供结果可视化(--view-img)、检测结果保存(--save-txt/--save-conf)等功能开关。
- 数据加载:根据输入源类型自动选择数据加载器,针对摄像头或网络流采用
LoadStreams类实现实时流读取,针对图像/视频文件采用LoadImages类实现批量加载,加载过程中完成图像尺寸调整、归一化等预处理操作,并保证图像尺寸满足模型 stride 约束。 - 模型加载与推理:调用
attempt_load函数加载预训练模型权重,自动适配CPU/GPU设备,支持半精度(FP16)推理以提升GPU运算效率。推理前通过输入零矩阵完成模型预热,避免首帧推理延迟;推理过程中禁用梯度计算以减少内存占用,通过model(img, augment=opt.augment)实现带数据增强的推理(可选)。 - 后处理与结果输出:推理结果经非极大值抑制(NMS)过滤冗余检测框,通过
scale_coords函数将检测框坐标从推理尺寸映射回原始图像尺寸。支持两种结果输出方式:一是将检测框、类别、置信度等信息保存为txt文件(符合YOLO格式);二是在图像/视频帧中绘制检测框与类别标签,保存结果图像或视频至指定目录(默认runs/detect)。
(二)模型导出模块(export.py)
该模块支持将YOLOv7模型导出为多种格式,满足不同部署场景需求,包括TorchScript、CoreML、ONNX等格式,同时支持动态batch、NMS集成等高级配置。
- 导出格式支持
- TorchScript:通过torch.jit.trace将模型转换为TorchScript格式(.torchscript.pt),适用于PyTorch生态内的跨平台部署,支持CPU/GPU推理加速。
- CoreML:依赖coremltools库将TorchScript模型转换为CoreML格式(.mlmodel),支持iOS/macOS平台部署,可配置FP16半精度或INT8量化以减小模型体积、提升移动端推理速度。
- ONNX:支持静态/动态batch导出,通过torch.onnx.export生成ONNX模型(.onnx),支持--dynamic参数实现输入尺寸动态调整,--dynamic-batch参数实现batch维度动态变化,满足不同推理场景下的批处理需求。 - 高级配置:支持集成NMS算子(--include-nms),将NMS操作嵌入ONNX模型,减少部署时的后处理步骤;通过
--simplify参数调用onnxsim库简化ONNX模型,移除冗余算子,提升推理效率;支持配置--end2end参数生成端到端推理模型,直接输出最终检测结果(检测框、类别、置信度)。
(三)Triton推理部署模块(deploy/triton-inference-server)
该模块提供基于Triton Inference Server的模型部署能力,支持客户端与服务端的GRPC通信,实现远程推理调用,适用于大规模、高并发的检测场景。
- BoundingBox类(boundingbox.py):封装检测框相关属性与方法,包括绝对坐标(x1, y1, x2, y2)、归一化坐标(u1, v1, u2, v2)、检测框宽高计算、中心坐标计算(绝对/归一化)等,为检测结果的存储与后续处理提供统一接口。
- 客户端逻辑(client.py):实现Triton服务端的客户端调用,支持三种运行模式:
- Dummy模式:发送全1矩阵作为输入,测试服务端推理链路是否通畅,验证模型加载与推理功能是否正常。
- Image模式:处理单张图像,通过preprocess函数完成图像letterbox resize(保持宽高比填充)、BGR转RGB、维度转置(HWC→CHW)等预处理,推理后通过postprocess函数还原检测框坐标,并调用render模块绘制检测结果。
- Video模式:处理视频文件,通过cv2.VideoCapture读取视频帧,逐帧完成预处理、推理、后处理流程,支持将结果视频保存为MP4格式(默认24 FPS),或实时显示检测结果。 - 数据预处理与后处理(processing.py)
- 预处理(preprocess):采用letterbox方式调整图像尺寸,避免图像拉伸导致的检测偏差,填充区域使用127灰度值,同时完成BGR→RGB颜色空间转换与归一化(除以255),输出格式适配模型输入要求(CHW、FP32)。
- 后处理(postprocess):将模型输出的检测框坐标(归一化至输入尺寸)还原为原始图像尺寸,处理letterbox填充导致的坐标偏移,过滤低置信度检测结果,最终返回BoundingBox对象列表。 - 结果渲染(render.py):提供检测框绘制(
renderbox)、填充框绘制(renderfilledbox)、文本绘制(rendertext)等功能,自动根据图像尺寸调整线条粗细与文本大小,确保不同分辨率图像的可视化效果一致;通过随机生成的颜色表(RAND_COLORS)为不同类别分配独特颜色,提升结果可读性。
(四)模型结构与组件(models目录)
该目录包含YOLOv7模型的核心网络结构定义,包括基础卷积模块、检测头、特征融合模块等,支持多种网络变体与性能优化。
- 基础模块(common.py):实现YOLOv7所需的基础神经网络组件,包括标准卷积(Conv)、深度可分离卷积(DWConv)、Ghost卷积(GhostConv)、空间金字塔池化(SPP/SPPF)、CSP模块(BottleneckCSPA/CSPB/CSPC)等,同时支持RepVGG、Swin Transformer等高级模块,可通过配置文件灵活组合网络结构。
- 检测头(yolo.py):定义
Detect、IDetect等检测头类,实现多尺度特征图的检测输出,支持锚点(anchor)基于图像尺寸的自动调整,通过sigmoid激活函数处理检测框坐标与置信度,推理时自动生成网格(grid)用于坐标解码。 - 模型构建(Model类):根据yaml配置文件动态构建网络结构,支持从配置文件中读取 backbone、head 定义,自动计算特征图通道数与 stride,初始化检测头锚点与偏置,支持模型权重初始化与层融合(fuse)以提升推理速度。
(五)性能测试模块(test.py)
该模块用于评估模型检测性能,支持计算Precision、Recall、mAP@0.5、mAP@0.5:0.95等指标,同时提供混淆矩阵、检测结果可视化等功能。
- 数据加载与推理:支持从COCO等标准数据集或自定义数据集加载测试数据,通过
create_dataloader函数完成数据批量加载与预处理,推理过程中记录推理时间与NMS时间,计算单帧推理速度。 - 性能指标计算:通过
apperclass函数计算每个类别的Precision、Recall、AP值,支持--v5-metric参数采用YOLOv5风格的AP计算方式;通过ConfusionMatrix类生成混淆矩阵,直观展示模型在各类别上的分类准确性。 - 结果输出:支持将检测结果保存为COCO格式的JSON文件(--save-json),用于后续COCO API评估;支持生成测试批次的标签与预测结果可视化图像,对比展示真实框与预测框,辅助分析模型误检、漏检原因。
三、关键技术特性
- 多输入源支持:兼容图像文件(JPG/PNG)、视频文件(MP4/AVI)、网络流(RTSP/RTMP)、摄像头等多种输入类型,满足不同场景下的检测需求。
- 多部署方式适配:支持本地推理(detect.py)、Triton服务端部署(deploy/triton-inference-server)、移动端部署(CoreML格式)、跨平台部署(ONNX格式),覆盖从边缘设备到云端服务器的全场景部署需求。
- 性能优化:支持半精度(FP16)推理、模型层融合、ONNX简化等优化手段,提升推理速度;支持动态batch与动态输入尺寸,适配不同硬件资源与推理效率需求。
- 结果可视化与导出:提供检测框、类别标签、置信度的实时绘制与保存,支持txt、JSON、图像/视频等多种结果格式导出,便于后续分析与二次开发。
四、典型应用场景
- 海上监控系统:通过视频流输入实时检测海上船舶,识别船舶类型(如BOAT、SHIP等),输出船舶位置与置信度,辅助海事部门进行交通监管与安全预警。
- 批量图像分析:对海上航拍图像数据集进行批量检测,生成检测结果txt文件或JSON文件,用于船舶分布统计、密度分析等场景。
- 边缘设备部署:将模型导出为CoreML格式部署于iOS设备,或导出为ONNX格式部署于嵌入式设备(如NVIDIA Jetson),实现便携式海上船舶检测。
基于yolov7的海上船舶检测和识别(含源码和数据集) 总共六个类别:ore carrier,passenger ship,container ship,bulk cargo carrier,general cargo ship,fishing boat 详细信息如下: 1.数据集7000张图片,7000个xml文件,7000个txt 2.包含训练好的权重文件


AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)