YOLOv5运行train.py出错

在运行train.py的时候出现报错

Traceback (most recent call last):
  File "E:\yolov5-5.0\yolov\train.py", line 544, in <module>
    train(hyp, opt, device, tb_writer)
  File "E:\yolov5-5.0\yolov\train.py", line 306, in train
    loss, loss_items = compute_loss(pred, targets.to(device))  # loss scaled by batch_size
  File "E:\yolov5-5.0\yolov\utils\loss.py", line 117, in __call__
    tcls, tbox, indices, anchors = self.build_targets(p, targets)  # targets
TypeError: cannot unpack non-iterable NoneType object

detect.py是可以正常运行的,但是一到train就报错

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7761735
  • 除此之外, 这篇博客: YOLOV7训练自己的数据集中的 1.运行detect.py遇到的问题: 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 1.subprocess.CalledProcessError: Command ‘git tag’ returned non-zero exit status 128?
    答:注意参数是否正确
    2.ImportError: The _imaging extension was built for another version of Pillow or PIL:Core version: “9.2.0” Pillow version: 9.2.0
    答:重新安装较低版本的Pillow,例如7.1.2

根据提供的错误信息,报错是在执行train.py的过程中出现的。错误信息指出在build_targets函数中,无法对非可迭代的NoneType对象进行解包操作。

这种错误通常发生在输入参数错误或者数据加载错误的情况下。以下是一些可能的解决方法:

检查数据集的加载和预处理:确保数据集已正确加载,并且在使用之前已经进行了适当的预处理。检查数据集路径是否正确,以及数据集中图像和标签文件的完整性和一致性。

检查模型和训练参数:确保正确设置了模型和训练参数。检查模型的配置文件或参数设置是否与您所使用的模型相匹配。

检查目标标签的格式:检查目标标签文件的格式是否符合Yolo格式要求。Yolo模型通常需要目标标签以特定的格式提供,例如每行包含目标类别和边界框的坐标信息。

检查build_targets函数:查看build_targets函数的实现,并检查可能导致NoneType对象返回的情况。尝试调试代码以确定导致NoneType对象返回的原因,并进行相应的修复。