[Fix]: Fix empty link bug (#14)

This commit is contained in:
Brandon Liu 2021-12-15 21:53:12 +08:00 committed by GitHub
parent 43ba700ad2
commit 0425effc40
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 77 additions and 32 deletions

View File

@ -6,7 +6,7 @@
## Overview of `Pipeline` ## Overview of `Pipeline`
`DataSource` and `Pipeline` are two important components in `Dataset`. We have introduced `DataSource` in [add_new_dataset](./new_dataset.md). And the `Pipeline` is responsible for applying a series of data augmentations to images, such as random flip. `DataSource` and `Pipeline` are two important components in `Dataset`. We have introduced `DataSource` in [add_new_dataset](./1_new_dataset.md). And the `Pipeline` is responsible for applying a series of data augmentations to images, such as random flip.
Here is a config example of `Pipeline` for `SimCLR` training: Here is a config example of `Pipeline` for `SimCLR` training:

View File

@ -79,7 +79,7 @@ Some common hooks are not registered through `custom_hooks`, they are
| `EvalHook` | LOW (70) | | `EvalHook` | LOW (70) |
| `LoggerHook(s)` | VERY_LOW (90) | | `LoggerHook(s)` | VERY_LOW (90) |
`OptimizerHook`, `MomentumUpdaterHook` and `LrUpdaterHook` have been introduced in [sehedule strategy](./schedule.md). `IterTimerHook` is used to record elapsed time and does not support modification. `OptimizerHook`, `MomentumUpdaterHook` and `LrUpdaterHook` have been introduced in [sehedule strategy](./4_schedule.md). `IterTimerHook` is used to record elapsed time and does not support modification.
Here we reveal how to customize `CheckpointHook`, `LoggerHooks`, and `EvalHook`. Here we reveal how to customize `CheckpointHook`, `LoggerHooks`, and `EvalHook`.

View File

@ -94,13 +94,13 @@ Remarks:
## Detection ## Detection
Here we prefer to use MMDetection to do the detection task. First, make sure you have installed `MIM`, which is also a project of OpenMMLab. Please refer to [MIM](https://github.com/open-mmlab/mim/blob/main/docs/installation.md) for installation. Or simply from pypi Here we prefer to use MMDetection to do the detection task. First, make sure you have installed [MIM](https://github.com/open-mmlab/mim), which is also a project of OpenMMLab.
```shell ```shell
pip install openmim pip install openmim
``` ```
It is very easy to install the package. It is very easy to install the package.
Besides, please refer to MMDet for [installation](https://github.com/open-mmlab/mmdetection/blob/master/docs/get_started.md) and [data preparation](https://github.com/open-mmlab/mmdetection/blob/master/docs/1_exist_data_model.md) Besides, please refer to MMDet for [installation](https://github.com/open-mmlab/mmdetection/blob/master/docs/en/get_started.md) and [data preparation](https://github.com/open-mmlab/mmdetection/blob/master/docs/en/1_exist_data_model.md)
After installation, you can run MMDet with simple command After installation, you can run MMDet with simple command
```shell ```shell
@ -127,7 +127,8 @@ bash run.sh ${DET_CFG} ${OUTPUT_FILE}
``` ```
## Segmentation ## Segmentation
For semantic segmentation task, we are using MMSegmentation. First, make sure you have installed `MIM`, which is also a project of OpenMMLab. Please refer to [MIM](https://github.com/open-mmlab/mim/blob/main/docs/installation.md) for installation. Or simply from pypi For semantic segmentation task, we are using MMSegmentation. First, make sure you have installed [MIM](https://github.com/open-mmlab/mim), which is also a project of OpenMMLab.
```shell ```shell
pip install openmim pip install openmim
``` ```

View File

@ -1,8 +1,16 @@
# Tutorial 1: Adding New Dataset # Tutorial 1: Adding New Dataset
In this tutorial, we introduce the basic steps to create your customized dataset:
- [Tutorial 1: Adding New Dataset](#tutorial-1-adding-new-dataset)
- [An example of customized dataset](#an-example-of-customized-dataset)
- [Creating the `DataSource`](#creating-the-datasource)
- [Creating the `Dataset`](#creating-the-dataset)
- [Modify config file](#modify-config-file)
If your algorithm does not need any customized dataset, you can use these off-the-shelf datasets under [datasets](../../mmselfsup/datasets). But to use these existing datasets, you have to convert your dataset to existing dataset format. If your algorithm does not need any customized dataset, you can use these off-the-shelf datasets under [datasets](../../mmselfsup/datasets). But to use these existing datasets, you have to convert your dataset to existing dataset format.
## An example of customized dataset ### An example of customized dataset
Assuming the format of your dataset's annotation file is: Assuming the format of your dataset's annotation file is:

View File

@ -1,8 +1,12 @@
# Tutorial 2: Customize Data Pipelines # Tutorial 2: Customize Data Pipelines
- [Tutorial 2: Customize Data Pipelines](#tutorial-2-customize-data-pipelines)
- [Overview of `Pipeline`](#overview-of-pipeline)
- [Creating new augmentations in `Pipeline`](#creating-new-augmentations-in-pipeline)
## Overview of `Pipeline` ## Overview of `Pipeline`
`DataSource` and `Pipeline` are two important components in `Dataset`. We have introduced `DataSource` in [add_new_dataset](./new_dataset.md). And the `Pipeline` is responsible for applying a series of data augmentations to images, such as random flip. `DataSource` and `Pipeline` are two important components in `Dataset`. We have introduced `DataSource` in [add_new_dataset](./1_new_dataset.md). And the `Pipeline` is responsible for applying a series of data augmentations to images, such as random flip.
Here is a config example of `Pipeline` for `SimCLR` training: Here is a config example of `Pipeline` for `SimCLR` training:

View File

@ -1,5 +1,11 @@
# Tutorial 3: Adding New Modules # Tutorial 3: Adding New Modules
- [Tutorial 3: Adding New Modules](#tutorial-3-adding-new-modules)
- [Add new backbone](#add-new-backbone)
- [Add new necks](#add-new-necks)
- [Add new loss](#add-new-loss)
- [Combine all](#combine-all)
In self-supervised learning domain, each model can be divided into following four parts: In self-supervised learning domain, each model can be divided into following four parts:
- backbone: used to extract image's feature - backbone: used to extract image's feature

View File

@ -1,5 +1,17 @@
# Tutorial 4: Customize Schedule # Tutorial 4: Customize Schedule
- [Tutorial 4: Customize Schedule](#tutorial-4-customize-schedule)
- [Customize optimizer supported by Pytorch](#customize-optimizer-supported-by-pytorch)
- [Customize learning rate schedules](#customize-learning-rate-schedules)
- [Learning rate decay](#learning-rate-decay)
- [Warmup strategy](#warmup-strategy)
- [Customize momentum schedules](#customize-momentum-schedules)
- [Parameter-wise configuration](#parameter-wise-configuration)
- [Gradient clipping and gradient accumulation](#gradient-clipping-and-gradient-accumulation)
- [Gradient clipping](#gradient-clipping)
- [Gradient accumulation](#gradient-accumulation)
- [Customize self-implemented optimizer](#customize-self-implemented-optimizer)
In this tutorial, we will introduce some methods about how to construct optimizers, customize learning rate, momentum schedules, parameter-wise configuration, gradient clipping, gradient accumulation, and customize self-implemented methods for the project. In this tutorial, we will introduce some methods about how to construct optimizers, customize learning rate, momentum schedules, parameter-wise configuration, gradient clipping, gradient accumulation, and customize self-implemented methods for the project.
## Customize optimizer supported by Pytorch ## Customize optimizer supported by Pytorch
@ -143,7 +155,7 @@ Here is an example:
```py ```py
data = dict(imgs_per_gpu=64) data = dict(imgs_per_gpu=64)
optimizer_config = dict(type="GradientCumulativeOptimizerHook", cumulative_iters=4) optimizer_config = dict(type="DistOptimizerHook", update_interval=4)
``` ```
Indicates that during training, back-propagation is performed every 4 iters. And the above is equivalent to: Indicates that during training, back-propagation is performed every 4 iters. And the above is equivalent to:

View File

@ -1,5 +1,18 @@
# Tutorial 5: Customize Runtime Settings # Tutorial 5: Customize Runtime Settings
- [Tutorial 5: Customize Runtime Settings](#tutorial-5-customize-runtime-settings)
- [Customize Workflow](#customize-workflow)
- [Hooks](#hooks)
- [default training hooks](#default-training-hooks)
- [CheckpointHook](#checkpointhook)
- [LoggerHooks](#loggerhooks)
- [EvalHook](#evalhook)
- [Use other implemented hooks](#use-other-implemented-hooks)
- [Customize self-implemented hooks](#customize-self-implemented-hooks)
- [1. Implement a new hook](#1-implement-a-new-hook)
- [2. Import the new hook](#2-import-the-new-hook)
- [3. Modify the config](#3-modify-the-config)
In this tutorial, we will introduce some methods about how to customize workflow and hooks when running your own settings for the project. In this tutorial, we will introduce some methods about how to customize workflow and hooks when running your own settings for the project.
## Customize Workflow ## Customize Workflow
@ -38,17 +51,17 @@ The custom hooks are registered through custom_hooks. Generally, they are hooks
Priority list Priority list
| Level | Value | | Level | Value |
|:--:|:--:| | :-------------: | :---: |
| HIGHEST | 0 | | HIGHEST | 0 |
| VERY_HIGH | 10 | | VERY_HIGH | 10 |
| HIGH | 30 | | HIGH | 30 |
| ABOVE_NORMAL | 40 | | ABOVE_NORMAL | 40 |
| NORMAL(default) | 50 | | NORMAL(default) | 50 |
| BELOW_NORMAL | 60 | | BELOW_NORMAL | 60 |
| LOW | 70 | | LOW | 70 |
| VERY_LOW | 90 | | VERY_LOW | 90 |
| LOWEST | 100 | | LOWEST | 100 |
The priority determines the execution order of the hooks. Before training, the log will print out the execution order of the hooks at each stage to facilitate debugging. The priority determines the execution order of the hooks. Before training, the log will print out the execution order of the hooks at each stage to facilitate debugging.
@ -56,17 +69,17 @@ The priority determines the execution order of the hooks. Before training, the l
Some common hooks are not registered through `custom_hooks`, they are Some common hooks are not registered through `custom_hooks`, they are
| Hooks | Priority | | Hooks | Priority |
|:--:|:--:| | :-------------------: | :---------------: |
| `LrUpdaterHook` | VERY_HIGH (10) | | `LrUpdaterHook` | VERY_HIGH (10) |
| `MomentumUpdaterHook` | HIGH (30) | | `MomentumUpdaterHook` | HIGH (30) |
| `OptimizerHook` | ABOVE_NORMAL (40) | | `OptimizerHook` | ABOVE_NORMAL (40) |
| `CheckpointHook` | NORMAL (50) | | `CheckpointHook` | NORMAL (50) |
| `IterTimerHook` | LOW (70) | | `IterTimerHook` | LOW (70) |
| `EvalHook` | LOW (70) | | `EvalHook` | LOW (70) |
| `LoggerHook(s)` | VERY_LOW (90) | | `LoggerHook(s)` | VERY_LOW (90) |
`OptimizerHook`, `MomentumUpdaterHook` and `LrUpdaterHook` have been introduced in [sehedule strategy](./schedule.md). `IterTimerHook` is used to record elapsed time and does not support modification. `OptimizerHook`, `MomentumUpdaterHook` and `LrUpdaterHook` have been introduced in [sehedule strategy](./4_schedule.md). `IterTimerHook` is used to record elapsed time and does not support modification.
Here we reveal how to customize `CheckpointHook`, `LoggerHooks`, and `EvalHook`. Here we reveal how to customize `CheckpointHook`, `LoggerHooks`, and `EvalHook`.

View File

@ -94,13 +94,13 @@ Remarks:
## Detection ## Detection
Here we prefer to use MMDetection to do the detection task. First, make sure you have installed `MIM`, which is also a project of OpenMMLab. Please refer to [MIM](https://github.com/open-mmlab/mim/blob/main/docs/installation.md) for installation. Or simply from pypi Here we prefer to use MMDetection to do the detection task. First, make sure you have installed [MIM](https://github.com/open-mmlab/mim), which is also a project of OpenMMLab.
```shell ```shell
pip install openmim pip install openmim
``` ```
It is very easy to install the package. It is very easy to install the package.
Besides, please refer to MMDet for [installation](https://github.com/open-mmlab/mmdetection/blob/master/docs/get_started.md) and [data preparation](https://github.com/open-mmlab/mmdetection/blob/master/docs/1_exist_data_model.md) Besides, please refer to MMDet for [installation](https://github.com/open-mmlab/mmdetection/blob/master/docs/en/get_started.md) and [data preparation](https://github.com/open-mmlab/mmdetection/blob/master/docs/en/1_exist_data_model.md)
After installation, you can run MMDet with simple command After installation, you can run MMDet with simple command
```shell ```shell
@ -127,7 +127,8 @@ bash run.sh ${DET_CFG} ${OUTPUT_FILE}
``` ```
## Segmentation ## Segmentation
For semantic segmentation task, we are using MMSegmentation. First, make sure you have installed `MIM`, which is also a project of OpenMMLab. Please refer to [MIM](https://github.com/open-mmlab/mim/blob/main/docs/installation.md) for installation. Or simply from pypi For semantic segmentation task, we are using MMSegmentation. First, make sure you have installed [MIM](https://github.com/open-mmlab/mim), which is also a project of OpenMMLab.
```shell ```shell
pip install openmim pip install openmim
``` ```