Instructions to use Aronuihyig/IC-WaveDrom-DSL with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- PaddleOCR
How to use Aronuihyig/IC-WaveDrom-DSL with PaddleOCR:
# Please refer to the document for information on how to use the model. # https://paddlepaddle.github.io/PaddleOCR/latest/en/version3.x/module_usage/module_overview.html
- Notebooks
- Google Colab
- Kaggle
PaddleOCR-VL-SFT-WaveDrom-LoRA
模型简介 (Model Description)
PaddleOCR-VL-SFT-WaveDrom-LoRA 是一个专为时序信号波形识别优化的视觉语言大模型(VLM)。该模型基于 PaddleOCR-VL 进行 LoRA 指令微调,能够直接“阅读”复杂的电子工程信号波形图,并精准输出结构化的 WaveDrom JSON 代码。
本模型展示了通用 OCR 基础模型在经过高质量领域数据微调后,在“图像到结构化代码(Image-to-Code)”复杂任务上的巨大潜力。它可以极大提升电子工程师、芯片设计人员在阅读时序文档、数字逻辑验证报告时的自动化效率。
性能表现 (Performance)
评估集选取真实电子工业场景中的时序波形图。在我们的评估集上,模型在综合评估标准下达到了 45.0% 的平均准确率。不同难度数据的表现如下:

专业的综合评估机制
由于波形图包含复杂的时序逻辑和密集的文本标签,且大模型在生成长代码时容易遇到长度截断(Truncation),传统的“精确匹配(Exact Match)”无法真实反映模型的视觉理解能力。为此,我们设计了一套多维特征加权评估系统来衡量模型表现:
- 结构化容错与修复:引入括号堆栈平衡算法,对因
max_tokens截断导致的残缺 JSON 进行智能修复,确保合法的数据解析。 - 信号行对齐机制:摒弃全局强匹配,采用自上而下的逐行比对,避免单行名称识别错误导致整个波形计为 0 分。
- 基于编辑距离的特征打分:
- 波形容错:合理包容波形周期的比例拉伸(如将
x====识别为x======依然保留高分)。 - 文本容错:忽略模型生成的额外空格噪音,并允许轻微的 OCR 字母漏识别。
- 波形容错:合理包容波形周期的比例拉伸(如将
- 长度惩罚机制:对模型的“漏行(遗漏波形)”或“过度生成(幻觉多出波形)”进行严厉的分数稀释惩罚。
生成示例 (Examples)
(注:模型输出的 WaveDrom JSON 可直接渲染为标准时序图)
如何使用 (How to Use)
你可以使用 paddleformers 或兼容 PaddleOCR-VL 的库来加载并使用此模型。由于使用了 FlashAttention 机制,建议在支持的环境中运行。
import paddle
from PIL import Image
from paddleformers.transformers import AutoModelForConditionalGeneration, AutoProcessor
# 加载模型与处理器
model_path = "./IC-WaveDrom-DSL"
model = AutoModelForConditionalGeneration.from_pretrained(model_path).eval()
processor = AutoProcessor.from_pretrained(model_path)
model.config._attn_implementation = "flashmask"
model.visual.config._attn_implementation = "flashmask"
# 准备输入
image = Image.open("your_waveform_image.png").convert("RGB")
messages = [{
"role": "user",
"content": [
{"type": "image", "image": image},
{"type": "text", "text": "WaveDrom Recognition:"},
]
}]
inputs = processor.apply_chat_template(
messages, tokenize=True, add_generation_prompt=True, return_dict=True, return_tensors="pd"
)
# 生成预测
with paddle.no_grad():
outputs = model.generate(**inputs, max_new_tokens=1024, pad_token_id=0, eos_token_id=2)
print(processor.decode(outputs[0].tolist()[0], skip_special_tokens=True))
训练细节 (Training Details)
- 基础模型 (Base Model): PaddleOCR-VL
- 微调方法 (Method): 监督微调 (Supervised Fine-Tuning) + LoRA
- 训练数据 (Dataset): 包含2万张合成的 WaveDrom 波形图像及其对应的 JSON 代码。数据经过难度分级(易、中、难)以提升模型泛化能力。
- 训练框架 (Frameworks):
- PaddlePaddle
- PaddleNLP /
paddleformers
致谢 (Acknowledgements)
许可证 (License)
本模型权重遵循 Apache 2.0 许可证开源。
- Downloads last month
- 52

