Github地址:https://github.com/mikel-brostrom/Yolov5_DeepSort_Pytorch
原文写的是py3.8以上,实际上应该不用,我试了一下,py3.7,pytorch使用官方安装方法来安装,供大家参考。
我是腾讯云,用CPU环境进行的测试,但是我在自己本机电脑上也用gpu,2070显卡测试过。
接下来按步骤进行说明:
1,系统选择的是ubuntu 20版,18版也测试过。
2,安装anaconda,可以直接安装最新版本。
直接从官网下载,https://www.anaconda.com/products/individual
我一般选择第一个,右键复制链接,然后手动下载,再ftp传过去,或者直接用wget下载,比如:
wget https://repo.anaconda.com/archive/Anaconda3-2020.11-Linux-x86_64.sh
3,使用ssh工具,比如putty或者mobaxterm,我很喜欢mobaxterm,功能挺好,免费版也够用了,自带sftp,官网:https://mobaxterm.mobatek.net/。
到anaconda安装文件的地方,使用bash+文件名方式安装,安装方法可以参考其他人写的文章,较为简单。例如:
bash Anaconda3-2020.11-Linux-x86_64.sh
注意:这里有一个坑,就是安装完以后可能测试提示conda命令无效,重启以后也没用,也可能没事。
如果遇到上述问题,一般可以在默认的目录下,一般是/home/你的用户名这个目录下,执行source .bashrc命令,然后再执行 conda update conda来测试,一般就可以了。
4,接下来clone代码,官方建议执行:git clone --recurse-submodules https://github.com/mikel-brostrom/Yolov5_DeepSort_Pytorch.git
而不是只用简单的git clone命令,因为下面的问题。
如果速度很慢,可以考虑用码云加速,但是注意,这个代码里面,yolov5是直接引用的,所以该目录用码云加速以后clone,或者简单的用git clone,都会出现yolov5的import错误。解决方案也很简单,找到yolov5的代码,clone或者码云加速clone到文件夹下面即可。
5,接下来下载两个模型文件,如果网络不好的,建议国内查找别人的百度网盘下载或者去我上传的资源中找到下载。
yolov5/weights/ 目录下放yolov5权重文件,比如我用的较大的yolov5l.pt,还有其他的可以去yolov5的github上下载https://github.com/ultralytics/yolov5/releases 。
deep_sort/deep/checkpoint/ 目录下放ckpt.t7,要么去原文的谷歌网盘里下载,要么就自己百度找吧,我也上传了一份模型在csdn中备用,见这里:https://download.csdn.net/download/jayli517/16206779
6,创建一个虚拟环境,比如:conda create -n pytorch37 python=3.7
然后激活环境:conda activate pytorch37
安装pytorch,这个是重点,采用官网的安装方法:
选择你对应的cuda版本,这个坑更深,另说。本文先简单介绍cpu版的方法,GPU版本由于各种问题和可能性都会有,所以安装方法大家自行尝试,我在其他文档里会写一下踩坑记录。CPU版命令较为简单省事,报错概率很低。顺便一说,把下面安装代码中的cpu改成gpu就可以装gpu版了。
CPU版安装:
pip install torch==1.8.1+cpu torchvision==0.9.1+cpu torchaudio===0.8.1 -f https://download.pytorch.org/whl/torch_stable.html
7,进入Yolov5_DeepSort_Pytorch的主目录下,开始安装其他依赖项,执行命令:pip install -U -r requirements.txt
8,通常来说大部分就安装完成了,但是有可能会漏掉一个easydict的,执行命令:pip install easydict
异常检测:
如果上面这几步报错,就比较奇怪了,需要具体问题具体分析了。
此时可以执行命令进行测试了,比如:
python track.py --weights /home/ubuntu/github/Yolov5_DeepSort_Pytorch/yolov5/weights/yolov5l.pt --source /home/ubuntu/github/video-ori/01.mp4 --output /home/ubuntu/github/video-output/
--weights 后面是我具体用的pt文件地址,你可以使用相对地址,不用非要学我用绝对地址
--source 是输入的视频文件地址
--output 是输出的视频文件目录
如果一切顺利,就可以自动开始执行了。
但是有可能你会遇到opencv的报错,参考网上的信息:
https://stackoverflow.com/questions/55313610/importerror-libgl-so-1-cannot-open-shared-object-file-no-such-file-or-directo
执行命令安装:
sudo apt install libgl1-mesa-glx
sudo apt-get install ffmpeg libsm6 libxext6 -y
之后报错消失,可以继续了。
如果你觉得解析视频速度实在太慢了,一帧一帧的受不了,可以用ffmpeg来加速,预先处理一下视频。
因为ubuntu 20版已经预置了ffmpeg,所以这里不介绍安装问题。
首先把目录结构建好,按照自己的需求来,我是:
video-ori 原始视频
video-output 输出视频
执行命令将视频抽帧截图:
ffmpeg -i 原视频 -r 1 -f image2 图片输出目录/image-%05d.jpeg
-r 1 表示每秒抽1帧
执行命令重新合成视频:
ffmpeg -i 图片输出目录/image-%05d.jpeg -vcodec mpeg4 视频输出目录/01mp4_output.mp4
然后就可以得到一个抽帧加速的视频,当然如果你代码更好,完全可以自己写py或者shell脚本一步处理。
我最终使用的命令是:
ffmpeg -i /home/ubuntu/github/video-output/01.mp4 -r 25 -b:a 32k /home/ubuntu/github/video-output/01-low.mp4
固定为每秒25帧,音频调整为32k。压缩比并不是特别大,但是可以接受。
以上是一个简单实现,Yolov5_DeepSort_Pytorch的CLI参数不少,但是没有文档详细解释,需要自己注意看。
另外,如果是在云服务器上运行,不喜欢看图片窗口老弹出来一直显示的话,在track.py文件中搜索show,注释掉cv2.imshow(p, im0) 这一行。