A Simple Baseline for multi-object Tracking(FairMOT)论文阅读笔记

(一)Title

在这里插入图片描述
前言:目前人流量统计中,往往能够检测摄像头视频中指定区域进出人数,仅仅使用目标检测算法有些困难,因此,打算入坑目标跟踪,利用跟踪算法来重新考虑人流量统计这个问题。目前多目标跟踪的最先前沿使用GCN(图卷积神经网路),循环神经网络(Transformer.GRU)。不过本文的出发点基于anchor-free框架,针对Re-ID提出提升方法Multi-Layer Aggregation,同时指出使用anchors带来的ambiguities问题。

论文地址:https://arxiv.org/pdf/2004.01888v2.pdf
代码地址:https://github.com/ifzhang/FairMOT

(二)Summary

目标检测:object detection再识别:re-identification是多目标跟踪的核心组成部分,近年来取得了显著的进展。然而,很少有人关注在单个网络中完成这两项任务来提高推理速度。

性能表现:
作者提出的simple baseline在公开数据集上的表现超过了state-of-arts,并且具有可以达到30FPS的速度。

作者在尝试将object detection和re-identification结合在一起失败之后,从失败的结果中分析原因,得到了对跟踪结果至关重要的3个因素

  • Anchor don’t fit Re-ID
    目前one-shot跟踪器都是基于anchors,它们是从object detection框架中修改得到的。但是作者指出anchors并不适合去学习Re-ID特征

    anchors不适合学习Re-ID特征的原因:
    在这里插入图片描述
    首先,很多anchors,对应着不同的image patches,可能用于去估计相同的目标的identity,这会造成网络严重的ambiguities。这里博主理解的意思是对于同一个目标,会产生很多的预测框,而Re-Identification是基于每一个预测bounding boxes获取特征的,此时,在anchor-based的方法中,就会出现一个目标对应多个预测bounding boxes(作者希望在同一个网络中实现object detection和re-identification,而anchor-based的方法中往往使用NMS做后处理来筛出多余的预测框,在网络内部无法实现一个目标和一个bounding box对应上,从而导致Re-identification得到了若干个结果,从而产生ambiguities问题)。
    接着,使用anchors的第二个问题是:特征图往往进行了8倍下采样来balance效率和速度,这对于目标检测来说是可以接受的,但是对于ReID来说过于coarse,the object centers may not align with the features extracted at coarse anchor locations for predicting the object’s identity

    作者这里将MOT问题看成是pixel-wise的关键点(object center)估计问题

  • Multi-Layer Feature Aggregation(多层特征的聚合)
    Multi-Layer Feature Aggregation对于MOT来说是非常重要的,Re-ID特征需要利用low-level和high-level特征来容纳小目标和大目标。作者实验中发现:

    Multi-Layer Aggregation is helpful to reduce identity switches for the one-shot methods due to the improved ability to handle scale variatioins
    然而这种提升对于two-step 方法是less significant,这是由于在crop和resize操作之后,目标会有相似的scales

  • ReID特征的维度
    之前的ReID方法往往学习一个高维特征,并在高维特征上取得了一个promising的结果,然而,我们发现对于MOT来说,低维特征实际上更好,因为它们和ReID相比来说有更少的训练图像,学习低维特征有利于降低模型过拟合的风险,并且提高跟踪的鲁棒性。

(三)Research Obejct

作者希望将目标检测任务和re-Identification任何在单个网络中实现从而获得更快的inference速度,但是在整合过程中遇到问题,the ID switches increases a lot,基于此,作者分析了将目标检测和重识别整合到一起存在的问题,基于这些思路来进行网络的设计。

(四)Problem Statement

作者他们尝试在单个网络中同时加入object detection和re-identification,但是没能得到一个好的结果,他们分析原因为:re-identification分支没能够被很好地学习。并且整理出3个利于跟踪的要素:

  • Anchors don’t fit Re-ID
  • Multi-Layer Feature Aggregation
  • Dimensionality of the ReID Features,较少的维度更有利

(五)Method

在这里插入图片描述
作者提出方法的一个整体框架如上图所示,首先基于一个anchor-free的方法在high-resolution特征图上进行object centers的一个估计。消除掉anchors能够缓解ambiguity问题,并且使用高分辨率的特征图能够更好地对齐目标的中心。
作者使用一个parallel 分支用于估计pixel-wise Re-ID特征用来预测目标的id,这里比较特别的是,作者使用了一个low-dimensional Re-ID特征,不仅减少了计算时间,而且提高了特征匹配的鲁棒性。
作者为backbone网络配置了Deep Layer Aggregation 操作用于融合多层的特征,从而处理不同尺度的目标。
作者使用anchor-free的方法,用于目标检测和identity embedding,从而显著地提升了跟踪效率。

5.1 backbone

  • 作者采用ResNet-34作为backbone,tradeoff between accuracy以及speed
  • 作者在backbone上应用了一种variant of Deep Layer Aggregation(DLA),这个是不同于原始的DLA的,他有更多的skip connections在low-level和high-level特征之间,和Feature Pyramid Network(FPN)非常similar。
  • 所有的上采样层中的卷积都是用deformable convolution layers进行替换的,使得他们能够根据object scales以及poses动态地适应receptive filed
  • backbone的输入size大小为 H i m a g e × W i m a g e H_{image} \times W_{image} Himage×Wimage,输出size大小为 C × H × W C \times H \times W C×H×W,其中 H = H i m a g e / 4 H=H_{image}/4 H=Himage/4, W = W i m a g e / 4 W = W_{image}/4 W=Wimage/4

5.2 Object Detection Branch

作者将目标检测看成high-resolution feature map基于关键点(center-point)的一个regression问题,并且使用了3个parallel regression heads连接到backbone的输出上,分别去估计heatmaps,bounding box sizes,object center offsets。每一个head是通过一个 3 × 3 3 \times 3 3×3的带有256个通道的卷积,接着跟着一个 1 × 1 1 \times 1 1×1的卷积层产生了最后的目标。

  • Heatmap Head
    用于估计目标的中心位置,在heatmap上一个位置的响应是:在目标中心为1,随着heatmap上位置和物体中心之间的距离而指数衰减。
  • Center Offset Head
    用于更精确地定位objects,预测center offset head对于目标检测性能来说可能是微乎其微,但是对于Re-ID来说就至关重要了。作者通过实验发现ReID特征和目标中心点careful对齐对于性能来说是至关重要的。
  • Box Size Head
    这个head是负责估计target bounding box的height和width。这边的回归精度影响目标检测性能的评估。

5.3 Identity Embedding Branch

这里identity Embedding branch的作用是生成features 用于区分不同的目标,理想情况下,不同的objects之间的距离应当比相同object之间的距离要大,作者在backbone特征上,对于每一个location使用128个核的卷积来提取identity embedding features。
输出结果为 E ∈ R 128 × W × H \mathbb E \in R^{128 \times W \times H} ER128×W×H,在特征图 ( x , y ) (x,y) (x,y)位置的identity embedding feature为 E x , y ∈ R 128 \mathbb E_{x,y} \in R^{128} Ex,yR128

5.4 Loss Functions

  • Heatmap Loss
    GT boxes b i = ( x 1 i , y 1 i , x 2 i , y 2 i ) \mathbf b^i = (x_1^i,y_1^i,x_2^i,y_2^i) bi=(x1i,y1i,x2i,y2i),计算中心点坐标 ( c x i , c y i ) (c_x^i,c_y^i) (cxi,cyi),其中 c x i = x 1 i + x 2 i 2 c_x^i = \frac{x_1^i+x_2^i}{2} cxi=2x1i+x
### 基于LLM的Web代理的基线模型 构建基于大型语言模型(LLM)的Web代理时,通常需要考虑几个核心要素:任务理解、工具调用以及上下文管理。一种强大的简单基线模型可以由以下几个部分组成: #### 1. **任务分解模块** 此模块负责将用户的自然语言请求解析为可执行的任务序列。通过利用预训练的语言理解和生成能力,LLMs能够高效地完成这一过程[^1]。 ```python def parse_user_request(user_input): """ 将用户输入转换成结构化任务列表。 参数: user_input (str): 用户提供的原始查询字符串 返回: list: 结构化的任务指令集合 """ structured_tasks = llm_generate(f"Parse the following request into tasks:\n{user_input}") return structured_tasks.split("\n") # 简单分割作为示例 ``` #### 2. **工具接口适配器** 为了增强LLM的功能范围,可以通过设计轻量级工具接口来扩展其能力。这些工具可能涉及搜索引擎集成、数据库访问或其他特定领域服务。尽管某些基础计算可以直接依赖LLM内部逻辑实现[^3],但对于复杂操作仍需外部支持。 例如,在处理数值运算时虽然无需显式调用API即可获得合理结果,但在更广泛的应用场景下引入专用插件将是必要的改进方向之一。 #### 3. **对话历史跟踪机制** 维持连贯性的交互体验对于提升用户体验至关重要。为此,应建立有效的记忆存储方案以记录过往交流详情并据此调整后续响应策略。 ```python class ConversationHistory: def __init__(self): self.history = [] def add_entry(self, role, content): entry = {"role": role, "content": content} self.history.append(entry) def get_context(self): context_str = "\n".join([f"{entry['role']}: {entry['content']}" for entry in self.history]) return f"Context:\n{context_str}" ``` 综上所述,上述三个组成部分共同构成了一个适用于多种实际需求的基础架构框架——即具备良好泛化性能的同时又能灵活适应不同业务环境下的定制化开发要求。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值