记录一下自己写的第一个深度学习网络

项目背景

项目中为实现对仪表显示内容的检测,包含图标UI,和显示文字.
图标是有基准图标(图片),显示文字有基准的文字(str)
视觉那边从25年3月份开始,前前后后改了三四套方案,始终不太理想,从25年8月份决定自己来搞

  • 传统视觉方案(Opencv+Halcon)
  • Yolo检测(对图标进行分类)
  • 大语言模型(图标对比)
  • PaddleOcr(文字识别对比)

各个的方案利弊

传统视觉

这里会把图标和文字进行分别处理,会经过灰度化,二值化,形态学等多种处理方法最后把模板图和拍摄图,两者相减,最后计算获得差异区域
简单场景效果尚可,但存在以下几个问题

  1. 前景背景阈值难以约定
  2. 过多的参数导致,使用者需要了解大量视觉方面的知识
  3. 复杂场景难以分割前景背景, 比如背景颜色花哨或者动态变化

当然此方案还包含了我需要根据文字字符串来生成对应的图片,还要控制好文字的间距,字号,字体.其中还包含着令人烦躁的阿拉伯语(后续帖子我会详细阐述)

Yolo检测

该方案也是我最开始想使用的方案,对图标进行分类,然后进行检测, 刚开始光是搭建环境也花费了我很大的时间.
可我最终废弃了该方案,存在以下几个问题

  1. 难以汇总所有的图标分类,且分类过于庞大(约500~700类)
  2. 不同仪表的相同类别,各不相同
  3. 数据难以收集

大语言模型

该方案前期效果没那么好,临近过年视觉部门终是调整好了模型
虽然但是,个人粗见这么个方案是高射炮打蚊子.两张4080Ti会不会有些太浪费了.

PaddleOcr

这个方案是看上去最像回事的方案,对文本文字和识别后的图像文字进行字符串比较
我也考虑过这个方案,可最终还是没有使用,因为存在这样一个问题 标注
如果单是中英文也就罢了,偏偏仪表要显示数十种语言的文字,还有大量的小语种,和我都未曾听到过的语言
可就单说常用语言,依然存在以下问题

  1. 相近文字的误识别
  2. 多空格的问题
  3. 未能检测到文本区域

或许是数据集不够的原因,中英文的准确率仅在90%,召回率更是低于80%

双向文本比对

其实也要感谢视觉部门踩了这么多的坑,在查阅大量文献后,我才最终选择了一个新的方案
其中解决了需要大量标注,使用人员的操作难度,以及资源使用的问题.
前后共计用了四个月,分别入门了Opencvsharp,PaddleOcr,Yolo,Pytorch,ML.Net
我谈不上聪明,可勤奋让我解决问题的成就感还是令人欣喜.
该方案基于论文
https://openaccess.thecvf.com/content/WACV2025/papers/Park_Text_Change_Detection_in_Multilingual_Documents_using_Image_Comparison_WACV_2025_paper.pdf
因为会存在图标和文本同时存在的情况,因此我目前阶段引入了Yolo 对图标区域和文本区域进行分割后比较
同时因该方案确保模型执行速度的问题,需要对多行文本进行分割,因此引入了PaddleOcr中的Det模块进行行分割
选了几张效果比较不错的
image
image
image

接触了少量真实样本的情况下(其中工具通过率是该方案,视觉使用的是PaddleOcr)
image

可以看到,在大多数语言的情况下都得到了较高准确率和精确率,其中误报率更是大大优于Ocr方案
其中中文过低,是因为用户提供的模板图和检测图字体不一致,粗略排查的百分比并不精准,
当然侧面也能体现出该方案的劣势, 两张文字必须几何上一致,而不能语义上一致,恰恰这是Ocr的优势

posted @ 2026-02-28 13:48  心血来潮改个名~  阅读(3)  评论(0)    收藏  举报