if not self.predictor:
self.predictor = predictor or self._smart_load("predictor")(overrides=args, _callbacks=self.callbacks)
self.predictor.setup_model(model=self.model, verbose=is_cli)
else: # only update args if predictor is already setup
self.predictor.args = get_cfg(self.predictor.args, args)
if "project" in args or "name" in args:
self.predictor.save_dir = get_save_dir(self.predictor.args)
if prompts and hasattr(self.predictor, "set_prompts"): # for SAM-type models
self.predictor.set_prompts(prompts)
return self.predictor.predict_cli(source=source) if is_cli else self.predictor(source=source, stream=stream)
检查是否有可用的预测器,如果没有则进行加载。如果已经有可用的预测器,则更新预测器的参数。如果传入了prompts参数,则调用预测器的set_prompts方法设置prompts。
最后,函数将返回预测器对输入source的预测结果,如果is_cli为True,则以命令行的形式返回结果;否则以流的形式返回结果。