惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

C
Check Point Blog
罗磊的独立博客
量子位
Microsoft Azure Blog
Microsoft Azure Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
J
Java Code Geeks
M
MIT News - Artificial intelligence
月光博客
月光博客
IT之家
IT之家
D
DataBreaches.Net
A
About on SuperTechFans
博客园 - 三生石上(FineUI控件)
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Last Week in AI
Last Week in AI
D
Docker
The GitHub Blog
The GitHub Blog
B
Blog
V
Visual Studio Blog
博客园 - Franky
N
Netflix TechBlog - Medium
博客园 - 【当耐特】
Martin Fowler
Martin Fowler
博客园 - 聂微东
U
Unit 42

机器学习

llama.cpp 服务开启 embedding 是否稳定? 深度学习的 LLM 就像受伤的大脑 大语言模型会被其他技术取代吗? llm 训练最 dirty work 的就是数据处理! 做机器学习强烈推荐看看 MIT 18.S096 矩阵微积分 求助微信聊天记录训练 ai 请问 AI 训练大佬 : 目前大家不写 blog, stackoverflow 等,如何训练新的优质数据,还是拿 AI 数据训练自己? 想要真正理解目前的深度学习(不仅是打杂的炼丹师),需要怎样的数学基础 怎样加快 onnx 模型在 cpu 上的推理速度啊 AI 公司瞄准的顺序是浏览器、输入法、操作系统 有什么能本地跑的机器学习项目吗? BERT 论文复现: 经验 & 教训 求推荐一些 LLM/深度学习方面打基础的书籍或者课程 2025 年底,如果想做一个图像分类模型,用什么模型来微调比较好 目前使用 yolov8 训练了一个目标检测模型,但是上线使用效果不是很好,怎么优化? 最近看 1-2 万主机发现 3090 还是能打的 想做有声小说声音克隆, 3060Ti 能扛得住吗? [AI Glimpse 科普系列] KV Cache 的原理推导与代码实现(基于 GPT2) 关于 OCR 以及以图找图识别 这类型的英语学习视频,是用哪个模型生成? 怎么实现提取俩个图片的一些特征,然后进行特征比对 检测画面中存在漏水,给点思路 学习 AI, 跑下模型, 应该用什么 N 卡? 有没有大佬了解机器学习的 mlops 框架或者平台 如何把本地文件作为大模型的知识库 使用大语言模型进行文本分类任务需要微调吗? lima 和 colima 居然是有关系的 gpt4o 图像生成的技术讨论(自回归模型又好起来了?) [AI Glimpse 科普系列] 不到 100 行 Python 代码从零实现 LLM 的推测采样算法 什么?唠唠嗑就能生成游戏关卡! Unreal Engine + MCP 来了!
求助 使用 ddddocr 自训练模型场景下,遇到了 onnxruntime.ca...
fortytwo · 2025-11-13 · via 机器学习

使用 ddddocr 自训练模型场景下,遇到的问题

(dddd-trainer) PS C:\Users\12460\Documents\project\dddd_trainer> uv run .\test.py
2025-11-13 00:35:09.0336981 [E:onnxruntime:, sequential_executor.cc:572 onnxruntime::ExecuteKernel] Non-zero status code returned while running SequenceAt node. Name:'n0_424' Status Message: Invalid sequence index (57) specified for sequence of size (57)
Traceback (most recent call last):
  File "C:\Users\12460\Documents\project\dddd_trainer\test.py", line 14, in <module>
    res = ocr.classification(image)
          ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\12460\Documents\project\dddd_trainer\.venv\Lib\site-packages\ddddocr\__init__.py", line 2643, in classification
    ort_outs = self.__ort_session.run(None, ort_inputs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\12460\Documents\project\dddd_trainer\.venv\Lib\site-packages\onnxruntime\capi\onnxruntime_inference_collection.py", line 287, in run
    return self._sess.run(output_names, input_feed, run_options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
onnxruntime.capi.onnxruntime_pybind11_state.InvalidArgument: [ONNXRuntimeError] : 2 : INVALID_ARGUMENT : Non-zero status code returned while running SequenceAt node. Name:'n0_424' Status Message: Invalid sequence index (57) specified for sequence of size (57)

测试的训练集数据: https://wwm.lanzoum.com/itczd0b5z3yj

GitHub: https://github.com/sml2h3/dddd_trainer.git

# test.py
import ddddocr

ocr = ddddocr.DdddOcr(
    det=False,
    ocr=False,
    show_ad=False,
    import_onnx_path=r"C:\Users\12460\Documents\project\dddd_trainer\projects\test_2\models\test_2_1.0_23_6000_2025-11-13-00-06-13.onnx",
    charsets_path=r"C:\Users\12460\Documents\project\dddd_trainer\projects\test_2\models\charsets.json",
)

with open(r"C:\Users\12460\Downloads\1112\new\PKKQ_1578462523867.jpg", "rb") as f:
    image = f.read()

res = ocr.classification(image)
print(res)

操作日志

(dddd-trainer) PS C:\Users\12460\Documents\project\dddd_trainer> uv run .\app.py create   test_3
2025-11-13 00:29:53.496 | INFO     | __main__:__init__:12 -
Hello baby~
2025-11-13 00:29:53.497 | INFO     | __main__:create:15 -
Create Project ----> test_3
2025-11-13 00:29:53.497 | INFO     | utils.project_manager:create_project:13 - Creating Directory... ----> C:\Users\12460\Documents\project\dddd_trainer\projects\test_3
2025-11-13 00:29:53.497 | INFO     | utils.project_manager:create_project:20 - Creating Directory... ----> C:\Users\12460\Documents\project\dddd_trainer\projects\test_3\models
2025-11-13 00:29:53.498 | INFO     | utils.project_manager:create_project:24 - Creating Directory... ----> C:\Users\12460\Documents\project\dddd_trainer\projects\test_3\cache
2025-11-13 00:29:53.498 | INFO     | utils.project_manager:create_project:28 - Creating Directory... ----> C:\Users\12460\Documents\project\dddd_trainer\projects\test_3\checkpoints
2025-11-13 00:29:53.498 | INFO     | utils.project_manager:create_project:32 - Creating CRNN Config File... ----> C:\Users\12460\Documents\project\dddd_trainer\projects\test_3\config.yaml
2025-11-13 00:29:53.500 | INFO     | utils.project_manager:create_project:36 - Create Project Success! ----> test_3
(dddd-trainer) PS C:\Users\12460\Documents\project\dddd_trainer> uv run .\app.py cache test_3 C:\Users\12460\Downloads\1112\images
2025-11-13 00:30:10.911 | INFO     | __main__:__init__:12 -
Hello baby~
2025-11-13 00:30:10.913 | INFO     | __main__:cache:20 -
Caching Data ----> test_3
Path ----> C:\Users\12460\Downloads\1112\images
2025-11-13 00:30:10.919 | INFO     | utils.cache_data:__get_label_from_name:36 -
Files number is 8599.
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 8599/8599 [00:00<00:00, 1379439.31it/s]
2025-11-13 00:30:10.926 | INFO     | utils.cache_data:__collect_data:92 -
Coolect labels is [" ", "1", "D", "Q", "F", "R", "P", "5", "9", "6", "X", "G", "H", "S", "V", "Z", "3", "T", "K", "J", "W", "2", "8", "4", "U", "Y", "E", "I", "C", "B", "L", "A", "7"]
2025-11-13 00:30:10.929 | INFO     | utils.cache_data:__collect_data:96 -
Writing Cache Data!
2025-11-13 00:30:10.929 | INFO     | utils.cache_data:__collect_data:98 -
Cache Data Number is 8599
2025-11-13 00:30:10.929 | INFO     | utils.cache_data:__collect_data:99 -
Writing Train and Val File.
2025-11-13 00:30:10.931 | INFO     | utils.cache_data:__collect_data:116 -
Train Data Number is 8342
2025-11-13 00:30:10.932 | INFO     | utils.cache_data:__collect_data:117 -
Val Data Number is 257
(dddd-trainer) PS C:\Users\12460\Documents\project\dddd_trainer> uv run .\app.py train test_3
2025-11-13 00:30:26.382 | INFO     | __main__:__init__:12 -
Hello baby~
2025-11-13 00:30:26.383 | INFO     | __main__:train:26 -
Start Train ----> test_3

2025-11-13 00:30:26.384 | INFO     | utils.train:__init__:40 -
Taget:
min_Accuracy: 0.97
min_Epoch: 20
max_Loss: 0.05
2025-11-13 00:30:26.384 | INFO     | utils.train:__init__:45 -
USE GPU ----> 0
2025-11-13 00:30:26.384 | INFO     | utils.train:__init__:52 -
Search for history checkpoints...
2025-11-13 00:30:26.384 | INFO     | utils.train:__init__:69 -
Empty history checkpoints
2025-11-13 00:30:26.384 | INFO     | utils.train:__init__:71 -
Building Net...
C:\Users\12460\Documents\project\dddd_trainer\.venv\Lib\site-packages\torch\nn\modules\rnn.py:123: UserWarning: dropout option adds dropout after all but last recurrent layer, so non-zero dropout expects num_layers greater than 1, but got dropout=0.3 and num_layers=1
  warnings.warn(
2025-11-13 00:30:26.400 | INFO     | utils.train:__init__:75 - Net(
  (cnn): DdddOcr(
    (cnn): Sequential(
      (conv0): Conv2d(1, 16, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
      (relu0): ReLU(inplace=True)
      (pooling0): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
      (conv1): Conv2d(16, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
      (relu1): ReLU(inplace=True)
      (pooling1): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
      (conv2): Conv2d(32, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
      (batchnorm2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu2): ReLU(inplace=True)
      (conv3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
      (relu3): ReLU(inplace=True)
      (pooling2): MaxPool2d(kernel_size=(2, 2), stride=(2, 1), padding=(0, 1), dilation=1, ceil_mode=False)
      (conv4): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
      (batchnorm4): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu4): ReLU(inplace=True)
      (conv5): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
      (relu5): ReLU(inplace=True)
      (pooling3): MaxPool2d(kernel_size=(2, 2), stride=(2, 1), padding=(0, 1), dilation=1, ceil_mode=False)
      (conv6): Conv2d(128, 128, kernel_size=(2, 2), stride=(1, 1))
      (batchnorm6): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (relu6): ReLU(inplace=True)
    )
  )
  (lstm): LSTM(384, 384, dropout=0.3, bidirectional=True)
  (loss): CTCLoss()
  (fc): Linear(in_features=768, out_features=33, bias=True)
)
2025-11-13 00:30:26.400 | INFO     | utils.train:__init__:76 -
Building End
2025-11-13 00:30:26.509 | INFO     | utils.train:__init__:81 -
Get Data Loader...
2025-11-13 00:30:26.510 | INFO     | utils.load_cache:__init__:102 -
Charsets is [" ", "1", "D", "Q", "F", "R", "P", "5", "9", "6", "X", "G", "H", "S", "V", "Z", "3", "T", "K", "J", "W", "2", "8", "4", "U", "Y", "E", "I", "C", "B", "L", "A", "7"]
2025-11-13 00:30:26.510 | INFO     | utils.load_cache:__init__:106 -
Image Resize is [-1, 64]
2025-11-13 00:30:26.510 | INFO     | utils.load_cache:__init__:118 -
Image Path is C:\Users\12460\Downloads\1112\images
2025-11-13 00:30:26.511 | INFO     | utils.load_cache:__init__:25 -
Reading Cache File... ----> C:\Users\12460\Documents\project\dddd_trainer\projects\test_3\cache\cache.train.tmp
2025-11-13 00:30:26.512 | INFO     | utils.load_cache:__init__:30 -
Read Cache File End! Caches Num is 8342.
2025-11-13 00:30:26.512 | INFO     | utils.load_cache:__init__:25 -
Reading Cache File... ----> C:\Users\12460\Documents\project\dddd_trainer\projects\test_3\cache\cache.val.tmp
2025-11-13 00:30:26.513 | INFO     | utils.load_cache:__init__:30 -
Read Cache File End! Caches Num is 257.
2025-11-13 00:30:26.513 | INFO     | utils.train:__init__:87 -
Get Data Loader End!
2025-11-13 00:30:30.161 | INFO     | utils.train:start:108 - [2025-11-13-00_30_30]      Epoch: 0        Step: 100       LastLoss: 3.5620920658111572    AvgLoss: 4.684982450008392      Lr: 0.01
2025-11-13 00:30:33.520 | INFO     | utils.train:start:108 - [2025-11-13-00_30_33]      Epoch: 0        Step: 200       LastLoss: 3.629438877105713     AvgLoss: 3.591061780452728      Lr: 0.01
2025-11-13 00:30:36.940 | INFO     | utils.train:start:108 - [2025-11-13-00_30_36]      Epoch: 1        Step: 300       LastLoss: 3.478365659713745     AvgLoss: 3.574828338623047      Lr: 0.01
2025-11-13 00:30:40.677 | INFO     | utils.train:start:108 - [2025-11-13-00_30_40]      Epoch: 1        Step: 400       LastLoss: 3.725684881210327     AvgLoss: 3.5830772018432615     Lr: 0.01
2025-11-13 00:30:44.054 | INFO     | utils.train:start:108 - [2025-11-13-00_30_44]      Epoch: 1        Step: 500       LastLoss: 3.6253044605255127    AvgLoss: 3.5884796619415282     Lr: 0.01
...
2025-11-13 00:33:39.470 | INFO     | utils.train:start:108 - [2025-11-13-00_33_39]      Epoch: 19       Step: 5200      LastLoss: 0.0010958763305097818 AvgLoss: 0.0016259117133449763  Lr: 0.009604
2025-11-13 00:33:44.079 | INFO     | utils.train:start:108 - [2025-11-13-00_33_44]      Epoch: 20       Step: 5300      LastLoss: 0.0009493848774582148 AvgLoss: 0.0010536348074674606  Lr: 0.009604
2025-11-13 00:33:48.775 | INFO     | utils.train:start:108 - [2025-11-13-00_33_48]      Epoch: 20       Step: 5400      LastLoss: 0.0010489150881767273 AvgLoss: 0.0012551895825890823  Lr: 0.009604
2025-11-13 00:33:53.303 | INFO     | utils.train:start:108 - [2025-11-13-00_33_53]      Epoch: 21       Step: 5500      LastLoss: 0.0011606556363403797 AvgLoss: 0.000944445063942112   Lr: 0.009604
2025-11-13 00:33:57.803 | INFO     | utils.train:start:108 - [2025-11-13-00_33_57]      Epoch: 21       Step: 5600      LastLoss: 0.0007763305329717696 AvgLoss: 0.0009715505503118038  Lr: 0.009604
2025-11-13 00:34:02.339 | INFO     | utils.train:start:108 - [2025-11-13-00_34_02]      Epoch: 21       Step: 5700      LastLoss: 0.0012899019056931138 AvgLoss: 0.0015180535794934258  Lr: 0.009604
2025-11-13 00:34:06.902 | INFO     | utils.train:start:108 - [2025-11-13-00_34_06]      Epoch: 22       Step: 5800      LastLoss: 0.0009287762804888189 AvgLoss: 0.0015425046352902428  Lr: 0.009604
2025-11-13 00:34:11.336 | INFO     | utils.train:start:108 - [2025-11-13-00_34_11]      Epoch: 22       Step: 5900      LastLoss: 0.0007486791582778096 AvgLoss: 0.0011510271998122334  Lr: 0.009604
2025-11-13 00:34:15.845 | INFO     | utils.train:start:137 - [2025-11-13-00_34_15]      Epoch: 23       Step: 6000      LastLoss: 0.0006851484067738056 AvgLoss: 0.0009158773045055568  Lr: 0.009604    Acc: 1.0
2025-11-13 00:34:15.846 | INFO     | utils.train:start:143 -
Training Finished!Exporting Model...
C:\Users\12460\Documents\project\dddd_trainer\nets\__init__.py:216: UserWarning: # 'dynamic_axes' is not recommended when dynamo=True, and may lead to 'torch._dynamo.exc.UserError: Constraints violated.' Supply the 'dynamic_shapes' argument instead if export is unsuccessful.
  torch.onnx.export(net, dummy_input, graph_path, export_params=True, verbose=False,
W1113 00:34:16.515000 3024 .venv\Lib\site-packages\torch\onnx\_internal\exporter\_compat.py:114] Setting ONNX exporter to use operator set version 18 because the requested opset_version 12 is a lower version than we have implementations for. Automatic version conversion will be performed, which may not be successful at converting to the requested version. If version conversion is unsuccessful, the opset version of the exported model will be kept at 18. Please consider setting opset_version >=18 to leverage latest ONNX features
The model version conversion is not supported by the onnxscript version converter and fallback is enabled. The model will be converted using the onnx C API (target version: 12).
Failed to convert the model to the target version 12 using the ONNX C API. The model was not modified
Traceback (most recent call last):
  File "C:\Users\12460\Documents\project\dddd_trainer\.venv\Lib\site-packages\onnxscript\version_converter\__init__.py", line 127, in call
    converted_proto = _c_api_utils.call_onnx_api(
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\12460\Documents\project\dddd_trainer\.venv\Lib\site-packages\onnxscript\version_converter\_c_api_utils.py", line 65, in call_onnx_api
    result = func(proto)
             ^^^^^^^^^^^
  File "C:\Users\12460\Documents\project\dddd_trainer\.venv\Lib\site-packages\onnxscript\version_converter\__init__.py", line 122, in _partial_convert_version
    return onnx.version_converter.convert_version(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\12460\Documents\project\dddd_trainer\.venv\Lib\site-packages\onnx\version_converter.py", line 39, in convert_version
    converted_model_str = C.convert_version(model_str, target_version)
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
RuntimeError: D:\a\onnx\onnx\onnx/version_converter/BaseConverter.h:68: adapter_lookup: Assertion `false` failed: No Adapter From Version $18 for Split
Skipping constant folding for op Split with multiple outputs.
Skipping constant folding for op Split with multiple outputs.
Applied 3 of general pattern rewrite rules.
Skipping constant folding for op Split with multiple outputs.
Skipping constant folding for op Split with multiple outputs.
2025-11-13 00:34:45.655 | INFO     | utils.train:start:159 -
Export Finished!Using Time: 3.816666666666667min
(dddd-trainer) PS C:\Users\12460\Documents\project\dddd_trainer> uv run .\test.py
2025-11-13 00:35:09.0336981 [E:onnxruntime:, sequential_executor.cc:572 onnxruntime::ExecuteKernel] Non-zero status code returned while running SequenceAt node. Name:'n0_424' Status Message: Invalid sequence index (57) specified for sequence of size (57)
Traceback (most recent call last):
  File "C:\Users\12460\Documents\project\dddd_trainer\test.py", line 14, in <module>
    res = ocr.classification(image)
          ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\12460\Documents\project\dddd_trainer\.venv\Lib\site-packages\ddddocr\__init__.py", line 2643, in classification
    ort_outs = self.__ort_session.run(None, ort_inputs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\12460\Documents\project\dddd_trainer\.venv\Lib\site-packages\onnxruntime\capi\onnxruntime_inference_collection.py", line 287, in run
    return self._sess.run(output_names, input_feed, run_options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
onnxruntime.capi.onnxruntime_pybind11_state.InvalidArgument: [ONNXRuntimeError] : 2 : INVALID_ARGUMENT : Non-zero status code returned while running SequenceAt node. Name:'n0_424' Status Message: Invalid sequence index (57) specified for sequence of size (57)