pip 安装 GFPGAN 遇到的一些问题以及解决方案
最近计划利用 GFPGAN 实现某种功能。在安装 GFPGAN 的过程中遇到了一系列困难,在深入了解后终于完成了任务。为了帮助其他人在这一过程中节省时间并避免犯错,在此将收集到的一系列问题及解决方法整理如下,并希望能为正在 struggles with GFPGAN 安装的朋友们提供一些建议。
环境准备
在安装 GFPGAN 之前做好环境 preparations 是非常重要的;这对于避免 many potential problems 是至关重要的.
Python 版本建议
推荐采用 Python 3.7至3.10版本,并因 GFPGAN 在这些版本中进行了充分测试与验证而具有较好的兼容性。你可参考以下指令获取当前安装的Python版本:
python --version
可从Python 官方网站获取并安装正确的版本。
创建新的虚拟环境
为了避免与系统中已有的Python包产生冲突,请您谨慎考虑后再创建一个新的虚拟环境
Windows 系统
python -m venv myenv
.\myenv\Scripts\activate
Linux/Mac 系统
python -m venv myenv
source myenv/bin/activate
在这一位置上设置的变量标识符 myenv 赋予了虚拟环境的身份。您可以在这一位置上设置的变量标识符 myenv 的基础上根据个人偏好选择不同的名称来替代当前设置。当您激活这个虚拟环境时,所有后续的操作将被限制在独立于其他虚拟环境的独特空间中。
当然也可以使用pycharm直接创建使用
更新 pip 和 setuptools
建议在安装过程中使用当前最新的pip和setuptools这将有助于规避由于旧版本可能导致的安装问题请按照如下步骤操作
python -m pip install --upgrade pip setuptools
安装过程中遇到的问题及解决方案
问题一:缺少 numpy 模块
在安装 basicsr(GFPGAN 的依赖库之一)时,在控制台中出现提示信息显示为:无法找到名为 'numpy' 的模块。这是因为由于 basicsr 在安装过程中依赖于 numpy 模块的使用,请确保已正确配置虚拟环境以包含该模块。
解决方案
先单独安装 numpy,使用以下命令:
pip install numpy
安装完成后,在 Python 环境中验证一下是否安装成功:
import numpy as np
print(np.__version__)
如果能正常打印出 numpy 的版本号,就说明 numpy 已经成功安装。
问题二:找不到 cv2 模块
在克服了 numpy 的问题之后,再次尝试安装依赖库时遇到了 ModuleNotFoundError: No module named 'cv2' 的错误。这表明 basicsr 的 setup.py 文件因缺少必要的模块而无法正常运行。
解决方案
先卸载现有的 opencv-python,然后重新安装:
pip uninstall opencv-python
pip install opencv-python
安装完成后,同样在 Python 中验证是否安装成功:
import cv2
print(cv2.__version__)
问题三:缺少 torchvision 模块
接着,在安装过程中又报错了 ModuleNotFoundError: No module named 'torchvision'。尽管已经部分开始下载 torchvision 了,但由于安装过程出现了一些问题, 最终结果是 basicsr 无法找到它。
解决方案
先卸载再重新安装 torchvision:
pip uninstall torchvision
pip install torchvision
安装完成后,进行验证:
import torchvision
print(torchvision.__version__)
问题四:找不到 scipy 模块
随后再次遇到一个 ModuleNotFoundError: not found in the Python path 的困难。尽管之前已成功安装 scipy ,但由于 basicsr 运行时无法识别该模块。
解决方案
重新安装 scipy:
pip uninstall scipy
pip install scipy
安装完成后,验证是否安装成功:
import scipy
print(scipy.__version__)
问题五:缺少 tqdm 模块
在安装过程中仍遇到了 ModuleNotFoundError: No module named 'tqdm' 的错误;尽管已尝试安装 tqdm 包,并采取了相应措施如更新系统或检查依赖项配置;但依然未能成功定位到该模块。
解决方案
重新安装 tqdm:
pip uninstall tqdm
pip install tqdm
安装完成后,验证:
import tqdm
print(tqdm.__version__)
问题六:依赖冲突
最后遭遇了最难以解决的依赖冲突问题,在使用过程中发现有多个版本的 basicsr 都会依赖于 tb-nightly 包件,并且使用 pip 工具也无法解除这些冲突。遇到安装 basicsr==... 的错误信息:每个版本都带有与 tb-nightly 冲突的依赖关系。
解决方案
- 建议首先自行完成
tb-nightly的安装:并随后完成所有依赖软件的安装。使用官方 PyPI 镜像源进行操作;尽量避免因镜像源更新延迟而导致的问题。
pip install tb-nightly -i https://pypi.org/simple
pip install basicsr facexlib lmdb opencv-python pyyaml scipy torch torchvision tqdm
- 替代为官方稳定的版本 :如果
tb-nightly无法安装,则建议直接使用tensorboard的官方稳定的版本进行替换。
pip install tensorboard
pip install basicsr facexlib lmdb opencv-python pyyaml scipy torch torchvision tqdm
在经历一系列操作后,最后实现了GFPGAN及其依赖库的安装过程。为了确保所有组件均能正常运行,在Python环境中进行了最终验证
import basicsr
import facexlib
import gfpgan
import numpy as np
import cv2
import torchvision
import scipy
import tqdm
print("所有库导入成功,安装正常!")
如果执行该段代码后未出现错误,并且输出 "所有库导入成功 安装正常!" ,则说明安装的库可以正常使用。
问题七:找不到 torchvision.transforms.functional_tensor 模块
完成安装后运行 run_pth.py 时遇到了模块不存在的问题。通常是因为 torchvision 版本不兼容所导致的功能模块已更新或发生变化。
解决方案
- 调整代码以适应新版本 :如果不想降低 torch torchvision 的版本,请考虑对代码进行调整以适应新版本的变化。值得注意的是,在最新的 torch torchvision 版本中,默认可以直接从 torch torchvision.transforms.functional 中导入 rgb_to_grayscale 函数
找到
path\.venv\lib\site-packages\basicsr\data\degradations.py 文件

将
from torchvision.transforms.functional_tensor import rgb_to_grayscale
修改为
from torchvision.transforms.functional import rgb_to_grayscale

修改完代码后,再次运行 run_pth.py 脚本,问题就得到了解决。
总结
在进行 GFPGAN 的安装时
