在这个路径中使用configs/rgbpose_conv3d/pose_only.py这个配置文件model = dict(
type='Recognizer3D',直接就使用Recognizer3D这个是什么语法?不需要import Recognizer3D所在路径吗?
在使用
configs/rgbpose_conv3d/pose_only.py
这个配置文件中直接使用model = dict(type='Recognizer3D')
这种语法,确实不需要专门导入Recognizer3D
所在的模块路径。这背后有一些设计原理和机制:
在前面提到的
@RECOGNIZERS.register_module()
装饰器机制中,Recognizer3D
类已经被注册到了RECOGNIZERS
模块中。当使用配置文件加载模型时,配置解析器会自动根据
type
字段在RECOGNIZERS
模块中查找对应的类。也就是说,只要
Recognizer3D
类被注册到了RECOGNIZERS
模块中,就可以在配置文件中直接使用type='Recognizer3D'
来创建这个模型,无需额外导入。这种设计方式有几个好处:
- 配置文件更加简洁和声明式,不需要在多个地方导入类。
- 模型的注册和使用被解耦,降低了耦合度。
- 新增模型时只需要注册到
RECOGNIZERS
中,其他地方就可以直接使用。总的来说,这种基于注册机制的配置文件使用方式,充分体现了可扩展性和模块化的软件设计原则。开发者只需要关注模型的实现和注册,而不需要过多地处理依赖和导入问题。这样可以让整个系统更加灵活和可维护。
pyskl/pyskl/models/recognizers/recognizer3d.py at main · kennymckormick/pyskl · GitHub
pyskl/configs/rgbpose_conv3d/pose_only.py at main · kennymckormick/pyskl · GitHub