OpenMMLab MMTracking目标跟踪官方文档学习(一)

介绍

MMTracking 是PyTorch的开源视频感知工具箱。它是OpenMMLab项目的一部分。
它支持 4 个视频任务:
视频对象检测 (VID)
单目标跟踪 (SOT)
多目标跟踪 (MOT)
视频实例分割 (VIS)

主要特点

第一个统一视频感知平台
我们是第一个统一多功能视频感知任务的开源工具箱,包括视频对象检测、多对象跟踪、单对象跟踪和视频实例分割。

模块化设计
我们将视频感知框架分解为不同的组件,并且可以通过组合不同的模块轻松构建定制的方法。

简单、快速、强大
简单:MMTracking 与其他 OpenMMLab 项目交互。它基于MMDetection构建,我们只需通过修改配置即可利用任何检测器。
快速:所有操作都在 GPU 上运行。训练和推理速度比其他实现更快或相当。
Strong:我们重现了最先进的模型,其中一些模型甚至优于官方实现。

入门

MMTracking的基本使用方法请参考get_started.md 。
提供了 Colab 教程。您可以在此处预览笔记本或直接在Colab上运行它。

号外号外~ MMTracking 要开始持续更新啦

同时释放了高效、强大的基准模型,部分实现超出官方版本(比如视频目标检测中的 SELSA、多目标跟踪中的 Tracktor、单目标跟踪中的 SiameseRPN++),在部分学术数据集(比如 ImageNet VID)达到 SOTA 水平。

1)、在 MMTracking V0.5.0 刚刚发布的时候,我们支持了以下算法:

视频目标检测(VID)算法:

视频目标检测只需要对视频内的每一帧进行检测,不要求对不同帧中的同一目标进行关联。
DFF (CVPR 2017)
FGFA (ICCV 2017)
SELSA (ICCV 2019)
Temporal RoI Align (AAAI 2021)

多目标跟踪(MOT)算法:

多目标检测在完成视频目标检测的基础上,更加侧重于对视频内的同一目标进行关联。
SORT (ICIP 2016)
DeepSORT (ICIP 2017)
Tracktor (ICCV 2019)

单目标跟踪(SOT)算法:

单目标跟踪更加侧重人机交互,算法需要在给定一个任意类别,任意形状目标的情况下,能够对其进行持续跟踪。
SiameseRPN++ (CVPR 2019)

MMTracking V0.7.0 发布啦!该版本主要新增了以下特性:
Codebase
重构、完善了英文用户文档、中文用户文档,用鲜明的例子告诉大家如何推理、测试、训练 VID、MOT、SOT 的模型
支持所有算法的 FP16 训练与测试
VID
支持新的视频目标检测算法 Temporal RoI Align (AAAI 2021), 同时为所有视频目标检测算法提供了使用 ResNeXt-101 为 backbone 的预训练模型,该方法以 84.1 mAP@50 的性能在 ImageNet VID 数据集上达到了 SOTA 水平
MOT
提供 Tracktor 在 MOT15、MOT16、MOT20 上的结果,在更加复杂的 MOT20 数据集的主要评估指标 MOTA 上,比官方版本高出 5.3 个点
支持在 MOT 数据集训练 ReID model
支持在 MOT 数据集进行错误(FP、FN、IDS)可视化分析
SOT
支持更多的 SOT 数据集:LaSOT、UAV123、TrackingNet,其它主流数据集也即将支持

OpenMMLab 内部项目间的充分交互

MMTracking: OpenMMLab 一体化视频目标感知平台

视频内的目标感知在大部分情况下可以认为是 2D 目标检测的下游任务,十分依赖各种 2D 目标检测算法。在此之前,如何使用或切换不同的 2D 目标检测器其实是一个很烦琐耗时的任务。

在 MMTracking 中,我们充分利用了 OpenMMLab 其他平台的成果与优势,极大的简化了代码框架。比如,我们 import 或继承了 MMDetection 中的大部分模块,极大的简化了代码框架。在这种模式下,我们可以通过 configs 直接使用 MMDetection 中的所有模型。以多目标跟踪举例,每一个多目标跟踪模型多由以下几个模块组成:

import torch.nn as nn
from mmdet.models import build_detectorclass BaseMultiObjectTracker(nn.Module):def __init__(self,detector=None,reid=None,tracker=None,motion=None,pretrains=None):self.detector = build_detector(detector)...

Configs 示例:

model = dict(type='BaseMultiObjectTracker',detector=dict(type='FasterRCNN', **kwargs),reid=dict(type='BaseReID', **kwargs),motion=dict(type='KalmanFilter', **kwargs),tracker=dict(type='BaseTracker', **kwargs))

快速上手!MMTracking 食用指南 之 VID 篇(视频目标检测)(附 AAAI2021 论文解读 !)

1、运行 VID demo

该脚本可以使用视频对象检测模型来推断输入视频。

python demo/demo_vid.py \${CONFIG_FILE}\--input ${INPUT} \--checkpoint ${CHECKPOINT_FILE} \[--output ${OUTPUT}] \[--device ${DEVICE}] \[--show]

并且INPUT和OUTPUT支持mp4视频格式和文件夹格式。
可选参数:

OUTPUT:可视化演示的输出。如果未指定,则–show有义务即时播放视频。
DEVICE:用于推理的设备。选项有cpu或cuda:0等。
–show:是否动态显示视频。

例子:

假设您已经将检查点下载到该目录checkpoints/,您的视频文件名为demo.mp4,输出路径为./outputs/

python ./demo/demo_vid.py \configs/vid/selsa/selsa_faster-rcnn_r50-dc5_8xb1-7e_imagenetvid.py \--input ./demo.mp4 \--checkpoint checkpoints/selsa_faster_rcnn_r101_dc5_1x_imagenetvid_20201218_172724-aa961bcc.pth \--output ./outputs/ \--show

在 MMTracking 根目录下只需执行以下命令,即可使用 SELSA + Temporal RoI Align 算法运行 VID demo

python demo/demo_vid.py configs/vid/temporal_roi_align/selsa-troialign_faster-rcnn_r101-dc5_8xb1-7e_imagenetvid.py  --input demo/demo.mp4 --checkpoint checkpoints/selsa_troialign_faster_rcnn_r101_dc5_7e_imagenetvid_20210822_111621-22cb96b9.pth --output vid.mp4  --show
python demo/demo_vid.py configs/vid/temporal_roi_align/selsa-troialign_faster-rcnn_x101-dc5_8xb1-7e_imagenetvid.py --input demo/demo.mp4 --checkpoint checkpoints/selsa_troialign_faster_rcnn_x101_dc5_7e_imagenetvid_20210822_164036-4471ac42.pth --output vid.mp4  --show

在这里插入图片描述

2、测试 VID 模型

在 MMTracking 根目录下使用以下命令即可测试 VID 模型,并且评估模型的 bbox mAP

./tools/dist_test.sh configs/vid/temporal_roi_align/selsa_troialign_faster_rcnn_r101_dc5_7e_imagenetvid.py 8 \--checkpoint checkpoints/selsa_troialign_faster_rcnn_r101_dc5_7e_imagenetvid_20210822_111621-22cb96b9.pth \--out results.pkl \--eval bbox

3、训练 VID 模型

在 MMTracking 根目录下使用以下命令即可训练 VID 模型,并且在最后一个 epoch 评估模型的 bbox mAP

./tools/dist_train.sh ./configs/temporal_roi_align/selsa_troialign_faster_rcnn_r101_dc5_7e_imagenetvid.py 8 \--work-dir ./work_dirs/

最新上线!MMTracking 视频实例分割篇食用指南
上新!MMTracking 单目标跟踪任务食用指南
MMTracking 多目标跟踪(MOT)任务的食用指南

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/28440.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构day4(2023.7.18)

一、Xmind整理&#xff1a; 链表的插入和删除&#xff1a; 二、课上练习&#xff1a; 练习1&#xff1a;顺序表去重 33 22 22 11 11 i jfor(int i0;i<list->len-1;i){for(int ji1;j<len;j){if(list->data[i]list->data[j]){delete_by_sub(j,list); …

WebRTC基础

有用的网址&#xff1a; https://webrtc.org/ WebRTC API - Web API 接口参考 | MDN Browser APIs and Protocols: WebRTC - High Performance Browser Networking(OReilly) 浏览器中查看webrtc运行的实时信息&#xff1a; Chrome浏览器&#xff1a;chrome://webrtc-inter…

ArrayList和LinkedList

ArrayList的注意事项 1、在ArrayList中可以放任意元素&#xff0c;包括空值&#xff0c;任何元素&#xff0c;且可重复添加。 2、ArrayList底层是由数组来实现数据存储的 3、ArrayList基本等同于Vector&#xff0c;除了ArrayList是线程不安全(执行效率高),看源码 在多线程的…

依赖注入三种方式,以及传统xml文件传参,还包括@Bean方式传参,还有Resource注入(详细版,每步都有提及)

获取bean对象&#xff0c;也称为对象装配&#xff0c;对象注入&#xff0c;依赖注入。 对象装配的实现方法有3种&#xff1a; 1.属性注入&#xff1b; 2.构造方法注入&#xff1b; 3.Setter注入。 再讲本节内容之前&#xff0c;我们先来提两个传参的方式&#xff0c;首先呢…

新手如何自学PostgreSQL(PG)

如果你是一个新手&#xff0c;想要自学PostgreSQL&#xff0c;下面是一些步骤和资源&#xff0c;可以帮助你入门&#xff1a; ①了解数据库基础知识&#xff1a;在开始学习PostgreSQL之前&#xff0c;建议你先了解一些数据库的基础概念和术语&#xff0c;例如表、列、行、SQL查…

什么是芯片组,南桥与北桥芯片的作用与区别

主板是连接计算机所有部件的PCB。在老式计算机中&#xff0c;所有芯片都分布在主板上。在现代计算机中&#xff0c;芯片数量减少并集中在特定位置。因此&#xff0c;将多个芯片组合起来形成一个芯片。这种可以替代大量芯片的芯片称为芯片组。主板上有一个芯片组。芯片组处理CPU…

echarts开发遇到的问题

echarts开发遇到的问题 1.rich富文本标签作为横向柱状图的刻度标签&#xff0c;其中带有icon。rich里不能写参数&#xff0c;只能写死&#xff1f;圆角设置无效&#xff1f; 解决办法&#xff1a; 自己写横向柱状图 散点图性能优化配置的临界点&#xff0c;最低优化数值必须…

day52

思维导图 比较指令结果的条件码 练习 汇编实现1-100的累加 .text .global _strat _start: mov r0,#0mov r1,#0 add_fun:add r0,r0,#1cmp r0,#100addls r1,r1,r0bls add_fun .end

微信小程序基于Promise封装发起网络请求

1.创建一个request.js // 相当于域名 const baseURL ***************; // 暴露一个request函数 export function request(parms) {// 路径拼接const url baseURL parms.url;// 请求体&#xff0c;默认为{}const data parms.data || {};// 请求方式&#xff0c;默认为GETco…

线性DP———最长公共子序列问题(LCS)

LCS问题 求两序列具有相同元素的最长子序列&#xff0c;我们可以用到动态规划的方法来解决问题 我们用 来表示序列 与序列 能组成的LCS的长度&#xff0c;的状态转移方程如下&#xff1a; 使用两层for循环就可以解决此问题&#xff0c;时间复杂度为,可以处理n<7000左右…

Windows 如何锁定文件

一、背景 如果应用程序有操作本地文件的功能&#xff08;如&#xff1a;读、写、复制、移动、删除等等&#xff09;&#xff0c;那么在测试或调试该应用程序时&#xff0c;肯定需要测试文件被其他应用程序锁定时&#xff0c;你的应用程序是如何处理的。 那么如何在本地模拟文件…

阿里云安装宝塔面板

阿里云安装宝塔面板 1.安装步骤2.需要加入安全组&#xff0c;打开端口3.安装宝塔 1.安装步骤 1.这里主要以阿里云的服务器 ECS为例子,需要安装纯净的系统 创建过程: 这边先用的是免费的: 2.需要加入安全组&#xff0c;打开端口 进入实例选项卡&#xff1a; 快速添加&…