From 48ddaa994ef7efd503e9a4bc33bf684d6caa2781 Mon Sep 17 00:00:00 2001 From: qingqing01 Date: Fri, 18 Dec 2020 17:43:14 +0800 Subject: [PATCH] Update docs (#1926) --- README.md | 10 +++++----- docs/tutorials/INSTALL_cn.md | 2 +- docs/tutorials/PrepareDataSet.md | 14 ++++++++++---- ppdet/modeling/bbox.py | 21 +++++---------------- ppdet/utils/checkpoint.py | 11 +++++++++++ 5 files changed, 32 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index 5bd121b34..c09a6a361 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,15 @@ # PaddleDetection -动态图版本的PaddleDetection, 支持的模型: +动态图版本的PaddleDetection, 此版本为试用版本,还在持续优化设计、性能、新增模型、文档等。 + + +支持的模型: - Faster-RCNN (FPN) - Mask-RCNN (FPN) - Cascade RCNN - YOLOv3 +- SSD 扩展特性: @@ -19,7 +23,6 @@ ### 教程 - [安装说明](docs/tutorials/INSTALL_cn.md) -- [快速开始](docs/tutorials/QUICK_STARTED_cn.md) - [训练/评估/预测流程](docs/tutorials/GETTING_STARTED_cn.md) - [常见问题汇总](docs/FAQ.md) - [推理部署](deploy) @@ -30,6 +33,3 @@ ## 模型库 - [模型库](docs/MODEL_ZOO_cn.md) - -## 许可证书 -本项目的发布受[Apache 2.0 license](LICENSE)许可认证。 diff --git a/docs/tutorials/INSTALL_cn.md b/docs/tutorials/INSTALL_cn.md index a294691f4..93378ace2 100644 --- a/docs/tutorials/INSTALL_cn.md +++ b/docs/tutorials/INSTALL_cn.md @@ -69,6 +69,6 @@ git clone https://github.com/PaddlePaddle/PaddleDetection.git 也可以通过 [https://gitee.com/paddlepaddle/PaddleDetection](https://gitee.com/paddlepaddle/PaddleDetection) 克隆。 ``` -cd +cd git clone https://gitee.com/paddlepaddle/PaddleDetection ``` diff --git a/docs/tutorials/PrepareDataSet.md b/docs/tutorials/PrepareDataSet.md index 79286de89..bf2711347 100644 --- a/docs/tutorials/PrepareDataSet.md +++ b/docs/tutorials/PrepareDataSet.md @@ -15,6 +15,7 @@ - [用户数据数据转换示例](#用户数据数据转换示例) ### 目标检测数据说明 + 目标检测的数据比分类复杂,一张图像中,需要标记出各个目标区域的位置和类别。 一般的目标区域位置用一个矩形框来表示,一般用以下3种方式表达: @@ -28,6 +29,7 @@ 常见的目标检测数据集如Pascal VOC和COCO,采用的是第一种 `x1,y1,x2,y2` 表示物体的bounding box. ### 准备训练数据 + PaddleDetection默认支持[COCO](http://cocodataset.org)和[Pascal VOC](http://host.robots.ox.ac.uk/pascal/VOC/) 和[WIDER-FACE](http://shuoyang1213.me/WIDERFACE/) 数据源。 同时还支持自定义数据源,包括: @@ -43,8 +45,10 @@ ppdet_root=$(pwd) ``` #### VOC数据数据 + VOC数据是[Pascal VOC](http://host.robots.ox.ac.uk/pascal/VOC/) 比赛使用的数据。Pascal VOC比赛不仅包含图像分类分类任务,还包含图像目标检测、图像分割等任务,其标注文件中包含多个任务的标注内容。 VOC数据集指的是Pascal VOC比赛使用的数据。用户自定义的VOC数据,xml文件中的非必须字段,请根据实际情况选择是否标注或是否使用默认值。 + ##### VOC数据集下载 - 通过代码自动化下载VOC数据集 @@ -114,6 +118,7 @@ VOC数据集指的是Pascal VOC比赛使用的数据。用户自定义的VOC数 按照如上数据文件组织结构组织文件即可。 ##### VOC数据标注文件介绍 + VOC数据是每个图像文件对应一个同名的xml文件,xml文件中标记物体框的坐标和类别等信息。例如图像`2007_002055.jpg`: ![](../images/2007_002055.jpg) @@ -410,8 +415,9 @@ roadsign数据集统计: | 数据 | 图片数量 | | :--------: | :-----------: | -| train | 701 | -| valid | 176 | +| train | 701 | +| valid | 176 | -**说明:**(1)用户数据,建议在训练前仔细检查数据,避免因数据标注格式错误或图像数据不完整造成训练过程中的crash -(2)如果图像尺寸太大的话,在不限制读入数据尺寸情况下,占用内存较多,会造成内存/显存溢出,请合理设置batch_size,可从小到大尝试 +**说明:** +(1)用户数据,建议在训练前仔细检查数据,避免因数据标注格式错误或图像数据不完整造成训练过程中的crash +(2)如果图像尺寸太大的话,在不限制读入数据尺寸情况下,占用内存较多,会造成内存/显存溢出,请合理设置batch_size,可从小到大尝试 diff --git a/ppdet/modeling/bbox.py b/ppdet/modeling/bbox.py index 9c494d457..505373ab2 100644 --- a/ppdet/modeling/bbox.py +++ b/ppdet/modeling/bbox.py @@ -45,10 +45,11 @@ class Anchor(object): return rpn_scores, rpn_deltas, anchors def generate_loss_inputs(self, inputs, rpn_head_out, anchors): - assert len(rpn_head_out) == len( - anchors - ), "rpn_head_out and anchors should have same length, but received rpn_head_out' length is {} and anchors' length is {}".format( - len(rpn_head_out), len(anchors)) + if len(rpn_head_out) != len(anchors): + raise ValueError( + "rpn_head_out and anchors should have same length, " + " but received rpn_head_out' length is {} and anchors' " + " length is {}".format(len(rpn_head_out), len(anchors))) rpn_score, rpn_delta, anchors = self._get_target_input(rpn_head_out, anchors) @@ -69,18 +70,6 @@ class Anchor(object): return outs -@register -class AnchorYOLO(object): - __inject__ = ['anchor_generator'] - - def __init__(self, anchor_generator): - super(AnchorYOLO, self).__init__() - self.anchor_generator = anchor_generator - - def __call__(self): - return self.anchor_generator() - - @register class Proposal(object): __inject__ = ['proposal_generator', 'proposal_target_generator'] diff --git a/ppdet/utils/checkpoint.py b/ppdet/utils/checkpoint.py index 2452aec56..44e3f8269 100644 --- a/ppdet/utils/checkpoint.py +++ b/ppdet/utils/checkpoint.py @@ -147,6 +147,17 @@ def load_pretrain_weight(model, def save_model(model, optimizer, save_dir, save_name, last_epoch): + """ + save model into disk. + + Args: + model (paddle.nn.Layer): the Layer instalce to save parameters. + optimizer (paddle.optimizer.Optimizer): the Optimizer instance to + save optimizer states. + save_dir (str): the directory to be saved. + save_name (str): the path to be saved. + last_epoch (int): the epoch index. + """ if not os.path.exists(save_dir): os.makedirs(save_dir) save_path = os.path.join(save_dir, save_name) -- GitLab