文章目录
-
- 前言
- [问题1 -- VsCode终端无法进入Anaconda创建的虚拟环境](#问题1 -- VsCode终端无法进入Anaconda创建的虚拟环境)
- [问题2 -- 怎么在VsCode中为项目配置Anaconda创建的虚拟环境](#问题2 -- 怎么在VsCode中为项目配置Anaconda创建的虚拟环境)
- [问题3 -- yolov5训练模型时报错RuntimeError: result type Float can't be cast to the desired output type __int64](#问题3 -- yolov5训练模型时报错RuntimeError: result type Float can't be cast to the desired output type __int64)
- [问题4 -- yolov5训练模型时出现警告AttributeError: 'FreeTypeFont' object has no attribute 'getsize'](#问题4 -- yolov5训练模型时出现警告AttributeError: 'FreeTypeFont' object has no attribute 'getsize')
前言
这篇文章用来记录在使用yolov5训练模型时报错处理,持续更新······
2024/4/18
【问题一】VsCode终端无法进入Anaconda创建的虚拟环境
【问题二】怎么在VsCode中为项目配置Anaconda创建的虚拟环境
【问题三】yolov5训练模型时报错RuntimeError: result type Float can't be cast to the desired output type __int64
【问题四】 yolov5训练模型时出现警告AttributeError: 'FreeTypeFont' object has no attribute 'getsize'
问题1 -- VsCode终端无法进入Anaconda创建的虚拟环境
【问题描述】
【问题分析】
VsCode新建终端默认是powershell,需把VsCode终端默认为cmd。
【解决方式】
方法一
方法二
- 1、左下角
选择设置
2、在搜索框中输入powershell
,选择Command Prompt
- 3、
重启VsCode
问题2 -- 怎么在VsCode中为项目配置Anaconda创建的虚拟环境
【问题描述】
假设我们在Anaconda Prompt下创建了一个虚拟环境,我们想要在VsCode中导入创建好的虚拟环境。
【解决方式】
- 1、在代码空白处同时按下
Ctrl + Shift + P
键 - 2、在弹出的搜索框
输入"选择解释器"
- 3、点击进入
Python: 选择解释器
- 4、
选择你想要的环境
- 5、右下角
查看项目的环境
问题3 -- yolov5训练模型时报错RuntimeError: result type Float can't be cast to the desired output type __int64
【问题描述】
报错信息如下:
【问题分析】
PyTorch 的早期版本中,当进行某些运算时,PyTorch 可能会自动对张量的数据类型进行调整以适应操作的需求。然而,在新版本的PyTorch 中,这种自动转换可能不再发生,因此需要显式地进行数据类型的转换。
通过添加 .long() 方法到 torch.ones创建的张量上,可以明确地将该张量的数据类型从默认的浮点数(float)转换为长整型(long)。
【解决方式】
- 1、
找到 loss.py 文件
- 2、
修改loss.py
将 loss.py 文件中的第173行代码
gain = torch.ones(7, device=targets.device) # normalized to gridspace gain
改为
gain = torch.ones(7, device=targets.device).long()
- 3、按
Ctrl + S
键对代码进行保存
问题4 -- yolov5训练模型时出现警告AttributeError: 'FreeTypeFont' object has no attribute 'getsize'
【问题描述】
报错信息如下:
【问题分析】
问题出在库Pillow中的getsize函数,getsize已弃用,已在Pillow 10(2023-07-01)中删除。
【解决方式】
方法一
1、找到 plots.py 文件
2、在 plots.py 中添加以下代码
python
import PIL
def check_version(target_version):
"""
Check if the current PIL version is greater than or equal to the target version.
Args:
target_version (str): The target version string to compare against (e.g., '9.2.0').
Returns:
bool: True if the current PIL version is greater than or equal to the target version, False otherwise.
"""
current_version = PIL.__version__
current_version_parts = [int(part) for part in current_version.split('.')]
target_version_parts = [int(part) for part in target_version.split('.')]
# Compare version parts
for cur, tgt in zip(current_version_parts, target_version_parts):
if cur > tgt:
return True
elif cur < tgt:
return False
# If all parts are equal, the versions are equal or current version is shorter
return True
3、修改Annotator类的__init__方法
在__init__方法中添加以下代码段:
python
if check_version('9.2.0'):
self.font.getsize = lambda x: self.font.getbbox(x)[2:4] # text width, height
4、按Ctrl + S
键对代码进行保存
方法二
1、打开Anaconda Prompt
2、进入你为yolov5项目配置的虚拟环境
python
conda activate yolo_v5
将"yolo_v5"改为你自己创建的虚拟环境名
3、输入以下命令查看安装的pillow版本
python
pip show pillow
4、使用以下命令卸载pillow
python
pip uninstall pillow
5、安装版本为9.5.0的pillow(有挂代理/梯子记得关掉)
python
pip install pillow==9.5.0
如果安装失败或下载速度慢,可改用国内源进行安装,如换清华源:
python
pip install pillow==9.5.0 -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple --trusted-host=https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple