!12952 Add ssd and yolov3 CN README files

From: @chengxb7532
Reviewed-by: @guoqi1024
Signed-off-by: @guoqi1024
pull/12952/MERGE
mindspore-ci-bot 4 years ago committed by Gitee
commit ad965beb82

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -0,0 +1,238 @@
# 目录
<!-- TOC -->
- [目录](#目录)
- [YOLOv3_ResNet18描述](#yolov3_resnet18描述)
- [模型架构](#模型架构)
- [数据集](#数据集)
- [环境要求](#环境要求)
- [快速入门](#快速入门)
- [脚本说明](#脚本说明)
- [脚本及样例代码](#脚本及样例代码)
- [脚本参数](#脚本参数)
- [训练过程](#训练过程)
- [Ascend上训练](#ascend上训练)
- [评估过程](#评估过程)
- [Ascend评估](#ascend评估)
- [模型描述](#模型描述)
- [性能](#性能)
- [评估性能](#评估性能)
- [推理性能](#推理性能)
- [随机情况说明](#随机情况说明)
- [ModelZoo主页](#modelzoo主页)
<!-- /TOC -->
# YOLOv3_ResNet18描述
基于ResNet-18的YOLOv3网络支持训练和评估。
[论文](https://arxiv.org/abs/1804.02767): Joseph Redmon, Ali Farhadi. arXiv preprint arXiv:1804.02767, 2018.2, 4, 7, 11.
# 模型架构
YOLOv3整体网络架构如下
我们使用ResNet18作为YOLOv3_ResNet18的主干。ResNet18架构分为四个阶段。ResNet架构分别使用大小为7×7和3×3的内核执行初始卷积和最大池化。此后每个阶段的网络都有不同的残差模块2, 2, 2, 2包含两个3×3的卷积层。最后是一个平均池化层和一个全连接层。
# 数据集
使用的数据集:[COCO 2017](<http://images.cocodataset.org/>)
- 数据集大小19 GB
- 训练集18 GB118000张图片
- 验证集1GB5000张图片
- 标注241 MB包含实例字幕person_keypoints等
- 数据格式图片和json文件
- 标注数据在dataset.py中处理。
- 数据集
1. 目录结构如下:
```
.
├── annotations # 标注jsons
├── train2017 # 训练数据集
└── val2017 # 推理数据集
```
2. 将数据集信息整理成TXT文件每行如下
```
train2017/0000001.jpg 0,259,401,459,7 35,28,324,201,2 0,30,59,80,2
```
每行是按空间分割的图像标注,第一列是图像的相对路径,其余为[xmin,ymin,xmax,ymax,class]格式的框和类信息。`dataset.py`是解析脚本,我们从`image_dir`(数据集目录)和`anno_path`TXT文件路径的相对路径连接起来的图像路径中读取图像。`image_dir`和`anno_path`为外部输入。
# 环境要求
- 硬件Ascend处理器
- 准备Ascend处理器搭建硬件环境。如需试用Ascend处理器请发送[申请表](https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/file/other/Ascend%20Model%20Zoo%E4%BD%93%E9%AA%8C%E8%B5%84%E6%BA%90%E7%94%B3%E8%AF%B7%E8%A1%A8.docx)至ascend@huawei.com审核通过即可获得资源。
- 框架
- [MindSpore](https://www.mindspore.cn/install)
- 如需查看详情,请参见如下资源:
- [MindSpore教程](https://www.mindspore.cn/tutorial/training/zh-CN/master/index.html)
- [MindSpore Python API](https://www.mindspore.cn/doc/api_python/zh-CN/master/index.html)
# 快速入门
通过官方网站安装MindSpore后您可以按照如下步骤进行训练和评估
- Ascend处理器环境运行
```shell script
# 运行单机训练示例
sh run_standalone_train.sh [DEVICE_ID] [EPOCH_SIZE] [MINDRECORD_DIR] [IMAGE_DIR] [ANNO_PATH]
# 运行分布式训练示例
sh run_distribute_train.sh [DEVICE_NUM] [EPOCH_SIZE] [MINDRECORD_DIR] [IMAGE_DIR] [ANNO_PATH] [RANK_TABLE_FILE]
# 运行评估示例
sh run_eval.sh [DEVICE_ID] [CKPT_PATH] [MINDRECORD_DIR] [IMAGE_DIR] [ANNO_PATH]
```
# 脚本说明
## 脚本及样例代码
```text
└── cv
├── README.md // 所有模型相关说明
├── mindspore_hub_conf.md // Mindspore Hub配置
└── yolov3_resnet18
├── README.md // yolov3_resnet18相关说明
├── scripts
├── run_distribute_train.sh // Ascend上分布式shell脚本
├── run_standalone_train.sh // Ascend上分布式shell脚本
└── run_eval.sh // Ascend上评估的shell脚本
├── src
├── dataset.py // 创建数据集
├── yolov3.py // yolov3架构
├── config.py // 参数配置
└── utils.py // 工具函数
├── train.py // 训练脚本
└── eval.py // 评估脚本
```
## 脚本参数
```text
train.py和config.py中主要参数如下
device_num: 使用设备编号默认为1。
lr: 学习率默认为0.001。
epoch_size: 轮次大小默认为50。
batch_size: 批次大小默认为32。
pre_trained: 预训练的检查点文件路径。
pre_trained_epoch_size: 预训练的轮次大小。
mindrecord_dir: Mindrecord目录。
image_dir: 数据集路径。
anno_path: 标注路径。
img_shape: 输入到模型的图像高度和宽度。
```
## 训练过程
### Ascend上训练
训练模型运行`train.py`,使用数据集`image_dir`、`anno_path`和`mindrecord_dir`。如果`mindrecord_dir`为空,则通过`image_dir`和`anno_path`(图像绝对路径由`image_dir`和`anno_path`中的相对路径连接)生成[MindRecord](https://www.mindspore.cn/tutorial/training/zh-CN/master/advanced_use/convert_dataset.html)文件。**注意,如果`mindrecord_dir`不为空,将使用`mindrecord_dir`而不是`image_dir`和`anno_path`。**
- 单机模式
```shell script
sh run_standalone_train.sh 0 50 ./Mindrecord_train ./dataset ./dataset/train.txt
```
输入变量为设备编号、轮次大小、MindRecord目录路径、数据集目录路径、训练TXT文件路径。
- 分布式模式
```shell script
sh run_distribute_train.sh 8 150 /data/Mindrecord_train /data /data/train.txt /data/hccl.json
```
输入变量为设备编号、轮次大小、MindRecord目录路径、数据集目录路径、训练TXT文件路径和[hccl_tools配置文件](https://gitee.com/mindspore/mindspore/tree/master/model_zoo/utils/hccl_tools)。**最好使用绝对路径。**
每步的损失值和时间如下:
```text
epoch:145 step:156, loss is 12.202981
epoch time:25599.22742843628, per step time:164.0976117207454
epoch:146 step:156, loss is 16.91706
epoch time:23199.971675872803, per step time:148.7177671530308
epoch:147 step:156, loss is 13.04007
epoch time:23801.95164680481, per step time:152.57661312054364
epoch:148 step:156, loss is 10.431475
epoch time:23634.241580963135, per step time:151.50154859591754
epoch:149 step:156, loss is 14.665991
epoch time:24118.8325881958, per step time:154.60790120638333
epoch:150 step:156, loss is 10.779521
epoch time:25319.57221031189, per step time:162.30495006610187
```
注意结果为两类人与脸使用了我们自己的标注与COCO 2017您可以更改`config.py`中的`num_classes`来训练您的数据集。我们将在COCO 2017中支持80个分类。
## 评估过程
### Ascend评估
运行`eval.py`,数据集为`image_dir`、`anno_path`(评估TXT)、`mindrecord_dir`和`ckpt_path`。`ckpt_path`是[检查点](https://www.mindspore.cn/tutorial/training/zh-CN/master/use/save_model.html)文件的路径。
```shell script
sh run_eval.sh 0 yolo.ckpt ./Mindrecord_eval ./dataset ./dataset/eval.txt
```
输入变量为设备编号、检查点路径、MindRecord目录路径、数据集目录路径、训练TXT文件路径。
您将获得每类的精度和召回值:
```text
class 0 precision is 88.18%, recall is 66.00%
class 1 precision is 85.34%, recall is 79.13%
```
注意精度和召回值是使用我们自己的标注和COCO 2017的两种分类人与脸的结果。
# 模型描述
## 性能
### 评估性能
| 参数 | Ascend |
| -------------------------- | ----------------------------------------------------------- |
| 模型版本 | YOLOv3_Resnet18 V1 |
| 资源 | Ascend 910 CPU 2.60GHz192核内存755G |
| 上传日期 | 2020-06-01 |
| MindSpore版本 | 0.2.0-alpha |
| 数据集 | COCO2017 |
| 训练参数 | epoch = 150, batch_size = 32, lr = 0.001 |
| 优化器 | Adam |
| 损失函数 | Sigmoid交叉熵 |
| 输出 | 概率 |
| 速度 | 1pc120毫秒/步; 8卡160毫秒/步 |
| 总时长 | 1pc150分钟; 8卡: 70分钟 |
| 参数(M) | 189 |
| 脚本 | [yolov3_resnet18脚本](https://gitee.com/mindspore/mindspore/tree/master/model_zoo/official/cv/yolov3_resnet18) | [yolov3_resnet18脚本](https://gitee.com/mindspore/mindspore/tree/master/model_zoo/official/cv/yolov3_resnet18) |
### 推理性能
| 参数 | Ascend |
| ------------------- | ----------------------------------------------- |
| 模型版本 | YOLOv3_Resnet18 V1 |
| 资源 | Ascend 910 |
| 上传日期 | 2020-06-01 |
| MindSpore版本 | 0.2.0-alpha |
| 数据集 | COCO2017 |
| batch_size | 1 |
| 输出 | 精度和召回 |
| 准确性 | class 0: 88.18%/66.00%; class 1: 85.34%/79.13% |
# 随机情况说明
在dataset.py中我们设置了“create_dataset”函数内的种子。同时还使用了train.py中的随机种子。
# ModelZoo主页
请浏览官网[主页](https://gitee.com/mindspore/mindspore/tree/master/model_zoo)。
Loading…
Cancel
Save