如何基于自己训练的Yolov5权重,结合DeepSort实现目标跟踪

网上有很多相关不错的操作demo,但自己在训练过程仍然遇到不少疑惑。因此,我这总结一下操作过程中所解决的问题。

1、deepsort的训练集是否必须基于逐帧视频?
我经过尝试,发现非连续性的图像仍可以作为训练集。一个实例(如指定某个人、某辆车等)对应一个train\test文件夹即可。当然,逐帧效果更佳。
在这里插入图片描述

2、yolo训练的类型不止一个,该怎么办?
按照问题1中,每个类型都可以制作1个或多个实例(如类型0表示自行车,则可以有红色自行车、蓝色自行车等多个实例,类别1表示xxx,同理),全部都集中存放于train\test即可。

在这里插入图片描述

3、deepsort训练完成后,如何实现对自己视频中的目标进行跟踪?
将track.py相关参数进行修改即可,如下所示。注意,若yolo存在识别多个类别,则需要对应修改’–classes’中参数!!!

if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    # 表示yolo训练得到的权重
    parser.add_argument('--yolo_weights', type=str, default='yolov5/weights/best.pt', help='model.pt path')
    # 表示训练得到的权重
    parser.add_argument('--deep_sort_weights', type=str, default='deep_sort_pytorch/deep_sort/deep/checkpoint/ckpt.t7', help='ckpt.t7 path')
    # 测试视频
    parser.add_argument('--source', type=str, default='data/test.mp4', help='source')
    parser.add_argument('--output', type=str, default='inference/output', help='output folder')  # output folder
    parser.add_argument('--img-size', type=int, default=640, help='inference size (pixels)')
    parser.add_argument('--conf-thres', type=float, default=0.4, help='object confidence threshold')
    parser.add_argument('--iou-thres', type=float, default=0.5, help='IOU threshold for NMS')
    parser.add_argument('--fourcc', type=str, default='mp4v', help='output video codec (verify ffmpeg support)')
    parser.add_argument('--device', default='', help='cuda device, i.e. 0 or 0,1,2,3 or cpu')
    # True表示显示、保存、存储结果
    parser.add_argument('--show-vid', action='store_true', default=True,help='display tracking video results')
    parser.add_argument('--save-vid', action='store_true',default=True, help='save video tracking results')
    parser.add_argument('--save-txt', action='store_true',default=True, help='save MOT compliant results to *.txt')
    # 表示跟踪所有类别,yolo训练类型共200种
    parser.add_argument('--classes', nargs='+', default=list(range(200)), type=int, help='filter by class')
    parser.add_argument('--agnostic-nms', action='store_true', help='class-agnostic NMS')
    parser.add_argument('--augment', action='store_true', help='augmented inference')
    parser.add_argument('--evaluate', action='store_true', help='augmented inference')
    parser.add_argument("--config_deepsort", type=str, default="deep_sort_pytorch/configs/deep_sort.yaml")
    args = parser.parse_args()
    args.img_size = check_img_size(args.img_size)

    with torch.no_grad():
        detect(args)

效果
在这里插入图片描述

### 回答1: 我可以回答这个问题。生成基于Yolov5DeepSort的多目标跟踪代码需要掌握深度学习、计算机视觉、Python编程等知识。可以参考Yolov5DeepSort的官方文档和GitHub代码库,也可以参考相关的博客和教程。 ### 回答2: 生成基于Yolov5DeepSort的多目标跟踪代码需要以下步骤: 第一步,安装Yolov5DeepSort所需的环境。可以使用pip命令安装相关库,例如numpy、opencv、torch等。同时,需要下载并配置Yolov5DeepSort的预训练权重文件和配置文件。 第二步,编写代码进行目标检测。使用Yolov5模型进行目标检测,根据输入的图像或视频,对目标进行检测和识别。Yolov5模型可以通过导入Yolov5库,调用相关函数实现。 第三步,实现目标跟踪。将Yolov5检测到的目标框坐标和类别传入DeepSort模型,通过DeepSort模型对目标进行跟踪。DeepSort模型提供了卡尔曼滤波和匈牙利算法等跟踪算法,可以对目标进行精准的持续跟踪。 第四步,对跟踪结果进行后处理。根据DeepSort跟踪的结果,可以进行相关的后处理操作。例如,可以去除跟踪结果中的重复目标、筛选出满足特定条件的目标,或者进行轨迹分析等。 第五步,展示和保存结果。将跟踪结果可视化展示,可以使用opencv等库将跟踪结果绘制在图像或视频上。同时,对跟踪结果进行保存,方便后续分析和使用。 总之,生成基于Yolov5DeepSort的多目标跟踪代码,需要安装相关环境、编写目标检测和目标跟踪代码,进行后处理和结果展示,并保存跟踪结果。通过实现这些步骤,可以实现一个完整的多目标跟踪系统。 ### 回答3: 生成基于Yolov5DeepSort的多目标跟踪代码需要以下步骤: 1. 安装Yolov5DeepSort库:首先,需要从官方Github页面上克隆Yolov5DeepSort的代码库到本地。然后按照它们各自的文档指南进行安装和配置。 2. 数据准备:准备用于训练和测试的数据集。可以使用常见的目标检测数据集(如COCO)作为训练集,以及包含视频和标注的数据作为测试集。 3. 训练目标检测模型:使用Yolov5目标检测模型对准备好的训练集进行训练。根据Yolov5文档提供的指导,设置适当的超参数并进行训练。在训练期间,模型将学习检测目标物体的位置和类别。 4. 检测目标并应用DeepSort:使用训练好的Yolov5模型测试视频数据集,对每一进行目标检测。然后将检测到的目标物体传递给DeepSort算法,利用其强大的多目标跟踪能力来跟踪目标物体。DeepSort将为每个目标分配唯一的ID,并在目标遮挡或离开视野后仍然能够正确地追踪它们。 5. 结果可视化和后处理:将跟踪结果可视化,并可以在屏幕上或保存为视频进行显示。还可以应用后处理技术来进一步提高跟踪质量,例如滤除不符合运动规律的轨迹,或通过融合多个相机视角的跟踪结果来提高鲁棒性。 最后,在完成上述步骤后,你将获得一个基于Yolov5DeepSort的多目标跟踪代码。可以在新的视频数据上应用该代码,实现准确而可靠的多目标跟踪任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值