https://github.com/610265158/pytorch-mobilenet-v3

MobileNetV3 in pytorch and ImageNet pretrained models

https://github.com/610265158/pytorch-mobilenet-v3

Science Score: 10.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
  • .zenodo.json file
  • DOI references
  • Academic publication links
    Links to: arxiv.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (6.9%) to scientific vocabulary
Last synced: 10 months ago · JSON representation

Repository

MobileNetV3 in pytorch and ImageNet pretrained models

Basic Info
  • Host: GitHub
  • Owner: 610265158
  • License: apache-2.0
  • Default Branch: master
  • Homepage:
  • Size: 50.8 KB
Statistics
  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Fork of kuan-wang/pytorch-mobilenet-v3
Created over 5 years ago · Last pushed about 7 years ago

https://github.com/610265158/pytorch-mobilenet-v3/blob/master/

# A PyTorch implementation of MobileNetV3

This is a PyTorch implementation of MobileNetV3 architecture as described in the paper [Searching for MobileNetV3](https://arxiv.org/pdf/1905.02244.pdf).

Some details may be different from the original paper, welcome to discuss and help me figure it out.

- **[NEW]** The pretrained model of small version mobilenet-v3 is online, accuracy achieves the same as paper. 
- **[NEW]** The paper updated on 17 May, so I renew the codes for that, but there still are some bugs.
- **[NEW]** I remove the se before the global avg_pool (the paper may add it in error), and now the model size is close to paper.

## Training & Accuracy
### training setting:

1. number of epochs: 150
2. learning rate schedule: cosine learning rate, initial lr=0.05
3. weight decay: 4e-5
4. remove dropout
5. batch size: 256

### MobileNetV3 large
|              | Madds     | Parameters | Top1-acc  | Pretrained Model                                             |
| -----------  | --------- | ---------- | --------- | ------------------------------------------------------------ |
| Offical 1.0  | 219 M     | 5.4  M     | 75.2%     | -                                                            |
| Offical 0.75 | 155 M     | 4    M     | 73.3%     | -                                                            |
| Ours    1.0  | 224 M     | 5.48 M     | 72.8%     | - |
| Ours    0.75 | 148 M     | 3.91 M     |  -        | - |

### MobileNetV3 small
|              | Madds     | Parameters | Top1-acc  | Pretrained Model                                             |
| -----------  | --------- | ---------- | --------- | ------------------------------------------------------------ |
| Offical 1.0  | 66  M     | 2.9  M     | 67.4%     | -                                                            |
| Offical 0.75 | 44  M     | 2.4  M     | 65.4%     | -                                                            |
| Ours    1.0  | 63  M     | 2.94 M     | 67.4%     |  [[google drive](https://drive.google.com/open?id=1lCsN3kWXAu8C30bQrD2JTZ7S2v4yt23C)] |
| Ours    0.75 | 46  M     | 2.38 M     | -         | - |

## Usage
Pretrained models are still training ...
```python
    # pytorch 1.0.1
    # large
    net_large = mobilenetv3(mode='large')
    # small
    net_small = mobilenetv3(mode='small')
    state_dict = torch.load('mobilenetv3_small_67.4.pth.tar')
    net_small.load_state_dict(state_dict)
```

## Data Pre-processing

I used the following code for data pre-processing on ImageNet:

```python
normalize = transforms.Normalize(mean=[0.485, 0.456, 0.406],
                                 std=[0.229, 0.224, 0.225])

input_size = 224
train_loader = torch.utils.data.DataLoader(
    datasets.ImageFolder(
    traindir, transforms.Compose([
        transforms.RandomResizedCrop(input_size),
        transforms.RandomHorizontalFlip(),
        transforms.ToTensor(),
        normalize,
    ])),
    batch_size=batch_size, shuffle=True,
    num_workers=n_worker, pin_memory=True)

val_loader = torch.utils.data.DataLoader(
    datasets.ImageFolder(valdir, transforms.Compose([
        transforms.Resize(int(input_size/0.875)),
        transforms.CenterCrop(input_size),
        transforms.ToTensor(),
        normalize,
    ])),
    batch_size=batch_size, shuffle=False,
    num_workers=n_worker, pin_memory=True)
```

Owner

  • Name: Lz
  • Login: 610265158
  • Kind: user
  • Location: CN

I am looking for a job now, contact me if got any opportunity.

GitHub Events

Total
Last Year