Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
hapi
提交
0e8b317f
H
hapi
项目概览
PaddlePaddle
/
hapi
通知
11
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
4
列表
看板
标记
里程碑
合并请求
7
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
H
hapi
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
4
Issue
4
列表
看板
标记
里程碑
合并请求
7
合并请求
7
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
0e8b317f
编写于
4月 15, 2020
作者:
D
dengkaipeng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
auto download pretrain
上级
7919a9bb
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
20 addition
and
14 deletion
+20
-14
examples/yolov3/README.md
examples/yolov3/README.md
+4
-7
examples/yolov3/main.py
examples/yolov3/main.py
+5
-1
examples/yolov3/pretrain_weights/download.sh
examples/yolov3/pretrain_weights/download.sh
+0
-5
hapi/download.py
hapi/download.py
+11
-1
未找到文件。
examples/yolov3/README.md
浏览文件 @
0e8b317f
...
...
@@ -99,20 +99,17 @@ YOLOv3 的网络结构由基础特征提取网络、multi-scale特征融合层
| ...
```
### 预训练权重下载
YOLOv3模型训练需下载骨干网络DarkNet53的预训练权重,可通过如下方式下载。
```
bash
sh pretrain_weights/download.sh
```
### 模型训练
数据
和预训练权重下载
完成后,可使用
`main.py`
脚本启动训练和评估,如下脚本会自动每epoch交替进行训练和模型评估,并将checkpoint默认保存在
`yolo_checkpoint`
目录下。
数据
准备
完成后,可使用
`main.py`
脚本启动训练和评估,如下脚本会自动每epoch交替进行训练和模型评估,并将checkpoint默认保存在
`yolo_checkpoint`
目录下。
YOLOv3模型训练总batch_size为64训练,以下以使用4卡Tesla P40每卡batch_size为16训练介绍训练方式。对于静态图和动态图,多卡训练中
`--batch_size`
为每卡上的batch_size,即总batch_size为
`--batch_size`
乘以卡数。
YOLOv3模型训练须加载骨干网络
[
DarkNet53
](
)的预训练权重,可在训练时通过`--pretrain_weights`指定,若指定为URL,将自动下载权重至`~/.cache/paddle/weights`目录并加载。
`main.py`
脚本参数可通过如下命令查询
...
...
@@ -125,7 +122,7 @@ python main.py --help
使用如下方式进行多卡训练:
```
bash
CUDA_VISIBLE_DEVICES
=
0,1,2,3 python
-m
paddle.distributed.launch main.py
--data
=
<path/to/dataset>
--batch_size
=
16
--pretrain_weights
=
./pretrain_weights/darknet53_pretrained
CUDA_VISIBLE_DEVICES
=
0,1,2,3 python
-m
paddle.distributed.launch main.py
--data
=
<path/to/dataset>
--batch_size
=
16
--pretrain_weights
=
https://paddlemodels.bj.bcebos.com/hapi/darknet53_pretrained.pdparams
```
#### 动态图训练
...
...
@@ -135,7 +132,7 @@ CUDA_VISIBLE_DEVICES=0,1,2,3 python -m paddle.distributed.launch main.py --data=
使用如下方式进行多卡训练:
```
bash
CUDA_VISIBLE_DEVICES
=
0,1,2,3 python main.py
-m
paddle.distributed.launch
--data
=
<path/to/dataset>
--batch_size
=
16
-d
--pretrain_weights
=
./pretrain_weights/darknet53_pretrained
CUDA_VISIBLE_DEVICES
=
0,1,2,3 python main.py
-m
paddle.distributed.launch
--data
=
<path/to/dataset>
--batch_size
=
16
-d
--pretrain_weights
=
https://paddlemodels.bj.bcebos.com/hapi/darknet53_pretrained.pdparams
```
...
...
examples/yolov3/main.py
浏览文件 @
0e8b317f
...
...
@@ -27,6 +27,7 @@ from paddle.io import DataLoader
from
hapi.model
import
Model
,
Input
,
set_device
from
hapi.distributed
import
DistributedBatchSampler
from
hapi.download
import
is_url
,
get_weights_path
from
hapi.datasets
import
COCODataset
from
hapi.vision.transforms
import
*
from
hapi.vision.models
import
yolov3_darknet53
,
YoloLoss
...
...
@@ -125,7 +126,10 @@ def main():
pretrained
=
pretrained
)
if
FLAGS
.
pretrain_weights
and
not
FLAGS
.
eval_only
:
model
.
load
(
FLAGS
.
pretrain_weights
,
skip_mismatch
=
True
,
reset_optimizer
=
True
)
pretrain_weights
=
FLAGS
.
pretrain_weights
if
is_url
(
pretrain_weights
):
pretrain_weights
=
get_weights_path
(
pretrain_weights
)
model
.
load
(
pretrain_weights
,
skip_mismatch
=
True
,
reset_optimizer
=
True
)
optim
=
make_optimizer
(
len
(
batch_sampler
),
parameter_list
=
model
.
parameters
())
...
...
examples/yolov3/pretrain_weights/download.sh
已删除
100644 → 0
浏览文件 @
7919a9bb
DIR
=
"
$(
cd
"
$(
dirname
"
$0
"
)
"
;
pwd
-P
)
"
cd
"
$DIR
"
echo
"Downloading https://paddlemodels.bj.bcebos.com/hapi/darknet53_pretrained.pdparams"
wget https://paddlemodels.bj.bcebos.com/hapi/darknet53_pretrained.pdparams
hapi/download.py
浏览文件 @
0e8b317f
...
...
@@ -29,13 +29,22 @@ from paddle.fluid.dygraph.parallel import ParallelEnv
import
logging
logger
=
logging
.
getLogger
(
__name__
)
__all__
=
[
'get_weights_path'
]
__all__
=
[
'get_weights_path'
,
'is_url'
]
WEIGHTS_HOME
=
osp
.
expanduser
(
"~/.cache/paddle/hapi/weights"
)
DOWNLOAD_RETRY_LIMIT
=
3
def
is_url
(
path
):
"""
Whether path is URL.
Args:
path (string): URL string or not.
"""
return
path
.
startswith
(
'http://'
)
or
path
.
startswith
(
'https://'
)
def
get_weights_path
(
url
,
md5sum
=
None
):
"""Get weights path from WEIGHT_HOME, if not exists,
download it from url.
...
...
@@ -62,6 +71,7 @@ def get_path(url, root_dir, md5sum=None, check_exist=True):
WEIGHTS_HOME or DATASET_HOME
md5sum (str): md5 sum of download package
"""
assert
is_url
(
url
),
"downloading from {} not a url"
.
format
(
url
)
# parse path after download to decompress under root_dir
fullpath
=
map_path
(
url
,
root_dir
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录