Yolov3结合deep sort算法实现目标跟踪代码运行说明

说明

yolov3结合deep_sort实现目标跟踪,可见Github 项目- 基于YOLOV3 和 DeepSort 的实时多人追踪_AIHGF的博客-CSDN博客_yolo deepsort github

代码下载:

https://github.com/nwojke/deep_sort

https://github.com/qqwweee/keras-yolo3

https://github.com/Qidian213/deep_sort_yolov3

一 、代码说明

deep_sort_yolov3代码来自上面两个github项目,经查看,代码的目录有如下区别:

1.deep sort部分

deep_sort_yolov3_master/deep_sort文件夹增加了preprocessing.py(该代码在deep_sort_master/application_util)

deep_sort_yolov3-master/tools删除了deep_sort_master/tools/resources并增加—init—.py

deep_sort_yolov3-master/model_data增加mars-small128.pb,yolo.h5(后续操作得到)

2.yolo部分

yolo部分删除了网络训练的代码,仅保存网络结构,模型转换,测试代码。

二、测试demo的前期准备

1.下载yolov3.weights,将权重转换为yolo.h5模型(这里需要自己转,因为你的TensorFlow版本不一样),用https://github.com/qqwweee/keras-yolo3中的convert.py替换deep_sort_yolov3_master中的convert.py(该代码有问题),在Terminal输入python convert.py yolov3.cfg yolov3.weights model_data/yolo.h5

2.生成mars-small128.pb文件,这个是表观特征,跟踪时做特征匹配用的(也因为TensorFlow版本问题,需要自己生成),推荐第三个GitHub https://github.com/nwojke/deep_sort,下载下来,cmd切换到文件目录,运行下面指令
    python tools/freeze_model.py
    然后和第二步一样,把mars-small128.pb文件复制到第一个GitHub项目的model_data文件夹中。

3.测试视频demo

如果不使用摄像头,则修改demo.py改为自己的测试视频路径

三、测试其他类别或自己的数据

deep_sort_yolov3_master仅包含yolo的测试部分,不含网络训练,因此有三个选择

1.测试yolo训练好的其他coco数据集类别,修改yolo.py98-101即可

      for i, c in reversed(list(enumerate(out_classes))):
            predicted_class = self.class_names[c]
            if predicted_class != 'person' :#修改为其他类别,例如cow
                continue

2.使用yolo训练自己的数据

https://github.com/qqwweee/keras-yolo3训练自己的代码就可,训练方法看其他博客。训练好后将trained_weights_final.h5文件放在model_data中,并改yolo.py23行

        self.model_path = 'model_data/yolo.h5'#改为自己训练的h5文件名

3.不用yolo框架,换一个框架如ssd

1)复制deep_sort_yolov3_master/deep_sort、deep_sort_yolov3_master/tools、以及model_data 中的mars-small128.pb,demo.py到新框架SSD_Tensorflow_master文件夹中,三者文件夹相对路径要和deep_sort_yolov3_master一致,否则会出现报错找不到文件的情况

2)修改demo.py

  • 31行修改路径,60行改检测框架。尤其注意,检测结果的数据类型和数据组成
31:model_filename = 'model_data/mars-small128.pb'#改为你放置到新框架后的路径,若按照博客中则是 
                                                 #     model_filename = 'mars-small128.pb'   

60:boxs = yolo.detect_image(image)#改成新检测网络,其中boxs数据类型<list,class>,[x,y,w,h]
  • 将新框架的检测demo代码加入demo.py代码里(import 或者 直接复制粘贴在demo.py)。尤其注意,当检测框架不在根目录时,如ssd的检测demo代码在SSD_Tensorflow_master/notebook文件夹中国,如果采用直接粘贴到demo.pyde方式,会导致ssd_test_demo中的权重载入和sys.path.append('../')根目录等相对路径出错而修改相对路径。

     

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值