修改默认conda环境(在win中)
1.修改环境
安装conda,用conda安装专用的环境
bash
conda create -n yolov5 python=3.10(目前选用3.10,很稳,适配yolov5)
默认是在C盘创建的环境,如果不想存储在C盘,(比如存在e盘中),修改 Conda 默认环境路径通过修改 Conda 的配置文件 .condarc,改变所有新环境的默认创建位置。
首先,在你想存放所有 Conda 环境的 E 盘目录下创建一个文件夹,例如 E:\conda_envs。
找到 Conda 的配置文件 .condarc。它通常位于:Windows: C:\Users<你的用户名>.condarc,如果不存在,可以用命令生成:
bash
conda config
之后就可以看到 .condarc文件了,打开之后会有一个括号,是json格式的 但是文件时yaml格式,所以要把括号删掉,然后添加
bash
channels:
- defaults
envs_dirs:
- E:\conda_envs #把你想要的环境输入到第一个位置,后面依次是备选
- C:\Users\Administrator\.conda\envs
写入之后,保存,在此创建环境,就会默认保存在e盘,如果想把之前的环境都移过来的话,逐个克隆每个环境到 E 盘比较安全
bash
conda create -p E:\conda_envs\labelimg --clone labelimg -y
conda create -p E:\conda_envs\yolo --clone yolo -y
conda create -p E:\conda_envs\yolov5 --clone yolov5 -y
弄完之后验证克隆结果
bash
conda info --envs
目前只是把环境克隆过去了,但是包缓存的位置还是在c盘的 ,要在e盘中创建一个存储缓存包的位置
bash
mkdir E:\conda_pkgs
再次打开.condarc 添加配置
bash
pkgs_dirs:
- E:\conda_pkgs # 新的包缓存位置
- C:\Users\Administrator\.conda\pkgs # 保留原位置作为备份
验证配置
bash
conda config --show pkgs_dirs
移动现有的包缓存
bash
xcopy "C:\Users\Administrator\.conda\pkgs" "E:\conda_pkgs" /E /H /I /K
以下步骤如果C盘不紧张,完全可不做,因为之后的包缓存都会保存在新的位置了,
创建符号链接(这样现有环境还能找到包)
bash
mklink /J "C:\Users\Administrator\.conda\pkgs" "E:\conda_pkgs"
如果紧张的话 就执行下面的操作
bash
# 删除c盘之前的包缓存
rmdir /S /Q C:\Users\Administrator\.conda\pkgs
# 重新创建空文件夹(Conda 可能需要)
mkdir C:\Users\Administrator\.conda\pkgs
# 验证清理结果
dir C:\Users\Administrator\.conda\pkgs
创建好之后 会有提示,分别是进入环境的命令和退出环境的命令,如果是移到了其他盘的话,打开的命令要加入路径 "conda activate E:\conda_envs\labelimg,如果是默认的话 直接输入
bash
conda activate yolov5 # (进入环境)
conda deactivate # (退出环境)
conda env remove -n myenv # (删除环境:myenv)
进入环境
bash
conda activate yolov5
前面会出现"(yolov5)"字样,代表进入环境成功,然后去项目的路径
bash
cd E:\yolo\yolov5
2.出现的一些问题
在下载瑞芯微 rv106 板子的 yolo5的代码的时候出现的一些问题
1.报这个错误
bash
import pkg_resources as pkg
E:\yolo\yolov5\utils\general.py:27: UserWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html. The pkg_resources package is slated for removal as early as 2025-11-30. Refrain from using this package or pin to Setuptools<81.
解决方法:这是一个 YOLOv5 中使用了已弃用的 pkg_resources 包的问题。pkg_resources 是 setuptools 的一部分,现在已被弃用
bash
pip install setuptools==68.2.2 # 一个稳定的旧版本
2.报这个错误
bash
E:\yolo\yolov5\train.py:270: FutureWarning: `torch.cuda.amp.GradScaler(args...)` is deprecated. Please use `torch.amp.GradScaler('cuda', args...)` instead.
scaler = amp.GradScaler(enabled=cuda)
这是 PyTorch 2.0+ 中混合精度训练的 API 变更。需要修改 train.py 中 GradScaler 的初始化方式。以下是几种修改方法
在 train.py 中找到第 270 行附近:
scaler = amp.GradScaler(enabled=cuda)
替换为:
根据 PyTorch 版本自动选择正确的 GradScaler 初始化方式
bash
import torch
if hasattr(torch, 'amp') and hasattr(torch.amp, 'GradScaler'):
# PyTorch 2.0+ 的新 API
scaler = torch.amp.GradScaler('cuda', enabled=cuda)
else:
# PyTorch 1.x 的旧 API
scaler = torch.cuda.amp.GradScaler(enabled=cuda)
3.报这个错误
bash
E:\yolo\yolov5\train.py:329: FutureWarning: `torch.cuda.amp.autocast(args...)` is deprecated. Please use `torch.amp.autocast('cuda', args...)` instead.
with amp.autocast(enabled=cuda):
这是另一个 PyTorch 2.0+ 的 API 弃用警告。torch.cuda.amp.autocast() 已经过时,需要使用新的 torch.amp.autocast('cuda', ...) API。
问题:在 train.py 的第 329 行: with amp.autocast(enabled=cuda):
解决方案: 修改 train.py 第 329 行
找到这一行代码(通常在训练循环中):
原代码:
with amp.autocast(enabled=cuda):
修改为:
bash
# PyTorch 2.0+ 兼容的写法
if torch.__version__ >= '2.0.0':
with torch.amp.autocast('cuda', enabled=cuda):
pred = model(imgs) # forward 前向
loss, loss_items = compute_loss(pred, targets.to(device)) # loss scaled by batch_size 损失 scaled by batch_size
if RANK != -1:
loss *= WORLD_SIZE # gradient averaged between devices in DDP mode 梯度平均 between devices in DDP mode
if opt.quad:
loss *= 4. # 四倍
else:
with torch.cuda.amp.autocast(enabled=cuda):
pred = model(imgs) # forward 前向
loss, loss_items = compute_loss(pred, targets.to(device)) # loss scaled by batch_size 损失 scaled by batch_size
if RANK != -1:
loss *= WORLD_SIZE # gradient averaged between devices in DDP mode 梯度平均 between devices in DDP mode
if opt.quad:
loss *= 4. # 四倍
之后就可以根据官方文档进行运形了。
4.报这个错误
训练前先输入这个,允许重复加载相同的动态链接库(DLL),解决多个库同时使用 Intel MKL 时的冲突
避免 "OMP: Error #15: Initializing libiomp5md.dll, but found libiomp5md.dll already initialized" 错误
bash
set KMP_DUPLICATE_LIB_OK=TRUE # 如果没有这个问题就不用了
3.训练时的数据解读:
bash
box: 0.0376 # 边框回归损失,应持续下降
obj: 0.02422 # 目标检测损失,应持续下降
cls: 0 # 分类损失(r如果是单类别,就是0)
P (Precision): 0.839 # 精确率,越高越好
R (Recall): 0.772 # 召回率,越高越好
mAP@0.5: 0.836 # 主要评估指标,>0.8优秀
mAP@0.5:0.95: 0.419 # 严格评估,会低一些
gpu_mem: 3.81G # GPU内存使用,确保不溢出
labels: 39 # 每张图平均目标数,应稳定
img_size: 640 # 输入图像大小