Commit a941adea authored by Sugon_ldc's avatar Sugon_ldc
Browse files

modify readme

parent 7b198098
# MobileNetv3_PyTorch算力测试
## 模型介绍
MobileNetV3是一种轻量级的卷积神经网络模型,由Google Brain团队于2019年提出。相对于MobileNetV2,MobileNetV3在准确性和模型大小上都有所提升。MobileNetV3主要采用了以下几种技术:
1. 倒残差结构:MobileNetV3使用了一种新的倒残差结构,通过在瓶颈层中使用两个卷积层和一个可分离卷积层,来提高准确性和收敛速度。
2. 自适应线性单元(AdaLIN):MobileNetV3使用了自适应线性单元(AdaLIN)来替代传统的批归一化(Batch Normalization)层,以在准确性和模型大小之间取得平衡。
3. 利用Squeeze-and-Excitation模块进行通道注意力:MobileNetV3引入了Squeeze-and-Excitation(SE)模块,通过学习每个通道的重要性,对特征图中的每个通道进行加权,从而提高模型的准确性。
4. 硬件感知:MobileNetV3对不同硬件设备进行了优化,可以在CPU、GPU和移动端等设备上高效地运行。
MobileNetV3可以用于图像分类、目标检测、实例分割等任务,是一种轻量级、高效、准确性较高的卷积神经网络模型,可以在移动设备等资源受限的场景下进行应用。
## 模型结构
MobileNetV3模型结构主要由三部分组成:特征提取网络、分类器和辅助模块。其中,特征提取网络是MobileNetV3的核心部分,采用了一些创新的设计来提高模型的准确性和效率。
1. 特征提取网络:MobileNetV3的特征提取网络由一系列瓶颈块组成,每个瓶颈块包含一个1x1卷积层、一个可分离卷积层和一个1x1卷积层。MobileNetV3还引入了倒残差结构,通过在瓶颈块中使用两个卷积层和一个可分离卷积层,来提高准确性和收敛速度。此外,MobileNetV3还采用了自适应线性单元(AdaLIN)来替代传统的批归一化(Batch Normalization)层,以在准确性和模型大小之间取得平衡。MobileNetV3还引入了Squeeze-and-Excitation(SE)模块,通过学习每个通道的重要性,对特征图中的每个通道进行加权,从而提高模型的准确性。
2. 分类器:MobileNetV3的分类器采用了全局平均池化和一些全连接层,将特征提取网络输出的特征映射到各个类别的概率。
3. 辅助模块:MobileNetV3还引入了一些辅助模块,如多尺度训练、标签平滑等,来提高模型的准确性和泛化能力。
MobileNetV3的模型结构非常适合用于移动设备等资源受限的场景下,因为它具有轻量级、高效和准确性较高的特点。
## 数据集
本次训练使用的[CIFAR-10数据集](https://www.cs.toronto.edu/~kriz/cifar.html)
CIFAR-10是一个常用的图像分类数据集,由加拿大的加尔加里大学Alex Krizhevsky等人于2009年发布。该数据集包含了10个类别,每个类别包含了6000张32x32大小的彩色图像,共计60000张图像。
CIFAR-10数据集是一个相对较小的数据集,但它包含了各种各样的物体和场景,是一个非常有代表性的数据集。它被广泛应用于图像分类算法的评估和比较,是一个标准的基准测试数据集。
CIFAR-10数据集相对于其他图像数据集,具有以下几个特点:
1. 数据量相对较小,但类别丰富,适合用于训练和测试轻量级的模型。
2. 图像尺寸较小,可以在较短的时间内处理完成。
3. 图像质量较低,具有一定的噪声和变形,对算法的鲁棒性和泛化能力提出了一定的挑战。
CIFAR-10数据集是一个非常有用的数据集,既可以用于学术研究,也可以用于实际应用中。
## 训练
提供光源拉取的训练镜像
```
docker pull image.sourcefind.cn:5000/dcu/admin/base/pytorch:1.10.0-centos7.6-dtk-22.10-py38-latest
```
```
python -m torch.distributed.run --nproc_per_node 4 train.py --batch-size=128 --mode=small --print-freq=1 --dataset=CIFAR10 --ema-decay=0 --label-smoothing=0 --lr=0.2 --save-epoch-freq=10 --lr-decay=cos --lr-min=0 --warmup-epochs=5 --weight-decay=6e-5 --num-epochs=400 --num-workers=2 --width-multiplier=1 --data-dir /data/ --save-path /data/mobilenetv3out/ --resume ./pretrained/best_model_wts-67.52.pth 2>&1 | tee mobilenetv3_dcu_`date +%Y%m%d%H%M%S`.log
```
data-dir值为存放数据集的目录,如下图data目录下存放cifar-10-batches-py数据集目录,data-dir值为/data/
![1](1.png)
--resume 为预训练模型路径
日志使用tee存入log文件中
## 准确率数据
| 卡数 | 精度 |
| :--: | :----: |
| 4 | 0.9144 |
## 源码仓库及问题反馈
http://developer.hpccube.com/codes/modelzoo/conformer_pytorch.git
## 参考
[https://github.com/showlo/mobilenetv3](https://github.com/showlo/mobilenetv3)
# 算法名简写(英文简写大写)
## 论文
`Searching for MobileNetV3`
- [https://arxiv.org/pdf/1905.02244.pdf ](https://arxiv.org/pdf/1905.02244.pdf)
## 模型结构
MobileNetv3模型采用轻量级的深度可分离卷积(depthwise separable convolution)结构,以减少模型参数量和计算复杂度。
![MobileNet_1](MobileNet_1.jpg)
## 算法原理
MobileNetv3模型采用混合使用轻量级深度可分离卷积和逆残差结构(Inverted Residuals)的算法原理,以实现高效计算和良好的模型性能。![MobileNet_2](MobileNet_2.jpg)
## 环境配置
### Docker(方法一)
此处提供[光源](https://www.sourcefind.cn/#/service-details)拉取docker镜像的地址与使用步骤
```
docker pull image.sourcefind.cn:5000/dcu/admin/base/pytorch:1.10.0-centos7.6-dtk-22.10-py38-latest
docker run -it -v /path/your_code_data/:/path/your_code_data/ --shm-size=32G --privileged=true --device=/dev/kfd --device=/dev/dri/ --group-add video --name docker_name imageID bash
```
### Dockerfile(方法二)
此处提供dockerfile的使用方法
```
cd ./docker
docker build --no-cache -t MobileNetv3:1.0 .
docker run -it -v /path/your_code_data/:/path/your_code_data/ --shm-size=32G --privileged=true --device=/dev/kfd --device=/dev/dri/ --group-add video --name docker_name imageID bash
```
### Anaconda(方法三)
此处提供本地配置、编译的详细步骤,例如:
关于本项目DCU显卡所需的特殊深度学习库可从[光合](https://developer.hpccube.com/tool/)开发者社区下载安装。
```
DTK驱动:dtk22.10
python:python3.8
torch:1.10
torchvision:0.10
```
`Tips:以上dtk驱动、python、paddle等DCU相关工具版本需要严格一一对应`
## 数据集
`cifar10`
- [CIFAR-10](https://www.cs.toronto.edu/~kriz/cifar.html)
```
├── cifar-10-batches-py
│   ├── batches.meta
│   ├── data_batch_1
│   ├── data_batch_2
│   ├── data_batch_3
│   ├── data_batch_4
│   ├── data_batch_5
│   ├── readme.html
│   └── test_batch
```
### 数据预处理
## 训练
### 单机多卡
```
bash train.sh
```
## result
### 精度
测试数据:cifar10,使用的加速卡:Z100L。
根据测试结果情况填写表格:
| 卡数 | 准确率 |
| :------: | :------: |
| 4 | 91.44% |
## 应用场景
### 算法类别
`目标检测`
### 热点应用行业
`交通,政府,金融`
## 源码仓库及问题反馈
- https://developer.hpccube.com/codes/modelzoo/mobilenetv3_pytorch
## 参考资料
- https://github.com/showlo/mobilenetv3
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment