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

Update docs (#1926)

上级 bc563833
# 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)许可认证。
......@@ -69,6 +69,6 @@ git clone https://github.com/PaddlePaddle/PaddleDetection.git
也可以通过 [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
```
......@@ -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)
......@@ -413,5 +418,6 @@ roadsign数据集统计:
| train | 701 |
| valid | 176 |
**说明:**(1)用户数据,建议在训练前仔细检查数据,避免因数据标注格式错误或图像数据不完整造成训练过程中的crash
**说明:**
(1)用户数据,建议在训练前仔细检查数据,避免因数据标注格式错误或图像数据不完整造成训练过程中的crash
(2)如果图像尺寸太大的话,在不限制读入数据尺寸情况下,占用内存较多,会造成内存/显存溢出,请合理设置batch_size,可从小到大尝试
......@@ -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']
......
......@@ -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)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册