_base_ = '../../../_base_/default_runtime.py'
第一个 ../ 表示移动到posec3d/目录,第二个../ 表示移动到configs/skeleton/目录
第三个../ 表示移动到configs/目录
configs/skeleton/posec3d/rgbpose_conv3d/rgbpose_conv3d.py
中的rgbpose_conv3d.py
文件位于configs/skeleton/posec3d/rgbpose_conv3d/
这个目录下。
也就是说,rgbpose_conv3d.py
所在的当前目录是 rgbpose_conv3d/
。
在 configs/skeleton/posec3d/rgbpose_conv3d/rgbpose_conv3d.py
这个路径中:
./
表示当前目录rgbpose_conv3d/
所以, ./
相当于移动到了 rgbpose_conv3d/
目录下。
configs/base/default_runtime.py这样的话相当于default_runtime.py这个模块大家各个不同的模型可以共用
用 configs/_base_/default_runtime.py
这种相对路径来引用 default_runtime.py
模块,确实能够让不同的模型配置文件共用这个公共的运行时配置。
这种做法有几个好处:
-
提高了配置文件的复用性和可维护性。不同模型可以共享一些通用的运行时设置,减少了重复定义的工作。
-
方便后续对默认运行时配置进行统一管理和修改。只需要在
configs/_base_/default_runtime.py
中更新,所有使用它的模型配置就能一并受益。 -
增强了整个项目的模块化和解耦性。不同模型可以专注于自身的网络结构和训练参数,而无需过多关注通用的运行时设置。
-
提高了配置文件的可读性和可理解性。将通用的设置集中管理,使得各个模型的配置文件更加简洁明了。
总的来说,这种基于相对路径的模块化配置方式,体现了良好的软件设计原则,值得在实际项目中广泛应用。它不仅提高了代码的可维护性,也增强了整个系统的灵活性和扩展性。
其实简单来说这样做的目的就是为了避免重复,减少重复使用,能共用的当然可以共享使用
是类似于把default_runtime.py里面的内容赋值给变量_base_吗?
_base_ = '../../../_base_/default_runtime.py'
这行代码的作用就是将 default_runtime.py
文件中的内容赋值给变量 _base_
。
具体来说:
-
'../../../_base_/default_runtime.py'
是一个相对路径,指向了default_runtime.py
文件的位置。 -
当读取到这一行代码时,它会自动去加载
default_runtime.py
文件,并将其中的所有内容赋值给变量_base_
。 -
这样一来,
_base_
变量就相当于包含了default_runtime.py
文件中所有的配置项。 -
在当前的配置文件中,我们可以直接使用
_base_
中的配置项,而无需重复定义它们。
这种做法可以帮助我们更好地管理和组织配置文件,提高配置的复用性和可维护性。通过引入基础配置文件,我们可以将通用设置与具体模型配置分离,使得整个配置结构更加清晰和模块化。
核心:通用配置和具体模型配置分离