Mediapipe==0.10.9如何调用GPU加速?CUDA利用率为0求助
解决CUDA利用率为0及Mediapipe GPU加速问题
一、先盯紧环境版本匹配
- TF2.10.0必须搭配CUDA 11.2和CuDNN 8.1.x,版本差一点都可能导致GPU只被识别但不实际干活。别只看能检测到CUDA,得严格对应版本号。
- 检查系统环境变量:Windows下确认
CUDA_PATH指向正确版本,PATH里包含CUDA的bin目录;Linux要确保LD_LIBRARY_PATH包含CuDNN的库路径,避免被其他版本的CUDA覆盖。
二、验证TF/Torch是否真能调用GPU
- TensorFlow测试代码:
输出import tensorflow as tf print(tf.config.list_physical_devices('GPU')) print(tf.test.is_gpu_available()) # 运行简单GPU运算看设备 a = tf.random.normal([1000,1000]) b = tf.random.normal([1000,1000]) c = tf.matmul(a,b) print(c.device)/GPU:0才算TF能正常调用GPU,否则得重新调整环境。 - PyTorch测试代码:
输出import torch print(torch.cuda.is_available()) print(torch.cuda.device_count()) # 测试GPU运算 x = torch.randn(1000,1000).cuda() y = torch.randn(1000,1000).cuda() z = torch.matmul(x,y) print(z.device)cuda:0才是正常状态,否则排查环境配置问题。
三、Mediapipe GPU加速的核心配置
- 安装正确的包:必须装
mediapipe-gpu,而非默认的mediapipe(CPU版)。直接执行pip install mediapipe-gpu,版本不兼容时可指定具体版本,比如mediapipe-gpu==0.9.1.0。 - 初始化时强制启用GPU:
人脸检测、姿态估计等其他Mediapipe任务同理,初始化时必须添加import mediapipe as mp mp_hands = mp.solutions.hands hands = mp_hands.Hands( static_image_mode=False, max_num_hands=2, min_detection_confidence=0.5, min_tracking_confidence=0.5, model_complexity=1, # 关键:指定使用GPU设备 device=mp.tasks.BaseOptions.Device.GPU )device=mp.tasks.BaseOptions.Device.GPU,否则默认用CPU。 - 减少数据跨设备传输:输入图像尽量按Mediapipe要求的格式直接传入,避免在CPU和GPU之间频繁拷贝数据,批量处理时一次性将数据喂给GPU。
四、系统层面的GPU状态排查
- 检查GPU是否被占用:用
nvidia-smi命令(Windows/Linux通用)查看当前GPU使用率和运行进程,关闭占用GPU的其他程序(如游戏、其他AI训练进程)。 - 确认显存是否充足:如果模型所需显存超过GPU剩余显存,TF/Torch会自动切换到CPU运行,导致利用率为0。用
nvidia-smi查看显存使用情况,不够的话就缩小输入图像尺寸,或者把Mediapipe的model_complexity从2降到1甚至0,能大幅减少显存占用。
内容的提问来源于stack exchange,提问作者cong zeming
相关产品推荐
相关产品推荐

