代码使用
第一步:
下载yolov4权重
将下载好的权重yolo4_weights.pth放在yolov4/model_data/文件夹下
修改输入图像大小可以在yolov4/yolo.py中 input_shape进行修改
$ tree model_data model_data |-- coco_classes.txt |-- simhei.ttf |-- voc_classes.txt |-- yolo4_weights.pth `-- yolo_anchors.txt
第二步:
在终端运行命令:python track.py --source demo.mp4 --classes 0 --show-vid --save-vid
命令说明:--source 后面的参数是打开摄像头还是本地视频,如果是本地视频输入路径即可
--classes 是需要检测的类,因为我这里yolo用的是coco数据集,有80个类,如果不加任何参数,默认是检测80个类,如果想只检测某个类,可以单独指定【0指的是指检测人这个类】
--show-vid则显示图像
--save-vid是保存跟踪后的视频,保存路径runs/track/exp【每次检测都会生成一个新的exp文件】
只跟踪行人
跟踪所有的类
--------------------------------------------------------------------------------------------------------
在跟踪部分,支持网络如下:【该文件路径在deep_sort/deep/reid/torchreid/models/_init_.py】,代码默认采用的网络为 :osnet_x0_25。如果换其他网络,输入命令:
python track.py --deep_sort_model resnet50 --source demo.mp4 --classes 0 --show-vid --save-vid
'resnet18': resnet18, 'resnet34': resnet34, 'resnet50': resnet50, 'resnet101': resnet101, 'resnet152': resnet152, 'resnext50_32x4d': resnext50_32x4d, 'resnext101_32x8d': resnext101_32x8d, 'resnet50_fc512': resnet50_fc512, 'se_resnet50': se_resnet50, 'se_resnet50_fc512': se_resnet50_fc512, 'se_resnet101': se_resnet101, 'se_resnext50_32x4d': se_resnext50_32x4d, 'se_resnext101_32x4d': se_resnext101_32x4d, 'densenet121': densenet121, 'densenet169': densenet169, 'densenet201': densenet201, 'densenet161': densenet161, 'densenet121_fc512': densenet121_fc512, 'inceptionresnetv2': inceptionresnetv2, 'inceptionv4': inceptionv4, 'xception': xception, 'resnet50_ibn_a': resnet50_ibn_a, 'resnet50_ibn_b': resnet50_ibn_b, # lightweight models 'nasnsetmobile': nasnetamobile, 'mobilenetv2_x1_0': mobilenetv2_x1_0, 'mobilenetv2_x1_4': mobilenetv2_x1_4, 'shufflenet': shufflenet, 'squeezenet1_0': squeezenet1_0, 'squeezenet1_0_fc512': squeezenet1_0_fc512, 'squeezenet1_1': squeezenet1_1, 'shufflenet_v2_x0_5': shufflenet_v2_x0_5, 'shufflenet_v2_x1_0': shufflenet_v2_x1_0, 'shufflenet_v2_x1_5': shufflenet_v2_x1_5, 'shufflenet_v2_x2_0': shufflenet_v2_x2_0, # reid-specific models 'mudeep': MuDeep, 'resnet50mid': resnet50mid, 'hacnn': HACNN, 'pcb_p6': pcb_p6, 'pcb_p4': pcb_p4, 'mlfn': mlfn, 'osnet_x1_0': osnet_x1_0, 'osnet_x0_75': osnet_x0_75, 'osnet_x0_5': osnet_x0_5, 'osnet_x0_25': osnet_x0_25, 'osnet_ibn_x1_0': osnet_ibn_x1_0, 'osnet_ain_x1_0': osnet_ain_x1_0, 'osnet_ain_x0_75': osnet_ain_x0_75, 'osnet_ain_x0_5': osnet_ain_x0_5, 'osnet_ain_x0_25': osnet_ain_x0_25
自己下载权重【或者自己训练的权重】:
权重会自动下载,如果感觉慢可以去我网盘里下载【我只上传了osnet_x0_25和resnet50】,如果自己下载的是resnet权重,将下载后的权重放在deep_sort/deep/checkpoint/下,然后进入deep_sort/deep/reid/torchreid/models/resnet.py,将model_urls中的'resnet50'的链接改为本地权重路径。
如果你是下载的osnet_x0_25权重,同理可以将权重放在 deep_sort/deep/checkpoint/下,然后在deep_sort/deep/reid/torchreid/models/osnet.py中找到model_dir,直接将路径改为自己的权重路径即可
以上只针对你自己下载权重的操作,或者你后面训练自己的数据集后放权重的操作。如果是让程序自己下载权重就不用上面修改路径的操作了,程序自动下载的权重一般会保存在C:user/你的用户名/.cache/torch/checkpoints/下