一、数据集
cosine_metric_learning可以简单理解为,当同一个目标在不同姿态不同角度时,模型需要将其分类为一个目标,不同的目标区分开,与分类网络的理解类似。在训练过程中就是需要一个目标的多个姿态与角度下的数据集。其中支持两种数据集训练,分别为Market-1501、Mars。
格式讲解:
Market-1501
Mars
两个数据集的共同点都是***行人***的重识别数据集,图片 高x宽x维 均为128x64x3,目标最大编号是1501;不同点是命名方式不一样。Market-1501中以文件名区分不同目标,Mars则以不同文件夹区分不同目标。
二、训练自带数据集
环境搭建 https://blog.csdn.net/gwc_master/article/details/115490150
CUDA_VISIBLE_DEVICES="0" python train_market1501.py \
--dataset_dir=./Market-1501-v15.09.15/ \
--loss_mode=cosine-softmax \
--log_dir=./output/market1501/ \
--run_id=cosine-softmax
执行上述命令即可使用GPU进行训练,如果使用cpu训练去掉CUDA_VISIBLE_DEVICES="0"
训练的最终结果在output/market1501/cosine-softmax/下
model.ckpt-100000.data-00000-of-00001
model.ckpt-100000.index
model.ckpt-100000.meta
训练过程中可通过下列命令进行监视
tensorboard --logdir=./output/market1501/cosine-softmax --port 6006
在浏览器中 \\127.0.0.1:6006 即可显示
在训练开始时,如果output/market1501/cosine-softmax/中非空,有checkpoint文件,程序会自动导入checkpoint中的模型文件,接着继续训练。如果更改了训练模型的输入则不能使用了
三、导出模型.pb用于deep_sort测试
执行命令
python train_market1501.py --mode=freeze --restore_path=./output/market1501/cosine-softmax/model.ckpt-100000
生成 market1501.pb
用于deep_sort
deep_sort的原生代码测试,还需要一个测试数据集MOT16
https://motchallenge.net/data/MOT16/
四、根据自己的数据集训练.pb文件
前面提到的 Market1501和Mars数据集,其中的图片均为128x64x3,并且最大目标编号为1501。训练自己数据集时,需要将数据resize成128x64x3,并且根据目标最大编号修改模型的分类值。
The maximum person ID in the dataset.
#MAX_LABEL = 1501
#IMAGE_SHAPE = 128, 64, 3
MAX_LABEL = 3112
IMAGE_H = 128
IMAGE_W = 64
IMAGE_SHAPE = IMAGE_H, IMAGE_W, 3
数据集文件的命名也需满足Market1501命名方式。