diff --git a/examples/image_classification/README.MD b/examples/image_classification/README.MD index 5b50370dd4b2ad76e62f0e99877849f5fe2fed8f..9f2c58539edea7a3fbc183f050469f53ba311e30 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 6572df01440a36c21330cc905da045e03ff79700..3d730de6e33f0f12474ded283630bb5736c3d8a7 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 76360df91cd64a66e2e288c90a37ac667cdc3eea..da47ca4d86e8cd5dfb50605fe1e00fbdcb137374 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 42f6a2e2dc485c1b0160f74cffe7a0ffd3f58957..f1d8e030ec4c3efd0cc62796e361390ccfa8717f 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