deepsort+yolov3 程序运行

deepsort+yolov3

deepsort+yolov3 程序运行

刚开始学习这方面的知识, 查了很多文档也绕了很多弯路,看着收藏夹里越来越多的网页信息,我意识到必须根据自己的实际情况进行整理和记录。

下载所需资源

目前用到的很多资源都是从Git上下载的,但是下载速度太慢了,有时甚至会下载失败。推荐一个好用的下载资源:
GitHub代下载服务
deepsort+yolov3 程序运行_第1张图片
需要下载的程序项目如下:

  1. https://github.com/Qidian213/deep_sort_yolov3
  2. https://github.com/qqwweee/keras-yolo3
  3. https://github.com/Veriff/face_alignment_challenge

生成yolo.h5文件

1、yolov3.weight权值文件下载
原始链接打不开,这里推荐其他博客中的下载地址:
百度网盘下载地址:
链接: https://pan.baidu.com/s/1QZTjhc6yAoqs2KJWj-Y2gA 提取码: 9ndy
(引用博客为https://blog.csdn.net/neo_qiye/article/details/84782199)

2、将权重转换为yolo.h5模型
将上面下载的yolov3.weights文件放到keras-yolo3文件夹下,在keras-yolo3文件夹下面执行:

python convert.py yolov3.cfg yolov3.weights model_data/yolo.h5

然后把model_data文件夹里面新生成的yolo.h5复制到deep_sort_yolov3项目的model_data文件夹中。
deepsort+yolov3 程序运行_第2张图片
检查deep_sort_yolov3项目的model_data文件夹中是否有mars-small128.pb文件(最新下载的文件中已将包含了mars-small128.pb)。如果没有则使用下面2种方法之一进行获取:

  1. 下载
    mars-small128.pb 提取码:nnjf
  2. 运行程序生成自己的新的文件(下载项目 deep_sort,cmd切换到文件目录,运行下面指令):
python tools/freeze_model.py

将下载或者生成的mars-small128.pb文件放于model_data中。

解决"videocaptureasync"模块报错

查看作者的项目页面,发现这版程序刚刚修改过,所以按照之前的教程直接运行demo.py程序报错了。
deepsort+yolov3 程序运行_第3张图片报错内容:
deepsort+yolov3 程序运行_第4张图片
里面的 “videocaptureasync” 为作者新添加,需要:

1、自己下载videocaptureasync.py,将下载后的videocaptureasync.py放在deep_sort_yolov3文件夹下。

在作者的项目页面中也有大家对于该问题的讨论:
deepsort+yolov3 程序运行_第5张图片deepsort+yolov3 程序运行_第6张图片
2、编译videocaptureasync.py生成videocaptureasync.pyc
参看博客内容,在deep_sort_yolov3下添加新的python文件try_it.py,运行程序发现正确生成了videocaptureasync.pyc

import py_compile
py_compile.compile(file='videocaptureasync.py', cfile='videocaptureasync.pyc', optimize=-1)

运行示例程序

在pycharm的终端运行示例程序demo.py

python demo.py

deepsort+yolov3 程序运行_第7张图片
本来写到这里就可以结束了,但是,运行报错啦
报错的地方没有截图,想起来还没有添加opencv库。但是也不确定安装哪个版本的比较好。于是随便写一个3.5版本:
deepsort+yolov3 程序运行_第8张图片于是从上面可安装的版本中挑选了4.0.0.21版进行安装,并进行测试,安装成功。
再一次运行还是报错:
deepsort+yolov3 程序运行_第9张图片
仔细阅读报错内容和程序(还不太看的懂,主要靠猜),怀疑视频路径错误。另一篇博客里提了一句要修改视频路径,其他人的博客里压根就没提,可能他们都觉得很简单…

  1. 找了一段自己的视频 “2.mp4”,放在deep_sort_yolov3文件下
  2. 将程序中 file_path = ‘video.webm’ 修改为 file_path = ‘2.mp4’

好消息是程序终于跑起来了!但是因为我用的是tensorflow-cpu,所以运行很慢很慢,慢到我都怀疑它到底在干嘛…

还是安装一下tensorflow-GPU吧

待改进之处

正如博客中所提到的:大部分的教程都是跟踪单类别的多目标,即要么跟踪所有人,要么跟踪所有车,并不能同时跟踪统计多类别的多目标。当需求是跟踪视频中的所有出现的目标,统计每一类目标出现的数量时不能满足。这也是后续要改进的方向。

你可能感兴趣的:(yolo3)