☰
港口船舶AI类型检测实战:从目标检测到细粒度分类的落地经验
2026/10/17 3:33:20 网站建设 项目流程

港口这套业务,十多年前和现在完全是两个样。以前调度员看监控,靠的是人眼盯着几十路画面,一艘船开进泊位,先查AIS、再翻申报单、再对船名册,遇到夜间或者大雾天气,照片根本拍不清船名,一套流程走下来十几分钟很正常。但港口作业按小时计费,泊位、龙门吊、拖轮、引航员全是排着队等船,识别慢一分钟,后面整个链条都得等着。所以当智能监控系统开始引入船舶AI类型检测时,我第一反应是——终于有人把“看船”这件事从人眼升级到算法了。

这个项目其实不是单纯装几台摄像机再加个识别模型那么简单,它解决的是港口业务里一个很具体的问题:能不能在船舶还没靠泊、甚至还在锚地时,就自动确认它是什么类型的船——是集装箱船、散货船、油轮、液化气船,还是渔船、工程船。这个信息一旦自动化,后面接泊位安排、岸桥调度、安全监管、海关申报核查,全部能联动起来。乐迪信息做的这套系统,本质上就是给港口的“眼睛”装上“大脑”。这篇文章我不打算讲太多宣传话术,直接把这个项目的核心逻辑、算法选型、数据标注、部署落地和踩过的坑拆开说一遍,给正在做港航智能化或者相关视觉项目的朋友一个参考。

这个项目最值钱的地方不是模型本身,而是业务理解。船舶AI类型检测在技术上属于目标检测+细粒度分类,听起来不算特别前沿,但真正落地时你会发现,港口场景里的每一类船长得太像了,集装箱船和杂货船远看几乎一样,散货船和水泥运输船也是傻傻分不清。再加上潮汐、光照、雨雾、背光,模型在实验室里跑得再好,到现场也会原形毕露。所以这套系统真正难的不是算法,而是数据、场景适配和与现有港口作业系统的对接。

1. 项目为什么立项:从人工盯屏到智能识别的必然转变

港口监控过去的核心模式是“人+屏”。中控室里一排排显示器,每块屏分成十六宫格,值班员轮着看。但说实话,人眼在连续盯屏超过二十分钟后,注意力就会显著下降,更别说从画面里准确判断远处一艘半遮半掩的船到底是什么类型。而且港口船舶类型识别不像人脸识别,船的种类判断依赖大量先验知识——船头形状、驾驶台位置、货舱结构、甲板设备布局、烟囱位置,甚至吃水线高度,这些细节对新手来说根本看不出来。

1.1 一个摄像头点位背后的真实业务痛点

我先说一个我们实际遇到的场景,你就知道这个项目为什么要做。某港区的一个进港航道监控点,原来每天早班,调度员要人工标记进入港界范围内的每一艘船,判断它是否属于危险品船舶,然后决定要不要安排护航和禁航。以前这套流程靠的是VTS系统的AIS信号配合人工比对,但AIS不是百分之百覆盖——有些小型渔船、工程辅助船压根没装AIS,有些船为了省事关闭了AIS,还有些AIS设备上报的船型信息本身就是错的。一旦发生这种情况,监控员只能靠肉眼在屏幕上识别。遇到过几次误判之后,港方明确提了个需求:能不能用现有的视频监控,自动检测画面里出现的每一艘船,并把船型识别出来,哪怕AIS缺失,系统也能给出一个判断结果。

这个需求背后的核心词其实是“非合作目标识别”。AIS是合作目标识别,船主动上报自己的信息;视频识别是非合作目标识别,不管船配不配合,只要出现在镜头里,系统就要能认出来。两者结合起来,才能形成完整的态势感知。

1.2 技术选型的边界条件

前期方案讨论的时候,也有人提出过要不要直接用传统的图像分类——截取船体区域,训练一个分类器。但实际论证下来放弃了,原因有两个:一是港口气象条件复杂,背景干扰严重,船体区域如果没有先检测出来,直接分类基本没法用;二是港口场景里船经常互相遮挡,多艘船同时出现时,单纯分类器一次只能处理一个整体区域,没办法做到逐船识别。所以最终确定用两阶段方案:第一阶段用目标检测算法框出画面中每一艘船的位置,第二阶段对每个船框做细粒度分类。这样就算场景里同时出现五六艘船,也能逐艘输出类型和置信度。

选型的时候对比过几套方案,包括两阶段的传统检测、单阶段的实时检测,还有基于视频流的时序模型。最后落地选的是单阶段检测框架加分类分支,主因是港口的摄像头数量多,单路视频要实时处理,算力有限,单阶段方案在推理速度上有明显优势。需求端也没有到必须逐帧分析的程度,按秒级抽帧已经能满足业务。

2. 船舶AI类型检测的核心技术:检测与分类的解耦

整个系统的技术链路看起来不复杂,摄像头取流、抽帧、目标检测、船型分类、结果叠加、写入数据库,但每一步都有不少细节坑。我分开说。

2.1 船舶类型体系怎么定

头一个问题就是:到底分成多少类?这个看似简单,其实最考验对港口业务的理解。一开始我们参考了一些公开数据集,里面船型分类极粗,只有ship、boat、container ship这种级别,根本不够用。后来跑到港区跟调度、引航、海事的人反复聊,梳理出实际业务中必须区分的类型:集装箱船、散货船、杂货船、油轮、液化气船(分LNG和LPG)、客滚船、拖轮、供给船、渔船、工程船(包括挖泥船、起重船)、驳船、公务执法船。这十多个大类是底线,每一类对应的作业流程和安全等级完全不同。

这里有一个特别容易被外行忽略的点:同一条船在不同装载状态下,视觉差异很大。集装箱船满载时甲板上堆满箱子,船体线条很硬朗;空载返航时上层建筑显得特别高,甲板空荡荡。散货船装载矿石和装载粮食时吃水线、舱盖数量变化不大,但船体锈蚀程度和甲板设备不一样。所以训练数据必须覆盖不同装载状态、不同角度、不同季节光照下的样本,否则模型很容易出现过拟合某一种视觉形态的问题。

船舶类型主要视觉特征业务对应场景
集装箱船甲板整齐堆满集装箱,船体方正泊位安排岸桥作业
散货船甲板上有大型货舱盖,船体粗壮散货码头斗轮机作业
油轮甲板管线密集,船中区域有集管区危险品泊位、防火要求
液化气船甲板上有球形或圆柱罐体高危监管、禁航区要求
拖轮船型小、干舷低、尾部有拖缆设备协助靠离泊调度
渔船船身窄长,常有桅杆和渔网架航道安全、禁渔监管
工程船甲板有起重机或特殊作业设备施工区域管控

2.2 数据采集与标注的几条军规

训练数据来源主要有三个:港区自有摄像头的历史录像、公开的船舶图片集、以及从海事部门协调来的船舶照片库。但真正用起来,第二个来源质量层次不齐,很多图片是摄影作品,船在画面里占的比例很小,背景复杂,直接拿来做训练效果反而差。我们最终以港区实际摄像头画面为主,每类船舶至少保证大几千张有效样本,再配合公开数据做增强。

标注环节是第一个深坑。船型识别标注不是画个框就行,标注员必须理解船体结构的区别。比如集装箱船和杂货船远看几乎一样,但集装箱船舱口盖是平的,甲板上有大量的集装箱锁具和网格线;杂货船有起伏的货舱口围板,甲板起重机的位置和造型也完全不同。拖轮和供给船也很容易混淆,前者需要频繁顶推大船,船艏有橡胶护舷和加强结构,后者甲板宽阔、尾部有月池或作业区,主要用于平台物资运输。这些细节,标注员不经过培训根本分不出来。

所以项目组做了一件非常重要的事:写了船舶类型标注手册,把每一类的判定特征、易混淆点、边界情况都列清楚,然后先让标注员做了一轮试标,准确率超过95%才允许正式开工。这个流程看起来耽误时间,实际上大幅减少了返工。

2.3 模型训练:小目标、遮挡和细粒度分类

港口摄像头视野范围大,一艘长度两百米的散货船在画面里可能只占几百个像素,在远距离时甚至只有几十个像素——这对检测器来说属于小目标问题。我们的做法是分级处理:接入的高清球机先做全景画面检测,一旦发现船舶目标,就用多目标跟踪算法锁定目标,云台控制摄像头变焦拉近,再对近景画面做高精度分类识别。这个策略说实话效果拔群,虽然增加了一点控制逻辑,但识别置信度从原来的不到70%提升到了90%以上。模型训练时也做了多尺度训练,输入分辨率从640到1280都参与训练,增强对不同距离的适应性。

细粒度分类部分,用了一个比较简洁有效的做法:基础特征提取用通用的目标检测主干网络,分类分支增加了一个注意力模块,让模型重点关注船体中部和上层建筑区域。为什么要这样设计?因为船型判断最核心的特征集中在船体轮廓和上层建筑结构上,甲板上的货物状态反而会干扰判断。注意力机制可以让模型不自觉地聚焦到关键区域,而不是因为集装箱船上堆满箱子这种表面特征就做出判断。

另外,天气自适应是必须做的。港口摄像头常年室外,雨水打在镜头上、雾霾导致能见度下降、夜间低照度噪点严重、逆光时船体一片漆黑,这些都会让模型性能断崖式下降。我们建立了一套图像质量评估模块,在送入模型之前先判断当前画面质量,如果质量过差,就主动切换到去雾算法、夜间增强算法或触发补光设备,而不是让模型在劣质输入上瞎猜。

2.4 少样本船型的处理策略

港口业务中有一些船型非常少见,比如液化气船,一个月可能就靠泊几次,收集大量训练样本并不现实。而这类船恰恰是安全性要求最高的,漏检和误检的代价极大。这时候我们用了两个手段:一是利用公开的全球船舶图片集,尽量找到各种LNG船/LPG船的侧视角、斜视角、靠泊视角图片,先做一个预训练分类模型;二是在港区特定泊位增加固定机位,专门在船舶靠离泊时采集数据,让样本量随着系统上线运行逐步增长。系统还支持“在线难例补充”功能,现场识别错误的图片可以一键回传,标注后直接加入训练集,形成闭环迭代。这个机制后期帮了大忙,很多现场特殊情况都是靠它逐步消化掉的。

3. 实操过程:从硬件部署到业务系统对接

说完了模型层面的东西,再聊聊这套系统在现场究竟是怎么部署的。很多项目在实验室跑通模型,到真正上线时会发现,工程化才是最大的拦路虎。

3.1 点位选择和摄像机调试

不是所有摄像头都适合做船舶识别。项目启动后我们花了差不多两周时间,把港区现有的摄像头点位全部过了一遍,逐个判断视野范围内是否有稳定的船舶经过路径、是否会被岸桥或建筑遮挡、是否存在严重的逆光时段。最终选定了三类点位:

  1. 进出航道制高点:视野开阔,能看到船舶的全貌,适合做初次检测和跟踪切入。
  2. 泊位前沿:近距离捕捉船号、船体细节,适合做高精度类型确认。
  3. 锚地周边:用于锚泊船的识别和监控,这类点位一般距离远,对长焦镜头要求高。

摄像机选型有两条硬指标:一是至少要400万像素以上,否则远距离细节根本不够;二是要支持光学变焦和自动聚焦,因为船是动的,机位固定,只有云台和变焦才能持续锁定目标。实际部署中还发现,部分老摄像头的码流设置有问题,推荐的I帧间隔太长,导致视频流抽帧时出现卡顿和花屏,后来统一把I帧间隔调到了50帧以内,问题才解决。

3.2 边缘计算与平台架构

港区摄像头数量多,全部把视频流传回中心机房再分析,带宽压力太大,延迟也高。我们的架构采用了“边缘+中心”的混合模式:

  • 边缘端:在每一个监控点部署一台边缘计算盒子,内置船舶检测和跟踪模型,对摄像机视频流做实时分析,输出结构化结果(船型、位置、置信度、时间戳),只把结果数据传回中心,而不是传视频流。这样做的好处是带宽消耗降到了原来的几十分之一。
  • 中心端:部署平台服务器,负责接收边缘端结果,做跨摄像头目标融合和业务联动逻辑,比如同一艘船在多个摄像头画面中出现的轨迹拼接,以及AIS信息与视觉识别信息的关联比对。

这里要特别强调一下时间同步问题。多个摄像头同时跟踪一艘船时,如果各自的结果时间戳不一致,拼接轨迹就会完全错乱。我们一开始没注意这个问题,导致试运行阶段航速计算和轨迹展示乱七八糟,后来统一加了NTP时钟同步,强制所有边缘节点和中心服务器时间对齐,才算是解决了。

3.3 与AIS的融合策略

AIS和视觉融合是这套系统比较有亮点的部分。具体做法是:先用AIS提供的经纬度坐标和船位信息,把船舶投影到视频画面中的像素坐标区域,再结合视频检测结果做匹配。匹配成功的船,可以直接把AIS里的船名、MMSI、航速、目的港信息绑定到视觉目标上;匹配不上的,系统专门标记为“AIS异常船舶”,提示值班人员人工确认。

这套机制在业务上非常有用。有一次系统通过视频检测发现一艘疑似工程船进入施工禁航区,但AIS上完全查不到这条船的动态信息,值班人员根据视频识别结果及时呼叫巡逻艇过去查看,结果是一艘未按规定开启AIS的违规施工船。这件事让港方对系统的认可度提升了不少,因为以前的纯AIS监控完全发现不了这种目标。

3.4 报警和业务联动

船舶类型识别结果本身不是最终目的,接入业务才产生价值。我们把识别结果通过标准接口推送给了港区现有的生产调度系统和安全监管平台,接了这么几个应用:

  • 泊位分配辅助:预先识别来港船型,自动匹配适合的泊位和装卸工艺,减少了人工问询和确认时间。
  • 危险品船预警:识别到油轮或液化气船进入港区水域时,系统自动向安环部门推送预警信息,同步触发周边作业区域的防火巡查要求。
  • 拖轮调度辅助:确认大船接近港池时,系统自动生成拖轮建议指令,附带该船类型和尺度信息,供调度员参考。

整个联动过程不追求全自动,只做“半自动辅助+人工确认”,这是港航业务里比较稳妥的落地方式。港口作业容错率低,任何新技术都要在可控范围内渐进推进,一上来就搞无人化,现场不太会接受。

4. 常见问题与排查技巧实录

系统上线运行这几个月,积累了不少现场问题。我挑几个有代表性的整理出来,给大家避坑。

4.1 夜间识别率断崖式下跌

一开始夜间的船型识别准确率连白天的一半都不到,主要是因为港区部分摄像头补光不足,低照度下画面全是噪点,船体轮廓都看不清,更别说细节特征了。排查下来发现,补光不是简单地把灯调亮就行,灯光直射水面会产生大面积反光,反而干扰检测。

最终方案是增加红外补光设备,配合摄像机切换红外模式,同时模型训练时加入了大量红外图像样本。另外针对夜间画面,专门做了一个低照度增强预处理,在保证不引入过多伪影的前提下提高对比度。现在夜间识别准确率虽然还比不上白天,但已经能满足业务使用要求了。

4.2 集装箱船和杂货船识别混淆

运营过程中最常见的误报就集中在集装箱船和杂货船之间。两条船远看都是长方形的船体加一个上层建筑,镜头距离远了之后,甲板上的细节完全看不清。排查中发现,模型过于依赖“甲板上是否有集装箱”这一单一特征,而很多杂货船甲板上装了大型吊机,外形上也很像集装箱。

解决办法是在训练集里大幅增加“杂货船甲板带吊机”“集装箱船空载”“集装箱船甲板混装”这几类难例样本,同时把分类分支的注意力权重调整为更关注船体结构而非货物堆叠。经过两轮针对性训练后,这对混淆组合的误报率降低了大概六成。

4.3 摄像头抖动导致的识别闪烁

港口靠海的机位风大,部分立杆摄像头长期处于轻微晃动状态,导致同一个目标在连续帧里忽大忽小,检测框抖动得非常厉害,识别结果也会在几个类型间反复横跳。这不是模型问题,而是输入源不稳定。

处理方式从两头入手:硬件上,对不稳定的立杆做了加固,加了防风拉索;软件上,在跟踪模块里引入了框平滑算法,对连续多帧的检测框位置和大小做加权平均,明显抑制了抖动。建议做类似项目的朋友,点位勘察时一定要把风力影响纳入评估,别等到上线了再返工。

4.4 雨天镜头水珠干扰

雨滴挂在镜头上,会在图像里形成局部模糊和光晕,导致检测器漏检。我们用了一个比较土但有效的办法:给摄像头加装防水罩和雨刷器,同时定期安排保洁。软件上加入了一个雨纹检测模块,发现镜头被水珠覆盖时自动发出清洁提醒。别小看这个功能,值班人员每天处理那么多告警,不可能一直盯着画面看镜头脏没脏,系统自己会说话才靠谱。

5. 这套系统后续还能怎么扩展

船舶AI类型检测这个底座打牢之后,往上扩充新功能其实是水到渠成的事。目前我们在做的几个方向:

  1. 吃水线检测:通过船体水线位置的变化,大致估算船舶载重状态,这个数据对码头岸桥调度和泊位安全有直接价值。
  2. 船舶违规行为识别:比如在禁航区行驶、逆行、穿越锚地等,结合船型信息可以判断违规的风险等级。
  3. 跨摄像头全轨迹跟踪:把船舶从进港航道到泊位靠泊的整个过程用多个摄像头连续拼接,形成一条完整的时空轨迹,便于事后追溯和事故分析。
  4. 船员和甲板作业安全监测:在高风险作业区域,识别甲板上人员是否穿戴救生衣、是否进入危险区域,与船型信息联动后可以做更精准的安全管控。

这里要提醒一句:扩展功能的时候不要贪多求快,每加一个功能都要重新评估算力、误报率和对现有系统的冲击。港口系统讲究的是稳定、可靠,你做一个识别准确率85%的新功能,可能还不如把现有功能从95%提升到97%更有价值。

写在最后

回头来看这整个项目,我最大的体会是:视觉AI在港口落地的关键,从来不只是算法本身,而是你有没有想清楚业务到底要什么,以及你愿不愿意把大量精力花在那些看起来“不太技术”的事情上——比如和调度员聊天、趴在监控前看船、写标注手册、调摄像机的安装角度。模型结构大家都是抄来抄去的,差距全在数据和工程细节里。

如果你也在做类似的港航视觉项目,我的建议是:先别急着上最酷的模型架构,花时间把业务场景摸透、把数据基础打扎实,远比在排行榜上刷几个点的准确率重要得多。等系统跑起来,现场反馈一点点进来,再逐步优化,这条路虽然走得不快,但每一步都稳稳当当。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询