python库 踩坑指南
一 opencv篇:
- 问题1:使用cv2读取mp4视频(无论h265或h264编码都有这种情况)时,
h264编码的视频偶尔出现ret,img = videocap.read() 读不到数据的情况;
h265编码的视频则可能出现警告:hevc @ 0x556678a95800 Could not find ref with POC - 原因:视频的帧数可能出现非整数的情况,不能使用设置从指定帧读取:
cap.set(cv2.CAP_PROP_POS_FRAMES, start_frame) # 设置初始帧
- Solution:因此尽量从头开始读,参考:
current_frame = 0
while cap.isOpened():
ret, frame = cap.read()
if ret:
if current_frame >= start_frame:
out.write(frame)
current_frame += 1
if current_frame >= end_frame:
break
else:
break
- 问题2:在pycharm中使用import cv2时,cv2.xxx无法自动补全,无法进入源码;
- 原因:opencv-python最新的4.7版本有bug
- Solution:进入cv2的源码位置,将二进制文件(cv2.abi3.so或cv2.pyd)从…/site-packages/cv2下复制一份,粘贴到上级目录…/site-packages
- 参考:https://zhuanlan.zhihu.com/p/597733611
windows为 cv2.pyd
问题3: opencv-python 默认使用的是CPU运行,想要使用GPU加速。
Solution: 官方下的安装包虽然有GPU的dll,但并没有CUDA跟OpenCL的支持的,你需要自己重新编译一次OpenCV
Ref: https://zhuanlan.zhihu.com/p/345439669
二 模型推理篇
- 问题:使用onnx模型推理时,可能会发现使用的是CUP进行推理;
- 报错内容:安装后运行报错,Fail to load libonnxruntime_providers_cuda.so with error: libcurand.so.10:cannot open shared object file: No such file or directory
正常流程:
- 完全卸载,重新安装
pip uninstall onnxruntime
pip install onnxruntime-gpu==1.16.3
- 确认GPU是否可用
print(onnxruntime.get_device()) # 输出 GPU 不一定成功
ort_session = onnxruntime.InferenceSession("model_name.onnx",providers=['CUDAExecutionProvider'])
print(ort_session.get_providers()) # 输出:['CUDAExecutionProvider', 'CPUExecutionProvider']表示成功
- 上述流程失败,需要做相关问题排查:
- CUDA版本:请确保您的CUDA版本与onnxruntime-gpu版本兼容(详见:https://onnxruntime.ai/docs/execution-providers/CUDA-ExecutionProvider.html)
- 环境变量:这是让onnxruntime找到cuda的关键一步:
# 设置PATH、LD_LIBRARY_PATH,缺什么设置什么
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
注意:/usr/local/cuda/lib64 需要替换成自己的路径,查找自己的路径方法:
sudo find / -name libcurand.so.10
实测发现:
将上述命令添加到~/.bashrc
文件中,然后使用source ~/.bashrc
命令来更新环境变量后,只能在当前终端中有效;
后调整为在pycharm中设置该环境变量,具体步骤为:(参考:https://blog.csdn.net/weixin_48962061/article/details/119151486)
这里我使用且成功的方式为,在运行—编辑配置-环境变量中添加
Name为LD_LIBRARY_PATH, Value为/usr/local/cuda/lib64:$LD_LIBRARY_PATH
至此,基本解决无法在pycharm中和终端中使用GPU推理模型的问题
三、安装混合精度训练工具apex
网上尝试的办法可能会报错:
ModuleNotFoundError: No module named 'packaging'
error: subprocess-exited-with-error
这里参考流程:
git clone https://github.com/NVIDIA/apex.git
cd apex
pip install -v --disable-pip-version-check --no-cache-dir --no-build-isolation --config-settings “--global-option=--cpp_ext” --config-settings “--global-option=--cuda_ext” ./
Ref:https://github.com/InternLM/InternLM/issues/87
`
四 MMCV篇
安装报错,原因主要是版本不匹配。(如No module named ‘mmcv._ext’)
参考官方:https://gitcode.net/mirrors/open-mmlab/mmcv/-/blob/master/README_zh-CN.md
、、
shell参考:
https://blog.csdn.net/professor_tao/article/details/125947389
https://blog.csdn.net/m0_37931718/article/details/98206877
shell编程中文手册??
**yaml参考:**https://blog.csdn.net/star_xxzeng/article/details/115030707
**log参考:**https://blog.csdn.net/u012206617/article/details/87870479