-
Notifications
You must be signed in to change notification settings - Fork 599
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Document translation - overview and migration #780
Closed
Closed
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,169 @@ | ||
# MMTracking 版本迁移 | ||
|
||
与 0.xx 版本的 MMTracking 相比, 最新的 1.xx 版本有以下重要修改。 | ||
|
||
## 整体架构 | ||
|
||
MMTracking 0.xx版本中的`core`,在1.xx的新版中被划分为了`engine`、 `evaluation`、 `structures`、 `visualization` 和 `model/task_moduls` 模块。详细信息可见[用户指南](../../docs/en/user_guides)。 | ||
|
||
## 配置 | ||
|
||
### 文件名 | ||
|
||
旧版: `deepsort_faster-rcnn_fpn_4e_mot17-private-half.py` | ||
JingweiZhang12 marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
**新版**: `deepsort_faster-rcnn-resnet50-fpn_8x2bs-4e_mot17halftrain_test-mot17halfval.py` | ||
|
||
### Dataset Loader 配置变更 | ||
|
||
**旧版** | ||
|
||
```python | ||
data = dict( | ||
samples_per_gpu=16, | ||
workers_per_gpu=4, | ||
persistent_workers=True, | ||
samples_per_epoch=60000, | ||
train=dict( | ||
type='GOT10kDataset', | ||
ann_file=data_root + | ||
'got10k/annotations/got10k_train_infos.txt', | ||
img_prefix=data_root + 'got10k', | ||
pipeline=train_pipeline, | ||
split='train', | ||
test_mode=False), | ||
val=dict( | ||
type='GOT10kDataset', | ||
ann_file=data_root + 'got10k/annotations/got10k_test_infos.txt', | ||
img_prefix=data_root + 'got10k', | ||
pipeline=test_pipeline, | ||
split='test', | ||
test_mode=True), | ||
test=dict( | ||
type='GOT10kDataset', | ||
ann_file=data_root + 'got10k/annotations/got10k_test_infos.txt', | ||
img_prefix=data_root + 'got10k', | ||
pipeline=test_pipeline, | ||
split='test', | ||
test_mode=True)) | ||
``` | ||
|
||
**新版** | ||
|
||
```python | ||
train_dataloader = dict( | ||
batch_size=16, | ||
num_workers=4, | ||
persistent_workers=True, | ||
sampler=dict(type='QuotaSampler', samples_per_epoch=60000), | ||
dataset=dict( | ||
type='GOT10kDataset', | ||
data_root=data_root, | ||
ann_file='GOT10k/annotations/got10k_train_infos.txt', | ||
data_prefix=dict(img_path='GOT10k'), | ||
pipeline=train_pipeline, | ||
test_mode=False)) | ||
val_dataloader = dict( | ||
batch_size=1, | ||
num_workers=4, | ||
persistent_workers=True, | ||
drop_last=False, | ||
sampler=dict(type='VideoSampler'), | ||
dataset=dict( | ||
type='GOT10kDataset', | ||
data_root='data/', | ||
ann_file='GOT10k/annotations/got10k_test_infos.txt', | ||
data_prefix=dict(img_path='GOT10k'), | ||
pipeline=test_pipeline, | ||
test_mode=True)) | ||
test_dataloader = val_dataloader | ||
``` | ||
|
||
### Optimizer 配置变更 | ||
|
||
**旧版** | ||
|
||
```python | ||
optimizer = dict( | ||
type='AdamW', | ||
lr=0.0001, | ||
weight_decay=0.0001, | ||
paramwise_cfg=dict( | ||
custom_keys=dict(backbone=dict(lr_mult=0.1, decay_mult=1.0)))) | ||
optimizer_config = dict(grad_clip=dict(max_norm=0.1, norm_type=2)) | ||
``` | ||
|
||
**新版** | ||
|
||
```python | ||
optim_wrapper = dict( | ||
type='OptimWrapper', | ||
optimizer=dict(type='AdamW', lr=0.0001, weight_decay=0.0001), | ||
clip_grad=dict(max_norm=0.1, norm_type=2), | ||
paramwise_cfg=dict( | ||
custom_keys=dict(backbone=dict(lr_mult=0.1, decay_mult=1.0)))) | ||
``` | ||
|
||
### Learning Scheduler 配置变更 | ||
|
||
**旧版** | ||
|
||
```python | ||
lr_config = dict(policy='step', step=[400]) | ||
``` | ||
|
||
**新版** | ||
|
||
```python | ||
param_scheduler = dict(type='MultiStepLR', milestones=[400], gamma=0.1) | ||
``` | ||
|
||
## 模型 | ||
|
||
### 数据预处理 | ||
|
||
MMTracking 的1.xx 版本增加了 [TrackDataPreprocessor](../../mmtrack/models/data_preprocessors/data_preprocessor.py)。由 Data Pipeline 输出的数据经该模块的转换后,再被送入到模型中。 | ||
JingweiZhang12 marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
### 训练 | ||
|
||
在训练阶段的正向传播过程中,Models 及 Heads 的每一类结果都是调用`loss`函数来执行。模型中的`loss`函数包含一个字典`Tensor`和一个列表 `TrackDataSample`。 | ||
JingweiZhang12 marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
### 测试 | ||
|
||
在测试阶段的正向传播过程中,Models 及 Heads 的每一类结果都是调用`predict`函数来执行。模型中的`predict`函数包含一个字典`Tensor`和一个列表 `TrackDataSample`。 | ||
JingweiZhang12 marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
## 数据 | ||
|
||
### 数据结构 | ||
|
||
MMTracking 的1.xx 版本新增了两个数据结构: [TrackDataSample](../../mmtrack/structures/track_data_sample.py) 和 [ReIDDataSample](../../mmtrack/structures/reid_data_sample.py)。这些数据结构封装了一张图片或序列的真值标签及预测结果,并将其用作为不同组件的接口。 | ||
|
||
### Dataset 类 | ||
|
||
MMTracking 的1.xx 版本新增了两个继承自 MMEngine 的基本 Dataset 类:`BaseSOTDataset` 和 `BaseVideoDataset`。前者仅用于单目标跟踪(SOT),后者可用于所有任务。 | ||
JingweiZhang12 marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
### Data Pipeline | ||
|
||
1. MMTracking 旧版中的大部分图像序列变换,在新版本中被重构。具体来说,我们使用`TransformBroadcaster` 来封装单个图像的变换。 | ||
|
||
我们仍旧保留了某些图像序列的变换,例如`SeqCropLikeStark`,因为`TransformBroadcaster`不支持分别为序列中的每个图像设置不同的参数。 | ||
|
||
2. 我们将旧版的`VideoCollect`, `ConcatSameTypeFrames` 和 `SeqDefaultFormatBundle`进行了封装 ,在新版中使用`PackTrackInputs`。 | ||
|
||
3. 旧版本 pipeline 中的 normalizaion 被移除,其操作移至模型的正向传播过程。 | ||
|
||
### 数据采样 | ||
|
||
MMTracking 的1.xx 版本新增了 `DATA_SAMPLERS` 注册表。您可以在配置中自定义不同的数据集采样器,详细信息参见[此处](../../mmtrack/datasets/samplers)。 | ||
JingweiZhang12 marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
## 评估 | ||
|
||
在旧版本的 MMTarcking 中,评估过程使用的是 Dataset 类。在MMTracking 的1.xx 版本中,我们新增了`METRICS`注册表,所有的评估都是在 Metric 类下通过`METRICS`实现的,详细信息参见[此处](../../mmtrack/evaluation/metrics)。 | ||
JingweiZhang12 marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
## 可视化 | ||
|
||
MMTracking 的1.xx 版本在`VISUALIZER`中新增了`TrackLocalVisualizer` 和 `DetLocalVisualizer`。相较于旧版,新版支持了图像和特征图的可视化,详细信息参见[此处](../../mmtrack/visualization/local_visualizer.py)。 | ||
JingweiZhang12 marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
## 引擎 | ||
|
||
MMTracking 的1.xx 版本重构了runner、hook、logging和optimizer,详细信息可见于 MMEngine。 | ||
JingweiZhang12 marked this conversation as resolved.
Show resolved
Hide resolved
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
## 简介 | ||
|
||
MMTracking是一个基于 [PyTorch](https://pytorch.org/)的视频感知开源工具箱,它是[OpenMMLab](https://openmmlab.com)项目的一部分。 | ||
|
||
它支持4项视频任务: | ||
|
||
- 视频目标检测(VID) | ||
- 单目标跟踪 (SOT) | ||
- 多目标跟踪 (MOT) | ||
- 视频实例分割(VIS) | ||
|
||
## 主要特性 | ||
|
||
- **首个统一视频感知平台** | ||
|
||
我们是首个统一了多种视频感知任务的开源工具箱,任务包含视频目标检测、视频实例分割、单目标跟踪及多目标跟踪。 | ||
|
||
- **模块化设计** | ||
|
||
我们将视频感知框架解耦成不同的模块组件,通过组合不同的模块组件,用户可以便捷的构建自定义的模型。 | ||
|
||
- **简单、快速、强大** | ||
|
||
**简单**: MMTracking建立在 [MMDetection](https://github.com/open-mmlab/mmdetection)之上,并且能与 OpenMMLab上的其他项目交互,通过简单调整配置文件即可使用任何检测算法。 | ||
|
||
**快速**: 所有算法操作都运行在GPU上,训练速度比其他代码库更快或者相当。 | ||
|
||
**强大**: 我们复现了SOTA的模型,其中一些模型甚至优于官方实现。 | ||
|
||
## 入门 | ||
|
||
MMTracking 的基本使用方法请参考[get_started.md](./get_started.md) 。 | ||
|
||
我们提供了 Colab 教程,您可以在[此处](../../demo/MMTracking_Tutorial.ipynb)预览或直接在[Colab](https://colab.research.google.com/github/open-mmlab/mmtracking/blob/master/demo/MMTracking_Tutorial.ipynb)上运行。 | ||
|
||
## 教程 | ||
|
||
以下是一些[基础教程](./user_guides/),包含: | ||
|
||
- [配置](./user_guides/1_config.md) | ||
- [数据集准备](./user_guides/2_dataset_prepare.md) | ||
- [推理](./user_guides/3_inference.md) | ||
- [训练和测试](./user_guides/4_train_test.md) | ||
- [可视化](./user_guides/5_visualization.md) | ||
- [分析工具](./user_guides/6_analysis_tools.md) | ||
|
||
如果您想学习更多[进阶指南](./advanced_guides) ,可参见: | ||
|
||
- [数据流](./advanced_guides/1_data_flow.md) | ||
- [结构](./advanced_guides/2_structures.md) | ||
- [模型](./advanced_guides/3_models.md) | ||
- [数据集](./advanced_guides/4_datasets.md) | ||
- [transforms](./advanced_guides/5_transforms.md) | ||
- [评估](./advanced_guides/6_evaluation.md) | ||
- [引擎](./advanced_guides/7_engine.md) | ||
- [convention](./advanced_guides/8_convention.md) | ||
- [添加模块](./advanced_guides/9_add_modules.md) | ||
- [添加数据集](./advanced_guides/10_add_datasets.md) | ||
- [add transforms](./advanced_guides/11_add_transforms.md) | ||
- [添加评价指标](./advanced_guides/12_add_metrics.md) | ||
- [自定义运行环境](./advanced_guides/13_custime_runtime.md) | ||
|
||
## 基准测试和模型库 | ||
|
||
测试结果和模型可以在[模型库](./model_zoo.md)中找到。 | ||
|
||
## 贡献指南 | ||
|
||
我们感谢所有为改进 MMTracking 所做出的努力。请参阅[CONTRIBUTING.md](https://github.com/open-mmlab/mmcv/blob/master/CONTRIBUTING.md) 以获取贡献指南,或[在此](https://github.com/open-mmlab/mmtracking/issues/73)参与开发路线的讨论。 | ||
|
||
## 常见问题 | ||
|
||
如果您在使用 MMTracking 过程中遇到任何问题,可以先参考[FAQ](https://github.com/open-mmlab/mmtracking/blob/dev-1.x/docs/en/notes/faq.md)。如未解决,您可以发布一个[issue](https://github.com/open-mmlab/mmtracking/issues/),我们会尽快回复。 |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please note that the one blank space between English & numbers and Chinese. Check all the docs.