【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
相关推荐
音沐mu1 个月前
【基于YOLOv5的反光衣检测预警系统】可检测图片、视频、摄像头,支持GPU加速检测以及语音播报预警
人工智能·yolo·目标检测·yolov5·反光衣检测
聚梦小课堂1 个月前
Comfyui segmentAnythingUltra V2报错
comfyui·报错处理·vitmatte
zh路西法2 个月前
基于opencv-C++dnn模块推理的yolov5 onnx模型
c++·图像处理·pytorch·opencv·yolo·dnn·yolov5
从懒虫到爬虫2 个月前
yolov5明厨亮灶检测系统,厨师帽-口罩检测,带pyqt界面-可检测图片和视频,支持中文标签,检测接口已封装好并优化,代码可读性强!
yolov5·厨房·口罩厨师帽
从懒虫到爬虫3 个月前
yolov5 +gui界面+单目测距 实现对图片视频摄像头的测距
yolov5·单目测距·qq767172261
弗兰随风小欢4 个月前
【目标检测实验系列】EMA高效注意力机制,融合多尺度特征,助力YOLOv5检测模型涨点(文内附源码)
人工智能·深度学习·yolo·目标检测·计算机视觉·yolov5·注意力机制
不做签到员4 个月前
rockchip的yolov5 rknn python推理分析
yolo·rk3588·rknn·yolov5·rockchip·后处理
MickeyCV4 个月前
目标检测经典模型之YOLOV5-detect.py源码解析(持续更新)
人工智能·yolo·目标检测·yolov5
清风20225 个月前
yolov5 json 和 txt数据格式关系
yolov5·数据格式
叶绿体不忘呼吸6 个月前
基于深度学习YOLOv8\YOLOv5的骨科骨折诊断检测系统设计
深度学习·yolo·yolov5·yolov8·pyside6·骨折检测·骨科诊断