Yolov5_DeepSort_Pytorch复现踩坑日记

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

Yolov5_DeepSort_Pytorch复现踩坑日记_第1张图片

我一般选择第一个,右键复制链接,然后手动下载,再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,这个是重点,采用官网的安装方法:

Yolov5_DeepSort_Pytorch复现踩坑日记_第2张图片

选择你对应的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) 这一行。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(代码复现,pytorch)