阿里 魔塔 modelscope 框架的一些理解

重点在modelscope

modelscope框架设计思路

modelscope的设计思路是基于插件注册的思维
最无语的是它会在运行开始时注册所有插件浪费时间空间资源,
然后再根据.json配置文件一个一个构建需要的插件,最后组成一个pipline

注册是如何进行的呢?
首先初始化一个注册表

PREDICTORS = Registry('predictor')

然后通过装饰器注册模块

@PREDICTORS.register_module()
class FaceKeypointsPredictor(PredictorV2):

这样就是注册完毕,后面通过configuration.json构建各个组件
可以自己看一下配置文件的指南:
ModelScope Configuration详解
本文简单写一下个人理解
一个推理pipline的主要组成:

  • framework(必填): 模型运行所需的框架, 例如pytorch,tensorflow,kaldi等。
  • task(必填): 模型所支持的任务类型,可以是str或者 str列表。
  • pipeline(必选): 推理使用的pipeline类型。
  • model (可选): 模型实例化相关参数配置,具体参数请直接参考对应模型库的configuration.json示例。
  • dataset(可选): 训练评估过程中使用的数据集配置信息。
  • preprocessor(可选): 训练评估过程中使用的预处理配置
  • train(可选):用以配置训练过程中的超参数,例如模型保存目录、训练轮数、优化器、学习率等参数。
  • evaluation(可选): 用以配置评估过程中数据读取、评估指标等参数。

其实可以灵活调整, 举个例子:
pipline是一系列操作的集合,当只有一个操作时:

"pipeline": {
        "type": "mobilenet_face-2d-keypoints_alignment",
        "predictor_config": {
            "type": "FaceKeypointsPredictor"
        }

当pipline作为数据预处理操作时,由好几个操作集成:

"pipeline": [
        {"type":"FaceKeypointNorm","input_size":96},
        {"type":"MMToTensor"},
        {"type":"NormalizeTensor","mean":[0.4076,0.458,0.485],"std":[1.0,1.0,1.0]},
        {"type":"Collect","keys":["img","target_point","target_point_mask","target_pose","target_pose_mask"]}
    ]

type是一个操作的名字,一般一个操作是一个类,并且一般与类同名,后面跟着的则是类的参数,在构建时调用build_from_cfg函数从注册表中用type名搜索类并通过参数实例化
比如模型的构建:

"model": {
        "type": "face-2d-keypoints",
        "backbone": {...},
        "keypoint_head": {
        },
        "pose_head": {
            }
        },
        "__easycv_arch__": {
            "type": "FaceKeypoint"
        }
},

可以看到模型face-2d-keypointsbackbone,keypoint_head,pose_head构成
再根据官网的结构图可以验证
在这里插入图片描述

### 解决 PP-OCRv4 出现的错误 当遇到 `WARNING: The pretrained params backbone.blocks2.0.dw_conv.lab.scale not in model` 这样的警告时,这通常意味着预训练模型中的某些参数未能匹配到当前配置下的模型结构中[^2]。 对于此问题的一个有效解决方案是采用特定配置文件来适配预训练权重。具体操作方法如下: 通过指定配置文件 `ch_PP-OCRv4_det_student.yml` 并利用已有的最佳精度预训练模型 (`best_accuracy`) 来启动训练过程可以绕过上述不兼容的问题。执行命令如下所示: ```bash python3 tools/train.py -c configs/det/ch_PP-OCRv4/ch_PP-OCRv4_det_student.yml ``` 该方案不仅解决了参数缺失带来的警告,还能够继续基于高质量的预训练成果进行微调,从而提升最终检测效果。 关于蒸馏的概念,在机器学习领域内指的是将大型复杂网络(teacher 模型)的知识迁移到小型简单网络(student 模型)。这里 student 和 teacher 的关系是指两个不同规模或架构的神经网络之间的指导与被指导的关系;其中 teacher 已经经过充分训练并具有良好的性能,而 student 则试图模仿前者的行为模式以达到相似的效果但保持更高效的计算特性。 至于提到的 `Traceback` 错误信息部分,由于未提供具体的跟踪堆栈详情,难以给出针对性建议。不过一般而言,这报错往往涉及代码逻辑错误或是环境配置不当等问题。为了更好地帮助定位和解决问题,推荐记录完整的异常日志,并仔细检查最近修改过的代码片段以及确认依赖库版本的一致性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值