未验证 提交 48ddaa99 编写于 作者: Q qingqing01 提交者: GitHub

Update docs (#1926)

上级 bc563833
# PaddleDetection # PaddleDetection
动态图版本的PaddleDetection, 支持的模型: 动态图版本的PaddleDetection, 此版本为试用版本,还在持续优化设计、性能、新增模型、文档等。
支持的模型:
- Faster-RCNN (FPN) - Faster-RCNN (FPN)
- Mask-RCNN (FPN) - Mask-RCNN (FPN)
- Cascade RCNN - Cascade RCNN
- YOLOv3 - YOLOv3
- SSD
扩展特性: 扩展特性:
...@@ -19,7 +23,6 @@ ...@@ -19,7 +23,6 @@
### 教程 ### 教程
- [安装说明](docs/tutorials/INSTALL_cn.md) - [安装说明](docs/tutorials/INSTALL_cn.md)
- [快速开始](docs/tutorials/QUICK_STARTED_cn.md)
- [训练/评估/预测流程](docs/tutorials/GETTING_STARTED_cn.md) - [训练/评估/预测流程](docs/tutorials/GETTING_STARTED_cn.md)
- [常见问题汇总](docs/FAQ.md) - [常见问题汇总](docs/FAQ.md)
- [推理部署](deploy) - [推理部署](deploy)
...@@ -30,6 +33,3 @@ ...@@ -30,6 +33,3 @@
## 模型库 ## 模型库
- [模型库](docs/MODEL_ZOO_cn.md) - [模型库](docs/MODEL_ZOO_cn.md)
## 许可证书
本项目的发布受[Apache 2.0 license](LICENSE)许可认证。
...@@ -69,6 +69,6 @@ git clone https://github.com/PaddlePaddle/PaddleDetection.git ...@@ -69,6 +69,6 @@ git clone https://github.com/PaddlePaddle/PaddleDetection.git
也可以通过 [https://gitee.com/paddlepaddle/PaddleDetection](https://gitee.com/paddlepaddle/PaddleDetection) 克隆。 也可以通过 [https://gitee.com/paddlepaddle/PaddleDetection](https://gitee.com/paddlepaddle/PaddleDetection) 克隆。
``` ```
cd <path/to/clone/PazcccccccccccddleDetection> cd <path/to/clone/PaddleDetection>
git clone https://gitee.com/paddlepaddle/PaddleDetection git clone https://gitee.com/paddlepaddle/PaddleDetection
``` ```
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
- [用户数据数据转换示例](#用户数据数据转换示例) - [用户数据数据转换示例](#用户数据数据转换示例)
### 目标检测数据说明 ### 目标检测数据说明
目标检测的数据比分类复杂,一张图像中,需要标记出各个目标区域的位置和类别。 目标检测的数据比分类复杂,一张图像中,需要标记出各个目标区域的位置和类别。
一般的目标区域位置用一个矩形框来表示,一般用以下3种方式表达: 一般的目标区域位置用一个矩形框来表示,一般用以下3种方式表达:
...@@ -28,6 +29,7 @@ ...@@ -28,6 +29,7 @@
常见的目标检测数据集如Pascal VOC和COCO,采用的是第一种 `x1,y1,x2,y2` 表示物体的bounding box. 常见的目标检测数据集如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/) 数据源。 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) ...@@ -43,8 +45,10 @@ ppdet_root=$(pwd)
``` ```
#### VOC数据数据 #### VOC数据数据
VOC数据是[Pascal VOC](http://host.robots.ox.ac.uk/pascal/VOC/) 比赛使用的数据。Pascal VOC比赛不仅包含图像分类分类任务,还包含图像目标检测、图像分割等任务,其标注文件中包含多个任务的标注内容。 VOC数据是[Pascal VOC](http://host.robots.ox.ac.uk/pascal/VOC/) 比赛使用的数据。Pascal VOC比赛不仅包含图像分类分类任务,还包含图像目标检测、图像分割等任务,其标注文件中包含多个任务的标注内容。
VOC数据集指的是Pascal VOC比赛使用的数据。用户自定义的VOC数据,xml文件中的非必须字段,请根据实际情况选择是否标注或是否使用默认值。 VOC数据集指的是Pascal VOC比赛使用的数据。用户自定义的VOC数据,xml文件中的非必须字段,请根据实际情况选择是否标注或是否使用默认值。
##### VOC数据集下载 ##### VOC数据集下载
- 通过代码自动化下载VOC数据集 - 通过代码自动化下载VOC数据集
...@@ -114,6 +118,7 @@ VOC数据集指的是Pascal VOC比赛使用的数据。用户自定义的VOC数 ...@@ -114,6 +118,7 @@ VOC数据集指的是Pascal VOC比赛使用的数据。用户自定义的VOC数
按照如上数据文件组织结构组织文件即可。 按照如上数据文件组织结构组织文件即可。
##### VOC数据标注文件介绍 ##### VOC数据标注文件介绍
VOC数据是每个图像文件对应一个同名的xml文件,xml文件中标记物体框的坐标和类别等信息。例如图像`2007_002055.jpg` VOC数据是每个图像文件对应一个同名的xml文件,xml文件中标记物体框的坐标和类别等信息。例如图像`2007_002055.jpg`
![](../images/2007_002055.jpg) ![](../images/2007_002055.jpg)
...@@ -413,5 +418,6 @@ roadsign数据集统计: ...@@ -413,5 +418,6 @@ roadsign数据集统计:
| train | 701 | | train | 701 |
| valid | 176 | | valid | 176 |
**说明:**(1)用户数据,建议在训练前仔细检查数据,避免因数据标注格式错误或图像数据不完整造成训练过程中的crash **说明:**
(1)用户数据,建议在训练前仔细检查数据,避免因数据标注格式错误或图像数据不完整造成训练过程中的crash
(2)如果图像尺寸太大的话,在不限制读入数据尺寸情况下,占用内存较多,会造成内存/显存溢出,请合理设置batch_size,可从小到大尝试 (2)如果图像尺寸太大的话,在不限制读入数据尺寸情况下,占用内存较多,会造成内存/显存溢出,请合理设置batch_size,可从小到大尝试
...@@ -45,10 +45,11 @@ class Anchor(object): ...@@ -45,10 +45,11 @@ class Anchor(object):
return rpn_scores, rpn_deltas, anchors return rpn_scores, rpn_deltas, anchors
def generate_loss_inputs(self, inputs, rpn_head_out, anchors): def generate_loss_inputs(self, inputs, rpn_head_out, anchors):
assert len(rpn_head_out) == len( if len(rpn_head_out) != len(anchors):
anchors raise ValueError(
), "rpn_head_out and anchors should have same length, but received rpn_head_out' length is {} and anchors' length is {}".format( "rpn_head_out and anchors should have same length, "
len(rpn_head_out), len(anchors)) " 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, rpn_score, rpn_delta, anchors = self._get_target_input(rpn_head_out,
anchors) anchors)
...@@ -69,18 +70,6 @@ class Anchor(object): ...@@ -69,18 +70,6 @@ class Anchor(object):
return outs 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 @register
class Proposal(object): class Proposal(object):
__inject__ = ['proposal_generator', 'proposal_target_generator'] __inject__ = ['proposal_generator', 'proposal_target_generator']
......
...@@ -147,6 +147,17 @@ def load_pretrain_weight(model, ...@@ -147,6 +147,17 @@ def load_pretrain_weight(model,
def save_model(model, optimizer, save_dir, save_name, last_epoch): 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): if not os.path.exists(save_dir):
os.makedirs(save_dir) os.makedirs(save_dir)
save_path = os.path.join(save_dir, save_name) save_path = os.path.join(save_dir, save_name)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册