Replies: 1 comment
-
根据你的报错信息: KeyError: 'PP-OCRv4_mobile_det' 这个问题的根本原因是模型名称 PP-OCRv4_mobile_det 没有被正确注册到 PaddleX 的模型注册表中(即 paddlex/repo_apis/base/register.py 中的 _table 字典)。虽然 config 文件路径是正确的,但 PaddleX 在运行 train 模式时,会根据配置中的 model 名称去匹配注册的模型类,而当前这个名称没有被识别,因此报错。 你在命令行中使用的命令: python main.py -c D:/.../PP-OCRv4_mobile_det.yaml -o Global.mode=train 实际上调用了 YAML 文件中的字段 model: PP-OCRv4_mobile_det (或者类似字段),而 paddleX 并不识别这个名称。 ✅ 解决方法建议如下:
D:/anaconda3/envs/p1/Lib/site-packages/paddlex/configs/modules/text_detection/PP-OCRv4_mobile_det.yaml 检查其中的 Global.model 字段是否为 PP-OCRv4_mobile_det,若是,请确认 Paddlex 中是否有注册这个名称的模型。
D:\anaconda3\envs\p1\Lib\site-packages\paddlex\repo_apis\base\register.py 查找是否存在 "PP-OCRv4_mobile_det"(区分大小写)。如果没有,你需要手动添加一条注册语句,把该模型名称和其对应的构造函数/模块绑定起来。 例如: from paddlex.modules.det.ppocr4_det import PPOCRv4MobileDet # 举例 ModelRegistry.add_model( 注意: 📌参考信息: ✅ 可选解决方案(不建议但可试): 将 config.yaml 的 model 字段改为已有注册模型(如 FCOS 或其他),然后在 trainer 中自定义模型路径使用 PP-OCRv4 网络。但这需要深度改 paddlex 框架,不推荐。 🔗相关讨论 📌总结: Response generated by 🤖 feifei-bot | chatgpt-4o-latest |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
我在虚拟环境下的这个路径D:\anaconda3\envs\p1\Lib\site-packages\paddlex,虚拟环境的安装包括paddlepaddle和paddlex最新版,由于paddlex利用pip生成的库文件不存在main.py,我将github压缩包压缩后放在了D:\anaconda3\envs\p1\Lib\site-packages\paddlex,所以该路径下存在main.py文件。
参考https://paddlepaddle.github.io/PaddleX/latest/module_usage/tutorials/ocr_modules/text_detection.html#412下的4.1.2和4.2分别对应的官方代码python main.py -c paddlex/configs/modules/text_detection/PP-OCRv4_mobile_det.yaml -o Global.mode=check_dataset -o Global.dataset_dir=./dataset/ocr_det_dataset_examples和python main.py -c paddlex/configs/modules/text_detection/PP-OCRv4_mobile_det.yaml -o Global.mode=train -o Global.dataset_dir=./dataset/ocr_det_dataset_examples,我将第一条命令替换为了python main.py -c D:/anaconda3/envs/p1/Lib/site-packages/paddlex/configs/modules/text_detection/PP-OCRv4_mobile_det.yaml -o Global.mode=check_dataset -o Global.dataset_dir=D:/anaconda3/envs/p1/Lib/site-packages/paddlex/dataset/ocr_det_dataset_examples
,该条命令可以成功运行,但第二条我执行的命令python main.py -c D:/anaconda3/envs/p1/Lib/site-packages/paddlex/configs/modules/text_detection/PP-OCRv4_mobile_det.yaml -o Global.mode=train -o Global.dataset_dir=D:/anaconda3/envs/p1/Lib/site-packages/paddlex/dataset/ocr_det_dataset_examples
,与第一条我执行的命令区别仅在Global.mode的区别,这一条发生了错误,报错信息如下:
(p1) D:\anaconda3\envs\p1\Lib\site-packages\paddlex>python main.py -c D:/anaconda3/envs/p1/Lib/site-packages/paddlex/configs/modules/text_detection/PP-OCRv4_mobile_det.yaml -o Global.mode=train -o Global.dataset_dir=D:/anaconda3/envs/p1/Lib/site-packages/paddlex/dataset/ocr_det_dataset_examples
Traceback (most recent call last):
File "D:\anaconda3\envs\p1\lib\site-packages\paddlex\repo_apis\base\config.py", line 30, in _create_config
model_info = get_registered_model_info(model_name)
File "D:\anaconda3\envs\p1\lib\site-packages\paddlex\repo_apis\base\register.py", line 78, in query
return self._table[prim_key]
KeyError: 'PP-OCRv4_mobile_det'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "D:\anaconda3\envs\p1\lib\site-packages\paddlex\utils\result_saver.py", line 29, in wrap
result = func(self, *args, **kwargs)
File "D:\anaconda3\envs\p1\lib\site-packages\paddlex\engine.py", line 41, in run
self._model.train()
File "D:\anaconda3\envs\p1\lib\site-packages\paddlex\model.py", line 100, in train
trainer = build_trainer(self._config)
File "D:\anaconda3\envs\p1\lib\site-packages\paddlex\modules\base\trainer.py", line 43, in build_trainer
return BaseTrainer.get(model_name)(config)
File "D:\anaconda3\envs\p1\lib\site-packages\paddlex\modules\base\trainer.py", line 65, in init
self.pdx_config, self.pdx_model = build_model(
File "D:\anaconda3\envs\p1\lib\site-packages\paddlex\modules\base\build_model.py", line 32, in build_model
config = Config(model_name, config_path)
File "D:\anaconda3\envs\p1\lib\site-packages\paddlex\repo_apis\base\config.py", line 32, in _create_config
raise UnsupportedParamError(
paddlex.utils.errors.others.UnsupportedParamError: 'PP-OCRv4_mobile_det' is not a registered model name.
我不认为PP-OCRV4_mobile_det是错误的名称。
Beta Was this translation helpful? Give feedback.
All reactions