数据准备:由于训练代码目前支持两种数据集如下,分别包含各自的数据准备方式。
Market-1501数据集介绍
Mars数据集介绍
代码准备:
cosine_metric_learning
demo代码准备:
deep_sort
训练启动命令:
训练mars数据集脚本如下:
python train_mars.py \
--dataset_dir=/media/holo/B834B57734B538E8/tracking/MARs \
--loss_mode=cosine-softmax \
--log_dir=./output/mars/ \
--run_id=cosine-softmax
训练market数据集脚本如下:
python train_market1501.py \
--dataset_dir=/media/holo/B834B57734B538E8/tracking/Market-1501-v15.09.15 \
--loss_mode=cosine-softmax \
--log_dir=./output/market1501/ \
--run_id=cosine-softmax
训练完成之后,需要对模型进行冻结。执行如下命令:
# Market-1501
python train_market1501.py --mode=freeze --restore_path=PATH_TO_CHECKPOINT
# Mars
python train_mars.py --mode=freeze --restore_path=PATH_TO_CHECKPOINT
关于模型冻结示例如下:(不要添加模型后缀)
# Market-1501
python train_market1501.py --mode=freeze --restore_path=./output/market/cosine-softmax/model.ckpt-1560
# Mars
python train_mars.py --mode=freeze --restore_path=/output/mars/cosine-softmax/model.ckpt-1560
当保存好模型pb
文件之后,将其拷贝至deep_sort
工程目录下。
当训练过程中,可以终端运行tensorboard
来观察训练过程。
我们在终端输入如下命令:
tensorboard --logdir ./output/mars/cosine-softmax --port 8008
稍等一会,我们能够看到终端弹出链接,点击即可。或者打开网页,输入以下IP
就可以看到如下的训练变量可视化。
http://127.0.0.8008
我们可以看下每个变量的训练变化过程:
上面训练结束并且生成pb
模型之后,将其拷贝至deep_sort
目录下./model/networks/
。
然后,执行目录tools
下面的generate_detections.py
来生成对应的检测&外观特征合并在一起。
python generate_detections.py --mot_dir ../data/MOT16/test
执行完该命令,会在tools/detections
下面生成对应的结果。
生成完后,执行deep_sort_app.py
脚本来进行可视化。
python deep_sort_app.py \
--sequence_dir=./data/MOT16/test/MOT16-06 \
--detection_file=./model/detections/MOT16_POI_test/MOT16-06.npy \
--min_confidence=0.3 \
--nn_budget=100 \
--display=True
问题1:训练模型时候终端报错cudnn failed
,添加如下代码:
# Add to solve cudnn failed.
from tensorflow import ConfigProto
from tensorflow import InteractiveSession
config = ConfigProto()
config.gpu_options.allow_growth = True
session = InteractiveSession(config=config)
问题2:图片训练过程中报错如下:【需要你手动写个脚本排查一下图片是否完好无损】
EnqueueError: Expected image (JPEG, PNG, or GIF), got empty file
[[node map/while/DecodeJpeg (defined at /home/holo/anaconda3/envs/kitti_vis/lib/python3.7/site-packages/tensorflow_core/python/framework/ops.py:1748) ]]
问题3:如何接着训练
目前使用的tensorflow版本是1.14.0
。关于在之前模型继续训练方式:需要你修改一下train_app.py里面的参数。在parser
里面有个--restore_path
变量,里面添加默认路径即可,注意需要你写到对应的model
名称。例如:
# 注意需要写到mpdel.ckpt-xxxx后缀不需要填写
--restore_path="./output/mars/cosine-softmax/model.ckpt-20000"
关于训练模型cosine_metric_learning
的loss
选择问题:
triplet loss 损失函数
magnet loss 损失函数
sparse_softmax_cross_entropy 损失函数
本篇是针对算法deep_sort的训练以及可视化记录。以及训练模型使用的损失函数一些简单总结。
cosine_metric_learning
deep_sort
使用deepsort重新训练自己的多目标跟踪模型