模型选择与配置说明

news/2025/9/17 18:25:01/文章来源:https://www.cnblogs.com/AttaSayyid/p/19097271

模型选择与配置说明(Detection / Recognition / Classification)

本文系统说明本项目在“检测(det)/识别(rec)/分类(cls)”三条子任务上的模型选择思路、备选方案对比、输入尺寸与性能取舍、部署格式(ONNX/MNN)、以及在 GUI 与代码层面的配置方式。目标是让读者理解“为什么选它们、如何用、何时替换”,从而在不同算力与场景下做出稳健可复用的决策。


1. 任务拆分与评估指标

  • 检测(Detection):在任意场景中召回车牌,输出矩形框 + 关键点 + 单/双层属性,用于后续几何对齐与裁剪。指标优先级:召回率(Recall)> 精确度(Precision)> 速度(FPS)。
  • 识别(Recognition):从透视对齐后的车牌图块中预测文本序列。指标优先级:准确率(Acc)> 速度(FPS)。
  • 分类(Classification):对车牌颜色/类型进行判别(蓝/黄/绿、单双层等),在界面与后处理上增强可读性与业务判断。指标优先级:准确率 ≈ 速度。

评估采用图片与视频双路径:对图片数据计算 Precision/Recall/F1、对视频采用“内容变化触发”的快照策略观察稳定性与误触发;同时在 GUI 中统一中文可视化,便于比对不同方法(lock/test/rec2)的主客观效果。


2. 部署格式选择:ONNX 优先,MNN 作为移动端备选

  • 统一推理引擎:PC 端与服务器端优先选择 ONNX Runtime(ORT),原因:
    • 跨平台与生态成熟(Windows/Linux/macOS),与 Python 生态适配好;
    • 工程集成简单、性能可接受,便于快速迭代与调试;
    • 本项目已有稳定的 ORT 封装(standalone_modules)。
  • 移动端/嵌入式:保留 MNN 版本模型(见 ModelsPackHyperLPR-master/resource/models),用于 Android/iOS 或 ARM 平台的轻量部署。
  • 结论:PC 端主路径采用 ONNX;端侧或极限算力场景再迁移至 MNN。

3. 检测模型选择(det)

实际使用:~/.hyperlpr3/20230229/onnx/y5fu_320x_sim.onnx(在 GUI 中可覆盖)。输入尺寸默认为 (det_size, det_size),默认 320。该模型是多任务头(Multi-Task)检测器,输出包含:

  • BBox(x1,y1,x2,y2)用于粗定位;
  • 关键点(四个角点)用于后续仿射/透视裁剪;
  • 单/双层指示(layer)用于识别前的结构性判断。

选择理由:

  • 端对端 vs 纯候选:相较“传统候选 + OCR”方案(lock/rec2),学习型检测器在复杂背景、夜间、斜视角、遮挡等场景的召回稳定性更强;
  • 关键点直接输出:避免二次形态学或 Hough 估计,裁剪稳定性与可重复性更好;
  • 小输入也可工作:320×320 兼顾精度与速度,在常见 CPU 上也能实时接近或达到可用;
  • 与 CCPD/CCPD2020 数据分布契合:工程内置了 Hyper2/CCPD2020,该类模型经过相似分布微调,泛化表现较好。

备选方案评估:

  • YOLOv5/YOLOv8/YOLOv10 等通用检测器:
    • 优点:训练生态成熟、工具链完整、速度快;
    • 局限:若不在 Head 中融入关键点与层属性,则需额外回归模块或后处理;端到端维护复杂度上升。
  • PP-YOLO/YOLOX:
    • 优点:部署成熟、性能优秀;
    • 局限:与当前识别/裁剪接口对齐需要额外改造,工程耦合度增加。

最终取舍:采用多任务车牌专用检测器,缩短对齐链路,减少工程胶水代码;在需进一步追求极致 FPS 的 GPU 场景,再考虑 YOLO 家族替换并补齐关键点分支。

输入尺寸策略:

  • 默认 320;对远距离/小目标场景可提升至 416/512 以增强召回;
  • GUI 中提供 det_size 可调,便于在不同视频分辨率与算力下快速试错。

4. 识别模型选择(rec)

实际使用:~/.hyperlpr3/20230229/onnx/rpv3_mdict_160_r3.onnx,输入 (48,160)。模型为 CTC 序列识别范式,字符表覆盖中文省份简称与英数字符,兼容单双层结构。

选择理由:

  • CTC 简洁稳健:无需显式对齐监督,端到端训练后推理简单、速度快、鲁棒性好;
  • 字符表覆盖广:兼容汉字与英数,落地复杂度低,不需要额外语言模型即可达成良好效果;
  • 与检测输出天然对齐:结合四点裁剪后,48×160 的标准化输入能在速度与精度之间取得稳健平衡。

备选方案评估:

  • Attention/Seq2Seq(如 Transformer-based SAR):
    • 优点:对长序列与上下文建模更强;
    • 局限:训练与推理复杂度更高,对端侧算力不友好,小样本域外泛化不一定稳定。
  • PP-OCR 系列(CRNN/ABINet/SVTR 等):
    • 优点:生态完善、开箱即用;
    • 局限:中文省份缩写、单双层混排等特征需要定制化字典与后处理,对现有工程替换成本较高。

最终取舍:在工程复杂度可控与稳定产出优先的前提下,CTC 模型是更稳妥的默认选型;未来若要处理极端模糊/遮挡或复杂上下文,可在实验分支引入注意力增强版模型。

输入与预处理:

  • 统一将裁剪块按长边对齐到 160,短边填充或缩放至 48,保持字符纵向几何比例;
  • 对对比度低与强反光样本,可在裁剪后做轻量增强(Gamma/CLAHE),但默认关闭以保证可复现性。

5. 分类模型选择(cls)

实际使用:~/.hyperlpr3/20230229/onnx/litemodel_cls_96x_r1.onnx,输入 (96,96),为轻量 CNN 分类器,任务包括但不限于:颜色(蓝/黄/绿/白等)、结构(单双层)与特殊类型(新能源等)。

选择理由:

  • 可解释性增强:在 GUI 可直接叠加“类型/颜色”标签,便于质检与业务侧确认;
  • 低耦合:与识别结果相互独立,出现识别不确定时,分类可作为辅助筛选信号;
  • 轻量快速:CPU 端实时开销小,对整体延迟影响有限。

备选方案评估:

  • 将“类型/颜色”融入检测头(多任务检测):
    • 优点:一次前向获得全部属性;
    • 局限:检测头学习任务过多时可能互相牵制,且替换识别模块时易产生联动影响。
  • 文本后验规则替代:
    • 优点:无需新模型;
    • 局限:在照度/白平衡变化大时,规则稳定性差,易出现错分。

最终取舍:保持独立轻量分类器,降低联动风险;必要时可以在“多任务检测”与“独立分类”之间做 A/B 实验。


6. 默认路径与 GUI/代码层配置

默认路径(代码位于 Hyper2/app.py::default_paths):

from os.path import expanduser, join
home = expanduser('~')
det = join(home, '.hyperlpr3', '20230229', 'onnx', 'y5fu_320x_sim.onnx')
rec = join(home, '.hyperlpr3', '20230229', 'onnx', 'rpv3_mdict_160_r3.onnx')
cls = join(home, '.hyperlpr3', '20230229', 'onnx', 'litemodel_cls_96x_r1.onnx')
  • GUI 覆盖:在 Hyper2/gui.py 中的“test 方法选项”可直接填写 det/rec/cls 路径与 det_size
  • 代码调用:method_test_on_image(..., det_path=..., rec_path=..., cls_path=..., det_size=...)
  • 回退机制:若 rec2 在本机缺失识别模型,则仅输出候选可视化(不阻塞流程)。

7. 数据与泛化:为何与 CCPD/CCPD2020 协同

项目目录中包含 Hyper2/CCPD2020 样本(train/val/test),这与我国道路场景分布高度相关:

  • 牌照样式多样:蓝/黄/绿、新能源、单双层等并存;
  • 环境变化显著:白天/夜晚、雨雾、逆光与强反射;
  • 视角/尺度差异大:路口监控、车载、行人视角混合。

因此,我们在模型选择上优先选用对上述变化稳定的架构:

  • 检测器具备关键点回归能力,裁剪鲁棒;
  • 识别器采用 CTC,抗轻微错位与形变;
  • 分类器独立轻量,减少耦合与误差传播。

这套组合在样本域内与相邻域上都较稳健,后续若接入外部数据(如高速收费站、地库入口等),建议:

  • 微调检测器以提升远距小目标召回;
  • 在识别端加入更丰富的字符表或专门处理特殊字符(使馆牌、武警牌等);
  • 扩充分类标签并引入代价敏感训练应对类别不均衡。

8. 速度/精度/开销的工程取舍

  • CPU 实时性:det_size=320 + 轻量 CTC + 轻量分类,单图处理常见 PC 能够流畅;
  • 提升精度:将 det_size 提升到 416/512,但注意推理时间线性增加;
  • 视频节流:通过 frame_stride/snapshot_stride/snapshot_on_change 减少冗余计算与存储;
  • 批处理与多进程:在批量图片或多视频时,可在上层封装多进程/线程以充分利用多核;
  • 量化与蒸馏(可选):
    • ONNX Q/DQ 量化可在 CPU 上提升吞吐,但需关注精度回退;
    • 知识蒸馏用于将更大识别模型的能力迁移到轻量学生模型。

9. 何时替换/升级模型

建议在以下情形评估替换:

  • 场景移植导致召回下降(远距、广角、小目标):优先升级检测器或提升 det_size
  • 频繁出现字符粘连/断裂:尝试更高分辨率裁剪或引入注意力增强识别模型;
  • 新增业务标签(颜色/类型):优先扩充分类器并做少量迁移学习;
  • 移动端部署:切换到 MNN/NCNN 并导出相应格式模型。

替换步骤要点:

  • 保持接口一致(输入尺寸、输出字段),避免改动 GUI 与业务层;
  • 若输出字段有变化(例如新增关键点格式),先在 crop_plate_by_landmarks 或适配层做转换;
  • runs/{method} 下做 A/B 对比,确保新模型在关键场景不退化。

10. 小结

本项目在“检测-识别-分类”三段链路上选择了“多任务检测 + CTC 识别 + 轻量分类”的组合,并以 ONNX 作为主部署格式:

  • 这套搭配兼顾精度、速度与工程可维护性,特别适合通用 PC/服务器侧的快速落地;
  • 通过 GUI 参数化与默认路径回退,降低使用门槛;
  • 在移动端或极限算力场景,保留 MNN 作为替代路径;
  • 随着数据域扩张,可逐步引入更强识别模型或增加分类维度,同时保持接口稳定。

依托统一的中文可视化与视频节流策略,我们能够在不改变使用体验的前提下,对不同模型与参数进行快速对比与切换,形成“可解释、可复现实验 → 稳定部署”的闭环。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/906715.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

002_文本分类任务的问答

1、下面代码中,random_state作为随机种子作用是什么? train_x, valid_x, train_y, valid_y = model_selection.train_test_split(trainDF[text], trainDF[label], test_size=0.25, random_state=42)这段代码的作用是随机把数据分为两个部分 计算机的“随机数”其实是 伪随机数…

车牌识别

车牌识别方案对比与实现总结(GUI 三方法:lock / test / rec2) 本文面向实际工程应用,系统梳理当前 GUI 集成的三种车牌识别方法(lock、test、rec2)的技术亮点、设计思路、模型选择、实现过程与关键代码,帮助快速理解与持续优化。目标是:在统一界面中,对比“传统候选+文…

告别人工标注瓶颈!Reward-RAG:用 CriticGPT 打造更懂人类偏好的检索模型

Reward-RAG: Enhancing RAG with Reward Driven Supervision 全文摘要 本文介绍了一种名为Reward-RAG的新方法,旨在通过奖励驱动监督增强Retrieval-Augmented Generation(RAG)模型。与以往的RAG方法不同,该方法使用了CriticGPT训练了一个专门的奖励模型,并利用该模型生成合…

Latex 中百分号怎么打

Latex 中百分号怎么打 由于 % 被用作注释符,所以前面 + \ 进行转义 \(\frac{285.5}{1-2.7\%}\)

文件上传-条件竞争绕过

条件竞争原理: 条件竞争的逻辑是代码逻辑问题:当我们文件上传到服务器时,先对文件进行保存,然后对文件的后缀名进行判断,符合白名单的保存,不符合就删除,但在删除之前,有另一个对服务器发起的请求,要访问这个文件,那么就可能造成文件被读取和访问。这就是条件竞争。 …

9.17 CSP-S模拟23/多校A层冲刺NOIP2024模拟赛19 改题记录

HZOJ 写在前面 连着三天吃三坨。本来想着今天大凶忌参加模拟赛然后没模拟赛挺好的,然后7:57临时通知加场,难道这就是大凶?好吧打就打吧,没想到真差点爆零。粗看没一道题可做怀疑自己的水平了然后赛后猛然醒悟是自己蠢如猪。其实这篇前面应该还有两篇,但是奈何这套改完得比…

Java基本语法

Java基本语法Day04 今天内容大部分在复习运算符的内容和分支语句练习题 复习运算符: 运算符:+ - + - * / % (前)++ (后)++ (前)-- (后)-- + 算术运算符: 【特别说明的】 1.//(前)++ :先自增1,后运算 //(后)++ :先运算,后自增1 2.//(前)-- :先自减1,后运算 //(后)-- :先运算,…

在AI技术快速实现创想的时代,挖掘前端学习新需求成为关键——某知名编程教育平台需求洞察

本文分析了一个包含50个前端项目的编程学习资源,涵盖交互设计、动画效果和实用工具等多种类型,通过用户反馈发现了界面优化、功能扩展和教学改进等方面的潜在需求。a.内容描述 该项目是一个包含50个独立前端项目的编程学习资源,核心功能定位在于通过实际项目练习帮助开发者掌…

IvorySQL 与 deepin 完成兼容性认证,共创开源生态新篇章

近日,IvorySQL 与 deepin 操作系统成功完成了兼容性适配认证。这一里程碑式的成就标志着 IvorySQL 在国产操作系统生态中的进一步深化,为用户提供更稳定、高效的数据库解决方案。deepin 简介 深度操作系统 deepin 是一款以“简洁、美观、易用”著称的国产 Linux 发行版,拥有…

在 Nginx 上搭建静态站点

1、新建站点的配置文件 vi /etc/nginx/conf.d/www.xxx.com.conf2、写入如下内容: server {listen 80;#listen [::]:80;server_name www.xxx.com; # 这里可以写你的域名,或者 _ 表示匹配所有 root /var/www/www.xxx.com; # 你的静态文件目录 index index.html index.htm;locat…

kylin SP3安装mysql 8.4.5

环境:OS:kylin SP3mysql:8.4.5 glibc2.17,建议安装glibc.2.28版本 查看系统glibc版本[root@localhost ~]# ldd --versionldd (GNU libc) 2.28Copyright (C) 2018 自由软件基金会。这是一个自由软件;请见源代码的授权条款。本软件不含任何没有担保;甚至不保证适销性或者适合某…

Unity中是否可以禁用GC

1)Unity中可以禁用GC吗2)项目是URP管线,渲染模块CPU耗时高,经排查主要是Batches数过高,应怎样进一步排查和优化渲染批次这是第445篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术知识点,助力大家更全面地掌握和学习。 UWA社区主页:co…

经典SQL语句大全

经典SQL语句大全一、基础1、说明:创建数据库CREATE DATABASE database-name2、说明:删除数据库drop database dbname3、说明:备份sql server--- 创建 备份数据的 deviceUSE masterEXEC sp_addumpdevice disk, testBack, c:\mssql7backup\MyNwind_1.dat--- 开始 备份BACKUP D…

Rhinoceros 8.23.25251.13001 犀牛3D建模

描述 Rhinoceros 是由美国Robert McNeel公司最新出品的专业强大的3D建模软件。软件以集百家之长为一体的发展教育理念,拥有NURBS的优秀传统建模教学方法,也有一个网格进行建模插件T-Spline,使建模方式方法有了更多的挑选,然后能创建出更传神、生动的造型。能输入和输出几十…

《深入理解计算机系统》计算机系统漫游(一) - Invinc

本文记录《深入理解计算机系统》中第1章 计算机系统漫游 的一些知识点。本文记录《深入理解计算机系统》中第1章 计算机系统漫游 的一些知识点。第1章 计算机系统漫游 信息就是位+上下文 系统中所有的信息——包括磁盘文件、内存中的程序、内存中存放的用户数据以及网络上传送的…

从几何分离到语义理解:深度解析3D点云分割与语义分割的本质区别

在三维计算机视觉领域,3D点云作为真实世界场景的核心数据载体,其处理技术直接决定了机器感知环境的精度与效率。 其中,3D点云分割与语义分割是两类关键技术,尽管二者同属点云处理范畴,但在目标定位、信息输出与应用价值上存在本质差异。 前者专注于“几何层面的分离”,通…

欧拉筛(线性筛)算法分析

前言对于寻找素数,第一时间想到的便是二重循环暴力查找,其复杂度O(n^2),通过循环中只判断到根号n可以优化一些,不过复杂度也达不到预期。在数论的学习中,我学到了埃氏筛法,O(nloglogn)的算法,而在一些数据范围达到1e7这样的题目中,也很难让人满意,于是我便学习了欧拉筛…

2021年安徽省大数据与人工智能应用竞赛 大数据(网络赛)-高职组赛题

本套数据数据: 通过网盘分享的文件: 链接: https://pan.baidu.com/s/1ZQXoWQhCOAiGVcFOZozV1g?pwd=json 提取码: json 第二部分:大数据程序编写部分(30分) 任务一、数据抽取转化部分(5分) 1、使用sqoop将MySQL的sakila数据库中的city表中city列以C开头的数据导入到hdfs…

一些写了和没写的数学!

P8114 [Cnoi2021] 六边形战士 传送 非常好玩的题! 首先你大概率看过一些“无字证明”,其中很经典的是这个: 证明:用若干个边长为 \(1\),顶角为 \(60\) 度的菱形拼成一个边长为 \(n\) 的正六边形,三个方向的菱形个数一定相等。这是一个经典的无字证明,虽然前置的说明要费…

【光照】[自发光Emission]以UnityURP为例

【从UnityURP开始探索游戏渲染】专栏-直达自发光的基本原理 $Cemissive=Memissive$ 自发光是物体表面主动发射光线的现象,在光照模型中通常作为独立于外部光源的附加项。其核心特点是不受其他光照影响,但可以影响周围环境。 实现流程‌定义发射颜色和强度‌:确定基础发光颜色…