这几天做头部姿态检测,在GitHub上找到一个相关项目:Ascend-Research / HeadPoseEstimation-WHENethttps://github.com/Ascend-Research/HeadPoseEstimation-WHENet
该项目在requirements.txt里说明了部分第三方库的版本:
numpy
opencv-python
tensorflow-gpu==1.12.0
keras==2.1.6
efficientnet==0.0.4
由于目前使用的anaconda安装了最新版本python3.9,不兼容以上第三方库,故在anaconda里新建了虚拟环境python3.6(起初装了虚拟环境python3.7,运行时会报错),并在该虚拟环境中用pip install 而非 conda install 命令安装以上各库(貌似不用先安装numpy,因为安装其他库时会附带numpy)。
然后运行程序报错:ImportError: DLL load failed: 找不到指定的模块
根据使用 pip 安装 TensorFlow和GPU 支持 | TensorFlow,tensorflow-gpu要搭配CUDA和cudnn使用,而且要注意版本兼容问题,于是为tensorflow-gpu1.12.0下载了CUDA9.0和cudnn7.5.0.56。
安装CUDA9.0后,将cudnn7.5.0.56的各子文件夹里的文件复制到CUDA9.0安装目录下相应名称文件夹内,然后将CUDA9.0的路径(我的是默认安装路径)添加到系统变量里(电脑-右键“属性”-高级系统设置-环境变量-系统变量-Path-编辑-新建):
然后运行程序,出现另一种报错,网上说要安装Microsoft Visual C++ Redistributable包,于是我直接安装了Microsoft Visual Studio2017。
这回程序报错变了,搜索后按照网上方法,将安装上面第三方库时附带的h5py的版本改为2.10.0,将protobuf的版本改为3.19.1,继续报错,又将tensorflow-gpu从1.12.0变为1.8.0,报错信息变为:
failed to run cuBLAS routine cublasSgemm_v2: CUBLAS_STATUS_EXECUTION_FAILED
又经过几番搜索,原来是当初安装CUDA9.0时没有装相应的补丁,于是下载第四个补丁并安装:CUDA9.0和补丁https://developer.nvidia.com/cuda-90-download-archive?target_os=Windows&target_arch=x86_64&target_version=10&target_type=exelocal
运行程序,终于不是tensorflow和CUDA的问题了,报错变为:
pyparsing AttributeError: 'version_info' object has no attribute '__version__'
搜索后将pyparsing的版本变为2.4.7后解决问题,鼓掌!
作为对上述项目说明的补充,最终我的这些库版本为numpy1.19.5、opencv-python3.4.1.15