Logo

在本地机器上搭建环境

学习如何在本地机器上搭建环境,并独立开发图像分类和目标检测项目。

概念

在本地机器上搭建环境

学习如何在本地机器上搭建环境,并独立开发图像分类和目标检测项目。

下载 Anaconda

Anaconda 可帮助我们为多个不同版本的 Python 及其相关包创建独立的运行环境。此外,它还集成了 Jupyter Notebook 和 Spyder 等重要的集成开发环境(IDE),便于我们创建和运行 Python 项目。由于本课程使用了 Jupyter Notebook 文件(.ipynb),我们也可以在本地轻松地运行这些文件。

你可以下载 Anaconda 的最新版本。

图像分类项目的本地环境搭建

接下来,我们将学习如何为图像分类项目构建本地开发环境。

在 Anaconda 中创建隔离环境

由于不同的任务可能需要不同版本的库和框架,因此在 Anaconda 中创建一个隔离的环境,并将所需包安装到该环境中至关重要。这意味着,例如我们在该环境中安装了 Python 3.8,不会影响其他项目中使用的 Python 版本;对于另一个项目,我们可以创建一个包含 Python 3.7 的新环境,两个环境彼此独立、互不干扰。

现在,让我们创建所需的隔离环境并安装必要的库:

1conda create --name image_classification python=3.8 # 创建一个包含 Python 3.8 的 Anaconda 环境 2conda activate image_classification # 激活该环境 3 4# 将必需的包安装到当前环境中 5pip install torch==1.10.2 6pip install torchvision==0.11.3 7pip install matplotlib 8pip install torchsummary 9pip install pandas 10pip install seaborn 11pip install scikit-learn

环境已准备就绪,我们可以通过运行教程文件,在 Jupyter Notebook 中开始工作。

注意:上述 PyTorch 相关库同时支持 CPU 和 CUDA 环境。如果我们的本地机器没有 GPU,则只会安装适用于 CPU 的版本,模型训练仍可正常进行(但速度较慢)。如果需要 GPU 加速,请按 PyTorch 官网给出的对应 CUDA 版本的安装命令安装,不要想当然地认为 pip 会自动匹配本地 CUDA 版本。

注意:CUDA 是机器学习程序与 GPU 通信所使用的底层 API。因此,若本地设备配有 GPU,必须安装与其兼容的 CUDA 包才能正常使用。否则可能出现程序无法识别或连接 GPU 的问题,导致无法启用 GPU 加速。

添加部署所需的框架

为了能够运行模型部署相关的工具,我们需要先将必要的包安装到当前环境中。

1conda activate image_classification # 激活之前创建的图像分类环境 2pip install onnxruntime # 安装 ONNX 运行时框架 3pip install openvino-dev # 安装 OpenVINO 开发工具包

注意:在安装新包前,请务必确认已激活目标 conda 环境。如果 Anaconda 当前处于 base 环境,并且误将包安装到了 base 环境中,那么这些包将不会出现在我们创建的隔离环境中。请避免此类操作失误。

1git clone https://github.com/monocongo/openimages.git # 克隆代码仓库 2 3conda create --name openimages python=3.7 # 创建 Anaconda 环境 4conda activate openimages # 激活该环境 5cd openimages # 进入克隆下来的 openimages 文件夹 6pip install -r requirements.txt # 安装所需依赖包 7 8python download_images.py # 运行主脚本以下载数据集
1git clone https://github.com/WongKinYiu/yolov7.git # 克隆 YOLOv7 代码仓库 2 3conda create --name yolov7 python==3.7 # 创建 Anaconda 环境 4conda activate yolov7 # 激活 yolov7 环境 5cd yolov7 # 进入 yolov7 目录(即克隆的仓库所在文件夹) 6pip install -r requirements.txt # 安装所需依赖包

结论