YOLOv5无法稳定复现出一样结果的解决方案

YOLOv5无法稳定复现出一样结果的解决方案

一般情况下随机种子的设定

在训练之前呢使用这个函数定义好随机种子就可以了。

def fix_random(seed=0):
    def setup_seed(seed):
        random.seed(seed)
        np.random.seed(seed)
        torch.manual_seed(seed)
        torch.cuda.manual_seed(seed)
        torch.cuda.manual_seed_all(seed)
        torch.backends.cudnn.benchmark = False  # 针对数据的分布自动实现寻找卷积效率最高的方式(如果是true)
        torch.backends.cudnn.deterministic = True  # 实现卷积的方式是巩固定的
    setup_seed(seed)

修改YOLOv5的随机种子设定

YOLOv5本身会有自己的随机种子。通过下列方法使用:

 python train.py --seed 2

但是他有一个问题,YOLOv5代码中的随机种子虽然固定了,但是仍然有问题,将

utils/general.py中的init_seeds的代码进行修改:

def init_seeds(seed=0, deterministic=False):
    random.seed(seed)
    np.random.seed(seed)
    torch.manual_seed(seed)
    torch.cuda.manual_seed(seed)
    torch.cuda.manual_seed_all(seed)  
    torch.backends.cudnn.benchmark = False  
    torch.use_deterministic_algorithms(True)
    if deterministic and check_version(torch.__version__, '1.12.0'):
        torch.backends.cudnn.deterministic = True
        os.environ['CUBLAS_WORKSPACE_CONFIG'] = ':4096:8'
        os.environ['PYTHONHASHSEED'] = str(seed)

对比一下就会发现,实际上就两个参数影响到了无法稳定复现,那就是:

torch.backends.cudnn.benchmark和torch.use_deterministic_algorithms

修改好就可以解决问题了。

  • 8
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: YOLOv5 DeepSort是一种目标检测和跟踪的深度学习模型,它结合了YOLOv5目标检测算法和DeepSort排序算法。下面我会简要介绍如何复现YOLOv5 DeepSort模型。 首先,我们需要准备训练数据集。数据集包括图像和标注文件,标注文件中包含每个目标的类别、边界框的位置等信息。 接下来,我们要安装YOLOv5和DeepSort的代码库。在GitHub上可以找到它们的源代码,我们可以通过克隆或下载它们的仓库来获取代码。然后,根据它们的文档和指南,按照要求设置它们所需的环境和依赖项。 然后,我们需要将训练数据集划分为训练集和验证集。训练集用于模型的训练,而验证集用于模型的评估和调优。 接下来,我们可以开始训练YOLOv5模型。首先,需要选择一个预训练的模型权重文件,可以是YOLOv5的预训练模型权重,也可以是自己训练得到的模型权重。然后,将选择的权重文件加载到YOLOv5模型中,并进行模型的训练训练期间,我们需要设置一些训练参数,例如学习率、批大小等。 当YOLOv5模型训练完毕后,我们可以使用它来进行目标检测。将训练好的模型应用于测试图像上,可以得到每个目标的类别和边界框的位置信息。 最后,我们可以将YOLOv5和DeepSort模型结合起来进行目标跟踪。将YOLOv5用于目标检测,然后将检测到的目标传递给DeepSort模型进行目标跟踪。DeepSort模型可以通过计算目标之间的特征相似度来对目标进行排序,从而实现多目标跟踪。 总之,复现YOLOv5 DeepSort模型涉及数据集准备、代码库安装、训练YOLOv5模型、目标检测和目标跟踪等步骤。通过这些步骤,可以得到一个功能完整的YOLOv5 DeepSort模型。 ### 回答2: YOLOv5和DeepSORT是两个不同的目标检测和跟踪算法。YOLOv5YOLO(You Only Look Once)系列算法的最新版本,采用深度学习技术定位和识别图像中的目标。它具有较高的速度和准确率,并且可以检测多个目标。 DeepSORT是一种目标跟踪算法,它结合了深度学习和传统的目标跟踪方法。它利用目标检测算法提供的边界框信息,通过对目标进行特征提取和匹配,实现对目标在视频序列中的跟踪。 要复现YOLOv5和DeepSORT,需要进行以下步骤: 1. 数据集准备:选择适合的目标检测和跟踪的数据集,包含图像和视频序列,并进行标注工作。 2. 训练YOLOv5:使用YOLOv5的开源代码和数据集,进行模型训练。可以进行模型微调、训练参数调整等操作,以达到更好的目标检测效果。 3. 目标检测:用训练好的YOLOv5模型对测试图像或视频序列进行目标检测,获得每个目标的边界框信息。 4. 跟踪预处理:使用DeepSORT的开源代码,对目标检测结果进行预处理,提取目标的特征表示。 5. 目标跟踪:利用DeepSORT算法对提取的特征进行匹配和跟踪,实现目标在视频序列中的连续跟踪。 6. 评估和调优:根据跟踪结果,进行评估和调优,检查跟踪性能和准确率,对算法进行改进。 以上是对YOLOv5和DeepSORT复现的基本步骤。当然,具体的实施过程可能会因应用场景和数据集的不同而有所调整。 ### 回答3: 要复现YOLOv5和DeepSORT的结合,需要以下步骤: 1. 安装所需库和环境:首先,在计算机上安装Python、PyTorch和OpenCV等必要的库和软件。确保版本兼容,并按照官方文档提供的安装指南进行配置。 2. 下载YOLOv5项目:从YOLOv5的官方GitHub仓库中克隆或下载源代码。确保使用最新版本的代码以符合最新的更新和改进。 3. 下载DeepSORT模型:从DeepSORT的GitHub仓库中获取预训练模型。这个模型用于目标跟踪任务,而YOLOv5则用于目标检测。 4. 准备数据集:准备一个包含标注目标的图像和视频的数据集。确保数据集符合YOLOv5和DeepSORT的输入格式要求。 5. 运行YOLOv5进行目标检测:使用YOLOv5对准备好的数据集进行目标检测任务。这将识别和定位图像或视频帧中的目标物体。 6. 运行DeepSORT进行目标跟踪:将YOLOv5检测到的目标传递给DeepSORT模型,以进行目标的跟踪和ID分配。这将创建一个用于每个目标的唯一ID,并将其用于在视频中跟踪目标。 7. 结果可视化:使用OpenCV或其他可视化库,在原始图像或视频上绘制目标框和跟踪信息,以展示目标检测和跟踪的结果。 8. 调优和改进:根据需要进行进一步的调优和改进。可以尝试使用更大的数据集进行训练,调整模型的参数和超参数,或应用其他技术来提高模型的性能。 通过按照以上步骤复现YOLOv5和DeepSORT的结合,可以实现高效的目标检测和跟踪应用程序。这种结合可以用于各种场景,包括视频监控、自动驾驶和人工智能等应用领域。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值