Skip to main content

3 posts tagged with "商业项目"

View All Tags

一、系统概述

通过AI技术实现车辆登船记录的自动化、智能化管理,利用高精度车牌识别、实时状态监测和数据分析,提升船舶调度效率,降低人工成本。系统支持高可靠性、可扩展性和复杂环境适应性。

二、系统架构设计

image-20250523170550316

image-20250523172342859

1. 硬件配置

车牌识别摄像头:

  • 型号:预算足的话最好400万像素以上工业摄像头,配备夜间红外补光。
  • 部署位置:船舱出入口,2-5米高度,俯拍车辆/平视车辆。
  • 防护等级:IP67,适应码头潮湿、盐雾环境。
  • 数量:每个泊位口部署四台摄像机,两台监控入场车辆,两台监控出场车辆

处理终端:

  • 工控机:8核,32G内存以上。
  • 存储:512G以上磁盘空间。
  • 系统:Windows/Linux均可。
  • 数量:2台,一台主设备,另一台做备用机

通讯模块:

  • 连接方式:网线连接,基于TCP/IP协议,支持4G/5G备份链路。
  • 带宽需求:≥10Mbps,确保数据实时传输。

设备控制箱:

  • 防护等级:IP66,内置温控系统,防潮、防尘。
  • 集成设备:工控机、交换机及NVR(网络视频录像机)。
  • 可选配置:配备UPS(≥30分钟续航),防止突然断电。

2. 软件架构

车牌识别模块:

  • 技术栈:Python + OpenCV + PyTorch。
  • AI模型:YOLOv11(目标检测)+ CRNN(字符识别)/PaddleOCR,具体可能在做的过程中比较效果。
  • 功能:实时解析摄像头画面,提取车牌号,识别准确率目标>99%。

车辆登船记录、数据管理、报表生成模块:

  • 数据库:Postgres。
  • 技术:Flask,Pandas + OpenPyXL。
  • 功能:记录车辆进出时间、状态,生成历史记录,生成Excel/CSV格式报表,包含车牌号、登船/退出时间、状态等,支持异常高亮。

三、AI功能实现

1. 技术方案

模型选择:

  • 目标检测:YOLOv11,检测车牌区域,适合实时场景。
  • 字符识别:CRNN + CTC Loss/PaddleOCR,处理车牌。
  • 数据增强:旋转、模糊、亮度调整,提升模型鲁棒性。

训练与优化:

  • 数据集:乙方采集码头实际场景数据(≥1万张标注图像),包含污损、遮挡、夜间等场景。甲方等待摄像头安装完成,配合找一些车辆进出采集数据,乙方使用Labelling标注车牌位置及字符。
  • 迁移学习:基于预训练模型微调,缩短训练周期。

智能校验:

  • 规则过滤:校验车牌格式(如长度、字符规则)。
  • 异常处理:污损/遮挡车牌时,触发人工补录接口。

2. 功能实现

基础功能:

  • 实时车牌识别:捕捉车辆进出画面,提取车牌号。
  • 状态判定:基于车辆轨迹(通过多帧分析),判断登船/退出状态。
  • 数据记录:存储车牌号、时间、状态,生成自动化报表。

扩展功能:

  • 智能预警:车辆停留超过一定时间或者车辆异常进出将会提出预警。
  • 数据分析:统计登船高峰时段、异常频率,生成可视化图表(使用Matplotlib/Seaborn)。
  • 多功能扩展:提供API查询车辆进出状态,供后续开发集成。

四、外部接口、内部模块交互

1. 工控机和上位机接口定义

  • 协议类型:HTTP,POST请求

  • 需要确保工控机和上位机在同一网段

  • 登船json

    • 其中request 里面字段:

      • servicecodeWebApi_Vehicle_Onboard_Offboard_Status, 表示车辆登船状态(定义里面说只能有10位长度,但是其他案例有很长的例子,所以我取这个,如果不合适,可以跟我方反馈,我放修改)
      • appid需要甲方提供(表示应用名称)
      • reqid由每次调用我方生成
      • 加密key:需要由甲方提供,由此生成signdata,  
    • param:

      • berthCode: 泊位code,需要和甲方保持一致,可以甲方提供给我们,

        • 目前我们设置为: "1A" - "16A"
      • timestamp: 时间戳

      • type: 登船,还是离船

        • "onboard":登船
        • "offboard": 离船
      • status:

        • 1表示在正确的泊位
        • 0表示不在正确的泊位
      • time: 时间戳,UTC+8(北京时间)

{
"request": {
"appid": "AH856BDC-9F3E-487E-671D-C84DEA45EB24",
"reqid": "B683DA45-D4C3-45DB-AB60-8DEEECB6DE10",
"protover": "1.0",
"servicever": "1.0",
"requesttime": "20250606142930276",
"reserve": "",
"servicecode": "WebApi_Vehicle_Onboard_Offboard_Status",
"signdata": "556EDDE1D05C3ABA63535D57A0A68F1D"
},
"param": {
"berthCode": "1A",
"vehicleNo": "粤B·CD456",
"status": "1",
"type": "onboard",
"time": "20250606142930276"
}
}

2. 双工控机主从切换模块

  • 主要架构

    • 双节点架构:NodeA + NodeB

    • 工作模式:

      • 主节点:执行核心业务

      • 备用节点:实时监控+热备数据

    • 切换方式:自动故障切换 + 手动强制切换

  • 核心技术

    • 心跳检测:UDP广播 + 自定义协议(1s/次)

    • 故障判定:连续3次心跳丢失 + 硬件自检

  • 技术栈

    • Python,ZeroMQ, Protobuf

五、工期安排

任务名称时间备注
1. 项目启动与需求确认3天确认需求、硬件选型、接口标准。
2. 硬件采购与部署一周采购4MP+摄像头、工控机、UPS等;安装。
3. 数据采集与模型训练两周采集码头车牌数据(1万张);
训练YOLOv11+CRNN/PaddleOCR模型,优化准确率。
4. 软件开发两周开发车辆登船记录、数据管理、报表生成模块。
5. 上位机通信模块一周开发与上位机进行通讯的模块
6. 工控机主从切换功能一周设立机制,让两台工控机可以进行主从切换
7. 系统联调与测试一周功能测试、压力测试、异常测试。
8. 部署与验收一周现场部署、用户培训、生成自动化报表、验收。

预计总工期:50天

算法商业项目5 min read

我们在做算法类项目的时候,通常需要在客户机器上部署,无论是windows还是centos,都需要装一些软件以及程序,下面分享我经常会装的内容,希望对你有帮助,可以提升速度。

1. windows

  • 传统行业的客户使用windows的比较多,因此这部分先说
  • windows可能有登陆密码,找客户先要到,当然最好还是先暂时取消登陆密码,免得麻烦
  • 先检查配置,GPU显存,内存大小,C盘容量,其他盘容量
    • GPU显存的大小以及内存大小决定了很多模型能不能用
    • C盘要预留一些空间,作为系统盘满了会导致很卡
  • 防火墙关闭
    • 为了防止安装一些东西出幺蛾子,开始阶段还是关了吧
  • 有些软件,还是先装了吧
    • Google Chrome浏览器(当然Edge也可以),反正IE太垃圾

1.1 远程控制软件

需要这类软件的原因不言而喻,我们经常接的项目不像公司中正常坐班或者出差,可以接触物理机,

一般都是在远程,利用空余时间来做,通常就需要远程控制软件来远程操作。

1.1.1 向日葵

  • 官网地址
  • 注意事项:
    • 第一次让客户给你设置一个永久登陆密码,否则开机重启后,密码会变
  • 好处
    • 自带文件传输功能
    • 允许多端登陆
    • 不收费

1.1.2 window自带远程桌面

  • 这个我只用过一次,因为客户用的机器是windows server,只给我提供这个,我个人不太喜欢

1.1.3 TeamViewer

  • 我用的也很少,因为后来开始收费了(😂)

1.2 文件传输类

我们经常遇到需要传文件,软件,代码去客户机器的场景,下面分享我常用的几个技巧

1.2.1 网站互传

  • 有很多网站,采用中转传输的方式,比如轻松传
  • 好处
    • 非常方便,不用安装任何软件,能访问网络即可
  • 坏处
    • 大文件还是有点耗时
    • 离线传送需要VIP了
    • 敏感文件最好不用通过这种方式(毕竟是先把文件传送到网站的服务器)
      • 当然也可以选择加密压缩后再传输

1.2.2 其他软件附带功能

  • 很多软件主业并不是做这个文件传输的,但是也慢慢被聪明的用户拿来做文件传输了
  • 比如
    • 向日葵的文件传输
    • 百度云,夸克云等各种云盘

1.2.3 git, gitee

  • 是的,你没有看错,我说的就是你经常用的git
  • 使用好git,很多时候还是很方便的
    • 你自己机器上代码修改后就直接提交,客户机器上一pull一下即可
  • 坏处
    • 对大文件不太好
    • 客户机器上最好不要修改,不然容易冲突

1.3 python开发工具包

  • 既然做算法的,基本上很难饶过python了
算法商业项目3 min read

算法商业项目One min read