FairMot 端侧部署流程

1.FairMOT简介

FairMOT:《A Simple Baseline for Multi-Object Tracking》

https://arxiv.org/abs/2004.01888

        FairMOT的简单方法来共同解决三个公平性问题。它区别于先前的“先检测,后re-ID”框架,因为在FairMOT中检测和re-ID任务是同等的。

        贡献有三个方面。首先,首先,我们实证证明并讨论了之前的一阶段跟踪框架所面临的挑战,这些挑战一直被忽略,但严重限制了其性能。第二,在无锚目标检测方法[10]的基础上,我们引进了一个框架来公平地平衡检测和re-ID任务,明显优于之前的方法。最后,我们提出一种自监督学习方法在大规模检测数据集上训练FairMOT来提高泛化能力。这具有重要的经验价值。

        它采用了一个非常简单的包含两个分别检测物体和提取re-ID特征的均匀分支的网络框架。受[10],[16],[17],[18]的启发,检测分支是以无锚的方式实现的,它估计物体的中心和大小,以位置感知图来表示。同样,re-ID分支为每个像素估计一个re-ID特征,来描述以该像素为中心的物体。注意到两个完全平等的分支和之前将检测和re-ID级联的方法完全不同。所以FairMOT消除了如表3所示的检测分支不公平的优势,有效地学习高质量的re-ID特征并且对于更好的MOT结果取得了检测和re-ID的平衡。

2.pt转onnx

参考资料:https://github.com/xjsxujingsong/FairMOT_TensorRT_C

代码地址:https://github.com/ifzhang/FairMOT

pt转onnx导出代码:

import cv2
import numpy as np
import torch
import torch.onnx.utils as onnx
import models.yolo as net
from collections import OrderedDict

model = net.get_pose_net(num_layers=-100, heads={'hm': 1, 'wh': 4, 'reg': 2, 'id':64},head_conv=None)

checkpoint = torch.load(r"models/fairmot_lite.pth", map_location="cpu")
checkpoint = checkpoint["state_dict"]
change = OrderedDict()
for key, op in checkpoint.items():
    change[key.replace("module.", "", 1)] = op

model.load_state_dict(change)
model.eval()
model.cuda()

input = torch.

猜你喜欢

转载自blog.csdn.net/u012374012/article/details/143208802