From 817eb89ac206ec29c811b1397b20ec5aaf33c9b6 Mon Sep 17 00:00:00 2001 From: Wenwei Zhang <40779233+ZwwWayne@users.noreply.github.com> Date: Sat, 5 Mar 2022 17:46:27 +0800 Subject: [PATCH] Add user docs for get_config/get_models (#83) * add user docs for get_config/get_models * resolve comments --- docs/zh_cn/tutorials/config.md | 52 ++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/docs/zh_cn/tutorials/config.md b/docs/zh_cn/tutorials/config.md index 06441e77..8e530490 100644 --- a/docs/zh_cn/tutorials/config.md +++ b/docs/zh_cn/tutorials/config.md @@ -222,6 +222,58 @@ cfg.work_dir # "./work_dir/config_setting1" - `{{ fileBasenameNoExtension }}` - 当å‰æ–‡ä»¶ä¸åŒ…å«æ‰©å±•å的文件å,例如 file - `{{ fileExtname }}` - 当å‰æ–‡ä»¶çš„扩展å,例如 `.py` +### 跨项目继承é…置文件 + +为了é¿å…基于已有算法库开å‘的新项目å¤åˆ¶å¤§é‡çš„é…置文件,MMEngine ä¸çš„ config 支æŒé…置文件的跨项目继承。 +å‡å®š MMDetection 项目ä¸å˜åœ¨å¦‚下é…置文件 + +```text +configs/_base_/schedules/schedule_1x.py +configs/_base_/datasets.coco_instance.py +configs/_base_/default_runtime.py +configs/_base_/models/faster_rcnn_r50_fpn.py +``` + +在 MMDetection 被安装进环境(如使用 `pip install mmdet`)以åŽï¼Œæ–°çš„项目å¯ä»¥ç›´æŽ¥åœ¨è‡ªå·±çš„é…置文件ä¸ç»§æ‰¿ MMDetection çš„é…ç½®æ–‡ä»¶è€Œæ— éœ€æ‹·è´ï¼Œä½¿ç”¨æ–¹å¼å¦‚下所示 + +```python +_base_ = [ + 'mmdet::_base_/schedules/schedule_1x.py', + 'mmdet::_base_/datasets.coco_instance.py', + 'mmdet::_base_/default_runtime.py' + 'mmdet::_base_/models/faster_rcnn_r50_fpn.py', +] +``` + +通过指定 `mmdet::` ,Config 类会去检索 mmdet 包ä¸çš„é…置文件目录,并继承指定的é…置文件。 +实际上,åªè¦ç®—法库的 `setup.py` æ–‡ä»¶ç¬¦åˆ [MMEngine 安装规范](todo),在æ£ç¡®å®‰è£…算法库以åŽï¼Œæ–°çš„项目就å¯ä»¥ä½¿ç”¨ä¸Šè¿°ç”¨æ³•åŽ»ç»§æ‰¿å·²æœ‰ç®—法库的é…ç½®æ–‡ä»¶è€Œæ— éœ€æ‹·è´ã€‚ + +### 跨项目使用é…置文件 + +MMEngine 还æ供了 `get_config` å’Œ `get_model` 两个接å£ï¼Œæ”¯æŒå¯¹ç¬¦åˆ [MMEngine 安装规范](todo) 的算法库ä¸çš„模型和é…置文件åšç´¢å¼•å¹¶è¿›è¡Œ API 调用。通过 `get_model` 接å£å¯ä»¥èŽ·å¾—构建好的模型。通过 `get_config` 接å£å¯ä»¥èŽ·å¾—é…置文件。 + +`get_model` çš„ä½¿ç”¨æ ·ä¾‹å¦‚ä¸‹æ‰€ç¤ºï¼Œä½¿ç”¨å’Œè·¨é¡¹ç›®ç»§æ‰¿é…置文件相åŒçš„è¯æ³•ï¼ŒæŒ‡å®š `mmdet::`,å³å¯åœ¨ mmdet 包ä¸æ£€ç´¢å¯¹åº”çš„é…置文件并构建和åˆå§‹åŒ–相应模型。 +用户å¯ä»¥é€šè¿‡æŒ‡å®š `pretrained=True` 获得已ç»åŠ 载预è®ç»ƒæƒé‡çš„模型以进行è®ç»ƒæˆ–者推ç†ã€‚ + +```python +from mmengine import get_model +model = get_model('mmdet::faster_rcnn/faster_rcnn_r50_fpn_1x_coco', pretrained=True) +``` + +`get_config` çš„ä½¿ç”¨æ ·ä¾‹å¦‚ä¸‹æ‰€ç¤ºï¼Œä½¿ç”¨å’Œè·¨é¡¹ç›®ç»§æ‰¿é…置文件相åŒçš„è¯æ³•ï¼ŒæŒ‡å®š `mmdet::`,å³å¯å®žçŽ°åŽ» mmdet 包ä¸æ£€ç´¢å¹¶åŠ 载对应的é…置文件。 +用户å¯ä»¥åŸºäºŽè¿™æ ·å¾—到的é…置文件进行推ç†ä¿®æ”¹å¹¶è‡ªå®šä¹‰è‡ªå·±çš„算法模型。 +åŒæ—¶ï¼Œå¦‚果用户指定 `pretrained=True` ,得到的é…置文件ä¸ä¼šæ–°å¢ž `model_path` å—段,指定了对应模型预è®ç»ƒæƒé‡çš„路径。 + +```python +from mmengine import get_config +cfg = get_config('mmdet::faster_rcnn/faster_rcnn_r50_fpn_1x_coco', pretrained=True) +model_path = cfg.model_path + +from mmdet.models import build_model +model = build_model(cfg.model) +load_checkpoint(model, model_path) +``` + ### 导入自定义 Python æ¨¡å— å°†é…置与注册器结åˆèµ·æ¥ä½¿ç”¨æ—¶ï¼Œå¦‚果我们往注册器ä¸æ³¨å†Œäº†ä¸€äº›è‡ªå®šä¹‰çš„类,就å¯èƒ½ä¼šé‡åˆ°ä¸€äº›é—®é¢˜ã€‚å› ä¸ºè¯»å–é…置文件的时候,这部分代ç å¯èƒ½è¿˜æ²¡æœ‰è¢«æ‰§è¡Œåˆ°ï¼Œæ‰€ä»¥å¹¶æœªå®Œæˆæ³¨å†Œè¿‡ç¨‹ï¼Œä»Žè€Œå¯¼è‡´æž„建自定义类的时候报错。 -- GitLab