insightface
insightface copied to clipboard
How to specify gpu
face_analysis_model_path = "pretrained_models/face_analysis"
face_analysis = FaceAnalysis(
name="",
root=face_analysis_model_path,
providers=["CUDAExecutionProvider", "CPUExecutionProvider"],
)
face_analysis.prepare(ctx_id=2, det_size=(640, 640))
gpu0 is used regardless of ctx_id setting
face_analysis = FaceAnalysis( name="", root=face_analysis_model_path, providers=["CUDAExecutionProvider", "CPUExecutionProvider"], provider_options=[{"device_id": device_id])
device_id=5
face_analysis_model_path = "pretrained_models/face_analysis"
face_analysis = FaceAnalysis(
name="",
root=face_analysis_model_path,
providers=["CUDAExecutionProvider", "CPUExecutionProvider"],
provider_options=[{"device_id": device_id}]
)
face_analysis.prepare(ctx_id=device_id, det_size=(640, 640))
still using gpu0
when the model is loaded what is the value assigned to device id, 0 or 5?
i set device_id=5, but the model is loaded into gpu0
@wzr0108 provider_options and providers should be in equals length, you should get warning for this error. The solution is remove CPUExecutionProvider or add blank dict {} on provider_options
device_id=5
face_analysis_model_path = "pretrained_models/face_analysis"
face_analysis = FaceAnalysis(
name="",
root=face_analysis_model_path,
providers=["CUDAExecutionProvider", "CPUExecutionProvider"],
provider_options=[{"device_id": device_id}, {}]
)
face_analysis.prepare(ctx_id=0, det_size=(640, 640))
and actually you don't need device_id on ctx_id, because it supposed for hard switch to CPU if value less than 0
# insightface/model_zoo/arcface_onnx.py
def prepare(self, ctx_id, **kwargs):
if ctx_id<0:
self.session.set_providers(['CPUExecutionProvider'])