【YOLOv5】使用yolov5训练模型时报错合集

文章目录


前言

这篇文章用来记录在使用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
相关推荐
清风202211 小时前
yolov5 json 和 txt数据格式关系
yolov5·数据格式
叶绿体不忘呼吸1 个月前
基于深度学习YOLOv8\YOLOv5的骨科骨折诊断检测系统设计
深度学习·yolo·yolov5·yolov8·pyside6·骨折检测·骨科诊断
Che_Che_1 个月前
使用autodl服务器进行模型训练
人工智能·yolo·yolov5·autodl
叶绿体不忘呼吸1 个月前
基于深度学习YOLOv8\YOLOv5的花卉识别鲜花识别检测分类系统设计
深度学习·yolo·yolov5·yolov8·花卉识别·检测分类·鲜花检测
雨秒的對望1 个月前
yolov5-ros模型结合zed2相机部署在 Ubuntu系统
ubuntu·ros·yolov5·zed2
猴狲1 个月前
Yolov5保姆及入门-含源码【推荐】
yolo·yolov5·yolov5入门·yolov5应用demo·yolov5源码·yolov5训练流程·yolov5学生入门
Stara05112 个月前
基于YOLOV8复杂场景下船舶目标检测系统
人工智能·python·yolov5·qt5
小言不爱说2 个月前
Java项目硅谷课堂后端报错处理
java·开发语言·报错处理
dont worry about it2 个月前
深入解析yolov5,为什么算法都是基于yolov5做改进的?(一)
算法·yolo·目标跟踪·yolov5
XD7429716362 个月前
【深度学习】YOLOv5,金属表面的缺陷检测,GC10-DET数据集
yolov5·金属缺陷