diff --git a/docs/advanced_tutorials/inference/EXPORT_MODEL.md b/docs/advanced_tutorials/inference/EXPORT_MODEL.md index 47c074e7ff595f262c7ad721401f8d0064e10d4f..68f8b9edc1c9e9fdaca8da15ecc12d95c8da51b5 100644 --- a/docs/advanced_tutorials/inference/EXPORT_MODEL.md +++ b/docs/advanced_tutorials/inference/EXPORT_MODEL.md @@ -1,9 +1,10 @@ # 模型导出 训练得到一个满足要求的模型后,如果想要将该模型接入到C++预测库或者Serving服务,需要通过`tools/export_model.py`导出该模型。同时,会导出预测时使用的配置文件,路径与模型保存路径相同, 配置文件名为`infer_cfg.yml`。 + **说明:** -- 导出模型输入为网络输入图像,即原始图片经过预处理后的图像,具体预处理方式可参考配置文件中TestReader部分。各类检测模型的输入格式分别为: +- **输入部分:**导出模型输入为网络输入图像,即原始图片经过预处理后的图像,具体预处理方式可参考配置文件中TestReader部分。各类检测模型的输入格式分别为: | 模型系列名称 | 输入图像预处理方式 | 其他输入信息 | | :---------: | ----------- | ---------- | @@ -12,8 +13,12 @@ | RCNN | 归一化,等比例缩放 | 1. im\_info: 格式为[input\_H, input\_W, scale],input为输入图像,scale为```输入图像大小/原始图像大小```
2. im\_shape:格式为[origin\_H, origin\_W, 1.], origin为原始图像 | | RCNN+FPN | 归一化,等比例缩放,对图像填充0使得长宽均为32的倍数 | 1. im\_info: 格式为[input\_H, input\_W, scale],input为输入图像,scale为```输入图像大小/原始图像大小```
2. im\_shape:格式为[origin\_H, origin\_W, 1.], origin为原始图像 | | RetinaNet | 归一化,等比例缩放,对图像填充0使得长宽均为128的倍数 | 1. im\_info: 格式为[input\_H, input\_W, scale],input为输入图像,scale为```输入图像大小/原始图像大小```
2. im\_shape:格式为[origin\_H, origin\_W, 1.], origin为原始图像 | +| Face | 归一化 | im\_shape: 格式为[origin\_H, origin\_W], origin为原始图像 | + + +- **输出部分:**导出模型输出统一为NMS的输出,形状为[N, 6], 其中N为预测框的个数,6为[class_id, score, x1, y1, x2, y2]。 -- 导出模型输出统一为NMS的输出,形状为[N, 6], 其中N为预测框的个数,6为[class_id, score, x1, y1, x2, y2]. +- 模型导出不支持模型结构中包含```fluid.layers.py_func```的情况。 ## 启动参数说明 diff --git a/docs/tutorials/FAQ.md b/docs/tutorials/FAQ.md index b583ba6c48360a24d8cbd1de9cb17ae4f1b78737..c7d7124e004c47f14c703fbb32954b40322bde74 100644 --- a/docs/tutorials/FAQ.md +++ b/docs/tutorials/FAQ.md @@ -25,12 +25,12 @@ batch size可以达到每GPU 4 (Tesla V100 16GB)。 **Q:** affine_channel和batch norm是什么关系?
**A:** 在RCNN系列模型加载预训练模型初始化,有时候会固定住batch norm的参数, 使用预训练模型中的全局均值和方式,并且batch norm的scale和bias参数不更新,已发布的大多ResNet系列的RCNN模型采用这种方式。这种情况下可以在config中设置norm_type为bn或affine_channel, freeze_norm为true (默认为true),两种方式等价。affne_channel的计算方式为`scale * x + bias`。只不过设置affine_channel时,内部对batch norm的参数自动做了融合。如果训练使用的affine_channel,用保存的模型做初始化,训练其他任务时,既可使用affine_channel, 也可使用batch norm, 参数均可正确加载。 -**Q:** 某些配置项会在多个模块中用到(如 `num_classes`),如何避免在配置文件中多次重复设置? +**Q:** 某些配置项会在多个模块中用到(如 `num_classes`),如何避免在配置文件中多次重复设置?
**A:** 框架提供了 `__shared__` 标记来实现配置的共享,用户可以标记参数,如 `__shared__ = ['num_classes']` ,配置数值作用规则如下: 1. 如果模块配置中提供了 `num_classes` ,会优先使用其数值。 2. 如果模块配置中未提供 `num_classes` ,但配置文件中存在全局键值,那么会使用全局键值。 3. 两者均为配置的情况下,将使用默认值(`81`)。 -**Q:** 在配置文件中设置use_process=True,并且运行报错:`not enough space for reason[failed to malloc 601 pages...` +**Q:** 在配置文件中设置use_process=True,并且运行报错:`not enough space for reason[failed to malloc 601 pages...`
**A:** 当前Reader的共享存储队列空间不足,请增大配置文件`xxx.yml`中的`memsize`,如`memsize: 3G`->`memsize: 6G`。或者配置文件中设置`use_process=False`。