YoloV5 + deepsort + Fast-ReID 完整行人重识别系统(三)

Fast-Reid系列文章目录


前言

上一篇fast-reid训练使用Fast-Reid框架训练了自己应用场景下的模型,训练策越为融合了大量开源reid数据集在加上自己的数据一起训练总共30W+的数据。
代码已开源:
Yolov5-Deepsort-Fastreid
yolov5-deepsort-pedestrian-counting

一、yolov5 + deepsort

使用yolov5实现行人检测,deepsort进行跟踪,在遮挡的情况下能较好的防止reid模型误识别。
本人将yolov5、deepsort分别封装成了类,很容易嵌入到自己的项目中,方便替换检测或跟踪算法。
本人将deepsor的表征提取模型替换成了fastreid训练的reid模型。能够提升跟踪性能。
详细请看person_search_reid.py代码如下(示例):

class yolo_reid():
    def __init__(self, cfg, args, path):
        self.args = args
        self.video_path = path
        use_cuda = args.use_cuda and torch.cuda.is_available()
        if not use_cuda:
            warnings.warn("Running in cpu mode which maybe very slow!", UserWarning)
		# Person_detect行人检测类
        self.person_detect = Person_detect(self.args, self.video_path)
        # deepsort 类
        self.deepsort = build_tracker(cfg, args.sort, use_cuda=use_cuda)
        imgsz = check_img_size(args.img_size, s=32)  # self.model.stride.max())  # check img_size
        self.dataset = LoadImages(self.video_path, img_size=imgsz)
        self.query_feat = np.load(args.query)
        self.names = np.load(args.names)

    def deep_sort(self):
        idx_frame = 0
        results = []
        for video_path, img, ori_img, vid_cap in self.dataset:
            idx_frame += 1
            t1 = time_synchronized()

			# yolo detection
            bbox_xywh, cls_conf, cls_ids, xy = self.person_detect.detect(video_path, img, ori_img, vid_cap)
            
            # do tracking  # features:reid模型输出512dim特征
            outputs, features = self.deepsort.update(bbox_xywh, cls_conf, ori_img)
            print(len(outputs), len(bbox_xywh), features.shape)

2.行人计数

本人吧yolov5 + deepsort顺带实现了行人计数功能, 统计摄像头内出现过的总人数,以及对穿越自定义黄线行人计数效果如下:
在这里插入图片描述
详细请看person_count.py代码

二、Reid提取特征

行人重识别和人脸识别是类似的,刚开始接触的可以认为就是人脸换成行人的识别。

1、截取需要识别的行人底库
在这里插入图片描述
2、运行person_bank.py保存行人特征和names,方便进行特征比对,识别出对应的names。
在这里插入图片描述

# features:reid模型输出512dim特征
person_cossim = cosine_similarity(features, self.query_feat)
max_idx = np.argmax(person_cossim, axis=1)
maximum = np.max(person_cossim, axis=1)
max_idx[maximum < 0.6] = -1
score = maximum
reid_results = max_idx
draw_person(ori_img, xy, reid_results, self.names)  # draw_person name

如下图识别出了底库中的行人a1111和b22222。未识别的为None
在这里插入图片描述

总结

在场景不复杂,未出现遮挡时,识别精度还是可以的。使用显卡运行也能够达到实时。下一步打算在业务逻辑上优化跟踪和重实别结合,减少计算量,提升识别性能。如有感兴趣的同学有好方法欢迎与我交流,谢谢!

  • 90
    点赞
  • 563
    收藏
    觉得还不错? 一键收藏
  • 176
    评论
### 回答1: b'yolov5'、'deepsort' 和 'fast-reid' 都是计算机视觉领域的开源代码库。b'yolov5' 是一种目标检测算法,采用卷积神经网络进行目标检测。'deepsort' 是一种多目标跟踪算法,可以对多个目标进行跟踪。'fast-reid' 是一种人脸识别算法库,可用于训练和部署人脸识别算法。这些算法库都可以在许多不同的应用程序中使用,如视频监控和自动驾驶。 ### 回答2: YOLOv5DeepSORTFastReID都是目标检测和追踪领域的优秀算法。 首先,YOLOv5是目标检测算法中的一种,该算法基于深度卷积神经网络实现快速高效的目标检测。与YOLOv3相比,YOLOv5具有更高的精度和速度,并且在小目标检测和极端环境下的目标检测方面表现出色。该算法对大型数据集进行了准确性与效率之间的平衡。 其次,DeepSORT是一种基于深度学习的目标跟踪算法,可以实现对运动目标的实时跟踪。该算法可以对运动目标进行高质量的检测和跟踪,并且可以解决在多目标、交叠目标、视角变化和遮挡等复杂情况下的目标跟踪问题。该算法可以用于视频监控、自动驾驶等应用领域。 最后,FastReID是一种用于人物识别和关键点检测的深度学习算法。该算法可以进行快速和 accurate 的人物识别,同时可以检测出人物的关键点。该算法可以用于视频监控、人物识别、智能人脸识别等多个应用领域。 种算法都是基于深度学习的优秀算法,可以在视觉领域中实现高效的目标检测和跟踪,并且各有所长。在实际应用中,可以根据场景和需求选择不同的算法来实现目标检测和跟踪的最优效果。 ### 回答3: Yolov5DeepSortFast-ReID都是计算机视觉领域中非常流行的深度神经网络模型。这些模型都具有出色的目标检测、目标跟踪和人员识别的能力,在安防、工业、医疗等领域中有着广泛的应用。 首先,Yolov5是一种目标检测算法,它使用深度学习技术和卷积神经网络,可以快速并且准确地检测图像中的各种物体,并且可以在低延迟的情况下运行。Yolov5可以快速地检测到图像中的物体,并将其分类为不同的类别。它的检测准确度较高,在速度和精度之间达到了一个很好的平衡。 其次,DeepSort是一种多目标跟踪算法,它是在目标检测的基础上,进行多目标跟踪的一种算法。DeepSort通过提供一个深度嵌入器进行目标匹配,这个嵌入器使用卷积神经网络来学习目标的视觉特征,使多目标跟踪算法具有更加准确的匹配能力。 最后,Fast-ReID是一种人员识别算法,它通过深度学习技术,学习人员在图像中的特征,从而进行人员识别。Fast-ReID具有高精度和高效率的特点,可以在大规模数据集上进行快速的人员识别。 总之,Yolov5DeepSortFast-ReID都是非常优秀的深度神经网络模型,它们在目标检测、目标跟踪和人员识别方面具有出色的性能,为计算机视觉领域的应用提供了重要的支持。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值