如何基于自己训练的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: ckpt.t7和yolov5.pt 都是深度学习模型的文件,但有一些区别。 首先,它们的文件格式不同。ckpt.t7文件是一种以torch.nn.Module的形式保存的模型文件,是PyTorch框架中常用的保存模型的文件格式。而yolov5.pt文件则是一种特定于Yolov5模型的保存文件格式,该模型基于PyTorch实现。 其次,它们保存的模型不同。ckpt.t7文件是一种通用的模型保存文件,可以保存任何基于torch.nn.Module的模型,如ResNet、GoogLeNet等。而yolov5.pt文件是特定于Yolov5模型的保存文件,它保存的是Yolov5模型的权重参数。 另外,它们的使用方式也有所不同。ckpt.t7文件保存的模型需要先加载到一个模型对象中,然后才能对其进行推理或训练等操作。而yolov5.pt文件一般直接加载到Yolov5模型中,并可用于物体检测任务。 此外,由于差异的存在,如果想在不同的深度学习框架中使用这两个文件,可能需要进行一些转换或调整。 总结来说,ckpt.t7和yolov5.pt是不同的模型文件格式,保存的模型类型也有差异。它们的使用方式和应用场景也略有不同。 ### 回答2: ckpt.t7和yolov5.pt是不同深度学习模型文件的扩展名。它们分别对应不同的深度学习框架和网络结构。 ckpt.t7是PyTorch深度学习框架中保存模型权重的默认格式。.t7文件将模型的权重以二进制格式存储,包括模型参数、优化器状态等信息。这种格式适用于将模型保存并在PyTorch中加载和恢复。 而yolov5.pt是YOLOv5目标检测模型的保存格式。YOLOv5是一种基于PyTorch实现的目标检测算法,.pt文件保存了YOLOv5模型的权重和结构信息。使用.yolov5.pt可以直接加载YOLOv5模型并进行目标检测任务。 总结来说,ckpt.t7是PyTorch框架中通用的模型权重保存格式,可以用于不同的深度学习模型。而yolov5.pt是特定于YOLOv5模型的保存格式,用于保存YOLOv5目标检测模型的权重和结构信息。 ### 回答3: ckpt.t7和yolov5.pt是两种不同的模型文件格式。 ckpt.t7是Torch框架中保存模型的默认文件格式。它是基于Lua编程语言的Torch模型的保存文件,包含了模型架构以及训练参数和权重等信息。通常,ckpt.t7文件只能在Torch框架中加载和使用。 而yolov5.pt是一种特定于YoloV5模型的模型文件格式。YoloV5是一种流行的目标检测算法,用于实时目标检测任务。yolov5.pt文件是使用PyTorch框架训练YoloV5模型的保存文件。与ckpt.t7类似,yolov5.pt文件包含了模型架构和训练参数,但是它使用PyTorch框架的数据结构和保存方法。因此,yolov5.pt文件只能在PyTorch框架中加载和使用。 综上所述,ckpt.t7和yolov5.pt是不同的模型文件格式,分别适用于Torch和PyTorch框架。用户需要根据自己的框架选择相应的模型文件加载方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值