From 4c3effee83cad0e32a1c8ec6b4c484a21f292037 Mon Sep 17 00:00:00 2001 From: LielinJiang Date: Tue, 21 Apr 2020 11:30:57 +0000 Subject: [PATCH] add darknet params --- examples/image_classification/README.MD | 3 ++- .../image_classification/imagenet_dataset.py | 11 +++++++--- examples/image_classification/main.py | 21 +++++++++++++++---- hapi/vision/models/darknet.py | 5 +++-- 4 files changed, 30 insertions(+), 10 deletions(-) diff --git a/examples/image_classification/README.MD b/examples/image_classification/README.MD index 5b50370..9f2c585 100644 --- a/examples/image_classification/README.MD +++ b/examples/image_classification/README.MD @@ -85,8 +85,9 @@ CUDA_VISIBLE_DEVICES=0,1,2,3 python -m paddle.distributed.launch main.py --arch | [vgg16](https://paddle-hapi.bj.bcebos.com/models/vgg16.pdparams) | 71.92 | 90.65 | | [mobilenet_v1](https://paddle-hapi.bj.bcebos.com/models/mobilenet_v1_x1.0.pdparams) | 71.16 | 89.89 | | [mobilenet_v2](https://paddle-hapi.bj.bcebos.com/models/mobilenet_v2_x1.0.pdparams) | 72.30 | 90.74 | +| [darknet53](https://paddle-hapi.bj.bcebos.com/models/darknet53.pdparams) | 78.43 | 94.24 | -上述模型的复现参数请参考scripts下的脚本。 +上述部分模型的复现参数请参考scripts下的脚本。需要注意的是darknet要使用image size为256的输入来预测, 即```--image-size 256``` ## 参考文献 diff --git a/examples/image_classification/imagenet_dataset.py b/examples/image_classification/imagenet_dataset.py index 6572df0..3d730de 100644 --- a/examples/image_classification/imagenet_dataset.py +++ b/examples/image_classification/imagenet_dataset.py @@ -24,7 +24,11 @@ from paddle import fluid class ImageNetDataset(DatasetFolder): - def __init__(self, path, mode='train'): + def __init__(self, + path, + mode='train', + image_size=224, + resize_short_size=256): super(ImageNetDataset, self).__init__(path) self.mode = mode @@ -32,13 +36,14 @@ class ImageNetDataset(DatasetFolder): mean=[123.675, 116.28, 103.53], std=[58.395, 57.120, 57.375]) if self.mode == 'train': self.transform = transforms.Compose([ - transforms.RandomResizedCrop(224), + transforms.RandomResizedCrop(image_size), transforms.RandomHorizontalFlip(), transforms.Permute(mode='CHW'), normalize ]) else: self.transform = transforms.Compose([ - transforms.Resize(256), transforms.CenterCrop(224), + transforms.Resize(resize_short_size), + transforms.CenterCrop(image_size), transforms.Permute(mode='CHW'), normalize ]) diff --git a/examples/image_classification/main.py b/examples/image_classification/main.py index 76360df..da47ca4 100644 --- a/examples/image_classification/main.py +++ b/examples/image_classification/main.py @@ -18,8 +18,6 @@ from __future__ import print_function import argparse import contextlib import os -import sys -sys.path.append('../') import time import math @@ -89,8 +87,16 @@ def main(): labels = [Input([None, 1], 'int64', name='label')] train_dataset = ImageNetDataset( - os.path.join(FLAGS.data, 'train'), mode='train') - val_dataset = ImageNetDataset(os.path.join(FLAGS.data, 'val'), mode='val') + os.path.join(FLAGS.data, 'train'), + mode='train', + image_size=FLAGS.image_size, + resize_short_size=FLAGS.resize_short_size) + + val_dataset = ImageNetDataset( + os.path.join(FLAGS.data, 'val'), + mode='val', + image_size=FLAGS.image_size, + resize_short_size=FLAGS.resize_short_size) optim = make_optimizer( np.ceil( @@ -176,6 +182,13 @@ if __name__ == '__main__': parser.add_argument( "--weight-decay", default=1e-4, type=float, help="weight decay") parser.add_argument("--momentum", default=0.9, type=float, help="momentum") + parser.add_argument( + "--image-size", default=224, type=int, help="intput image size") + parser.add_argument( + "--resize-short-size", + default=256, + type=float, + help="short size of keeping ratio resize") FLAGS = parser.parse_args() assert FLAGS.data, "error: must provide data path" main() diff --git a/hapi/vision/models/darknet.py b/hapi/vision/models/darknet.py index 42f6a2e..f1d8e03 100755 --- a/hapi/vision/models/darknet.py +++ b/hapi/vision/models/darknet.py @@ -26,8 +26,8 @@ __all__ = ['DarkNet', 'ConvBNLayer', 'darknet53'] # {num_layers: (url, md5)} pretrain_infos = { - 53: ('https://paddlemodels.bj.bcebos.com/hapi/darknet53.pdparams', - '2506357a5c31e865785112fc614a487d') + 53: ('https://paddle-hapi.bj.bcebos.com/models/darknet53.pdparams', + 'ca506a90e2efecb9a2093f8ada808708') } @@ -67,6 +67,7 @@ class ConvBNLayer(fluid.dygraph.Layer): def forward(self, inputs): out = self.conv(inputs) out = self.batch_norm(out) + # out = fluid.layers.relu(out) if self.act == 'leaky': out = fluid.layers.leaky_relu(x=out, alpha=0.1) return out -- GitLab