GroundingSam,Hydra始终找不到路径?hydra.errors.MissingConfigException: Cannot find primary config XXX

1. 我本地下好了配置文件,但是想用SAM2VideoPredictor.from_pretrained导入时,它还是会从huggingface上下载,怎么办?

假设你本地下好了 sam 模型及其配置文件(.yaml),当你想本地导入时:

from sam2.sam2_video_predictor import SAM2VideoPredictor

# ...

predictor = SAM2VideoPredictor.from_pretrained("facebook/sam2-hiera-base-plus", device=device)

# ...

"facebook/sam2-hiera-base-plus"

这个参数一改就错,因为源代码中默认直接从 huggingface 下载:

@classmethod
def from_pretrained(cls, model_id: str = None, **kwargs) -> "SAM2VideoPredictor":
    from sam2.build_sam import build_sam2_video_predictor_hf

    sam_model = build_sam2_video_predictor_hf(model_id, **kwargs)
    return sam_model
def build_sam2_video_predictor_hf(model_id, **kwargs):
    config_name, ckpt_path = _hf_download(model_id)

    return build_sam2_video_predictor(
        config_file=config_name, ckpt_path=ckpt_path, **kwargs
    )

 所以,这就要求我们稍微修改一下源代码,使得跳过这一行:

config_name, ckpt_path = _hf_download(model_id)

以下是我的修改版本:

def build_sam2_video_predictor_hf(model_id, config_name = None, ckpt_path = None, **kwargs):
    if config_name is not None and ckpt_path is None:
        config_name, ckpt_path = _hf_download(model_id, **kwargs)

    return build_sam2_video_predictor(
        config_file=config_name, ckpt_path=ckpt_path, **kwargs
    )

 以及之前的 from_pretrained 方法也要加一个默认参数

def from_pretrained(cls, model_id: str = None, **kwargs) -> "SAM2VideoPredictor":

你直接传入 config_name 和 ckpt_path 即可,这俩一个是 .yaml 路径,一个是 .pt 路径,比如这是我传入的方式。

predictor = SAM2VideoPredictor.from_pretrained(config_name = "configs/sam2.1/sam2.1_hiera_l.yaml", 
                                               ckpt_path = "/userHome/drama/DRAMA2/Method/dependencies/small/sam2.1_hiera_large.pt",
                                                local_files_only=True,)

2. 我传入这个 sam2.1_hiera_l.yaml 路径咋就是不行呢,老说没找到路径?

报错如下:

hydra.errors.MissingConfigException: Cannot find primary config 'file:///userHome/drama/DRAMA2/Grounded-SAM-2/sam2/sam2_hiera_b+.yaml'. Check that it's in your config search path.

Config search path:
        provider=hydra, path=pkg://hydra.conf
        provider=main, path=pkg://sam2
        provider=schema, path=structured://

直接导你的相对路径即可,就是从你的groundingsam的包开始,导入相对路径。比如我是这样导的:

config_name = "configs/sam2.1/sam2.1_hiera_l.yaml"

而我本身的这个配置文件的绝对路径是:

/userHome/drama/DRAMA2/Grounded-SAM-2/configs/sam2.1/sam2.1_hiera_l.yaml

也就是从你的包 Grounded-SAM-2开始的相对路径。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值