Window下的Towards Real-Time Multi-Object Tracking的环境搭建与训练

论文链接:https://arxiv.org/pdf/1909.12605.pdf
代码链接:https://github.com/Zhongdao/Towards-Realtime-MOT

一、实验环境搭建

1. 从github网址下载项目,打开README.md文件

git clone https://github.com/Zhongdao/Towards-Realtime-MOT

2. 基本环境安装

在这里插入图片描述
实验环境啥的自行安装,pytorch从官网找,注意与cuda版本对应,其他的一路傻瓜式安装就行,大不了运行时缺啥装啥。ffmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序,可以从这里安装。在window下可以直接从网上复制静态文件。

3. 下载权重文件

在这里插入图片描述
在根项目下新建weights文件夹,将这两个模型放入其中
在这里插入图片描述

4. 修改demo.py

在这里插入图片描述
cfg可以自行选择,weights放置权重文件,input-video可以指定检测视频。

大概60行处修改ffmpeg命令:

if opt.output_format == 'video':
    output_video_path = osp.join(result_root, 'result.mp4')
    cmd_str = 'ffmpeg -f image2 -i {}/%05d.jpg -vcodec libx264 -r 25 {}'.format(osp.join(result_root, 'frame'), output_video_path)
    os.system(cmd_str)

5. 运行demo.py文件

视频demo自行准备,以我这里的路径为例:
在这里插入图片描述
运行下面命令(注意路径)

python demo.py --input-video path/to/your/input/p7.mp4--output-root path/to/output/root

这里看不了视频,就贴上某一帧吧
在这里插入图片描述
运行时出现下面代码就成功了:
在这里插入图片描述
最后的demo结果保存在 根目录/path/to/output/root/下,视频结果为result.mp4
在这里插入图片描述

二、环境搭建时容易出现的问题

1. pip install cython_bbox报错

这种一般都是编译问题,需要注意自己的vs环境。这里可以参考这篇文章Window环境下复现 MOT《Towards Real-Time Multi-Object Tracking》代码

2. ffmpeg问题

这里下载静态文件
在这里插入图片描述
直接解压到软件文件夹中就行了,我这里放在D盘的Program Files中,这是我专门放软件的地方。
在这里插入图片描述
此时系统肯定还是无法识别ffmpeg的,需要配置环境变量
在这里插入图片描述
打开cmd输入ffmpeg命令就可以了
在这里插入图片描述
注意运行demo.py时最好以命令行的方式进行,不然可能会报ffmpeg的错误。

三、实验复现

1. 准备数据集

这个算法的数据格式比较特殊,我们需要从官网上了解。
一般github项目中作者都会说明数据集的格式,我们可以找到DATASET_ZOO.md这个文件。
在这里插入图片描述
上图是该算法的数据集目录结构。Caltech代表放置数据集的目录,下面包括图像集和标签集。注意labels_with_ids不能写错,因为作者在代码中已经将这标签文件夹名称写死在了代码中。
我们可以这样做:
在这里插入图片描述
在项目根目录下新建一个datasets文件夹,我打算跑百香果和猪的模型,因此我分为了百香果数据集和猪数据集。
在这里插入图片描述
以猪数据集为例,分为图像集和标签集(注意标签文件夹名称一定不能写错),这也是我们上面讲述的数据目录。
images文件夹内容如下:
在这里插入图片描述
labels_with_ids文件夹内容如下:
在这里插入图片描述
txt文件内容样式如下:
在这里插入图片描述
class:表示目标的类别,比如人、车、猫等。如果只用检测一类目标,这里可以置为0;
identity:目标的细分类(标识),如张三、李四、王五等。没有指定标识则为-1;
[x_center] [y_center] [width] [height]:目标的坐标信息(经过归一化处理)

某个txt文件如下所示:
在这里插入图片描述
图像集和标签集不用完全一一对应,下面会说明数据集的加载流程。

2. 创建配置文件

这里官网上描绘的比较隐蔽,需要认真阅读才能发现哦:
在这里插入图片描述
我们先来搞定配置文件。
在这里插入图片描述
项目根目录下有个cfg文件夹,这里存放数据集的配置文件。这里我们不使用它原来的ccmcpe.json(因为名字嘛),我们直接复制这个文件并重命名,比如我这里复制了两份,分别为百香果和猪的数据集配置文件。
以百香果为例,配置文件内容如下:
在这里插入图片描述
注意更改成如图中键值对描绘的一致就可以了。(图中测试集文件写错了哈,应该是.test后缀)
这里有个问题,这些以.train,.val,.test为后缀的文件是什么呢?下面第三部描述。

3. 创建图像集映射文件

在这里插入图片描述
项目根路径下有个data目录,里面放置的就是图像映射文件。这里不用管其他文件,以我的百香果为例,直接在data目录下新建三个问价:passionFruit.train,passionFruit.test,passionFruit.val。
这三个文件夹中放置的就是图片名(以train为例):
在这里插入图片描述
这里用来指定你的哪些图像是用来训练的,另外验证和测试同理。

这里我写了一个简单的代码用来生成这个文件:

# -*- coding: UTF-8 -*-
import os

label_dir = r"H:\software\数据\image"
file_name = "pig.train"

def add_in_each(name):
    print(name)
    with open(os.path.join(r'H:\software\Towards-Realtime-MOT-master\data', file_name), 'a') as f:
        f.writelines(name+'\n')

def main():
    names = os.listdir(label_dir)
    for name in names:
        if os.path.isfile(os.path.join(label_dir, name)):
            add_in_each(name)
            
if __name__ == '__main__':
    main()

在这里插入图片描述
根据图中的指示改动参数就可以了。

4. 修改train.py文件

OK,数据集工作准备好了,接下来调整一下训练参数了。
首先需要配置参数解析器
在这里插入图片描述
data-cfg改成刚刚自定义的数据集配置文件,batch-size建议改为8一下,这个算法容易爆显存;另外,cfg参数也是要制定的,有三个文件可选:cfg目录下的yolov3_…,注意cfg制定哪个文件,下面的img-size也要改为哪个大小,比如我这里就是1088×608,如果电脑配置不是非常好的那种,真心建议选最小的,不然爆显存;其他参数自行配置。

另外,170行左右的这些代码建议隐掉,不然容易报错
在这里插入图片描述
OK,现在终于可以开始跑了,输入命令(注意在项目根路径下)

python train.py

出现以下过程就说明正在训练了
在这里插入图片描述

数据集的加载过程

到这里应该明白了数据集是如何加载的吧。

首先DataLoader(数据加载器)会根据数据集配置文件(passionFruit.json)去寻找图像映射文件(passionFruit.train),然后根据文件中指定的文件去寻找图像和对应的标签(因为我们命名时都是对应的嘛)。所以即使图像和标签数量不一致也没问题,只要图像映射文件中的图像名对应的图像和标签存在就可以了。

这也解释了我们为什么一定要用labels_with_ids来命名了,不然程序怎么知道要从哪个地方加载标签,有时我们需要从程序的角度思考问题(化身电脑)。

四、如何有效快速地搭建深度学习环境?

以我个人而言,搭建环境主要有三种方式:

  1. 参考网上其他人的博客
  2. 通过视频教学学习,如B站、网易云课堂等
  3. 最严谨最科学的一种:找到作者在github上发布的项目,通过说明手册安装

五、参考

Window环境下复现 MOT《Towards Real-Time Multi-Object Tracking》代码

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值