MobileNetV3 实战:植物幼苗分类(pytorch)(1)

4、如何使用Mixup数据增强。

5、如何实现训练和验证。

6、如何使用余弦退火调整学习率?

7、预测的两种写法。

mobilenetv3简介

========================================================================

MobileNetV3 是由 google 团队在 2019 年提出的,是mobilenet系列的第三个版本,其参数是由NAS(network architecture search)搜索获取的,在ImageNet 分类任务中和V2相比正确率上升了 3.2%,计算延时还降低了 20%。V1里提出了深度可分离卷积,V2在V1的基础上增加了线性瓶颈(Linear Bottleneck)和倒残差(Inverted Residual),那么V3又有哪些特点呢?

先看一下V3的网络结构,V3版本有两个,一个是Large 和 Small,分别适用于不同的场景。网路结构如下:

image-20220205210432432

上表为具体的参数设置,其中bneck是网络的基本结构。SE代表是否使用通道注意力机制。NL代表激活函数的类型,包括HS(h-swish),RE(ReLU)。NBN 代表没有BN操作。s 是stride的意思,网络使用卷积stride操作进行降采样,没有使用pooling操作。

MobileNetV3 的特点:

  1. 继承V1的深度可分离卷积和V2的具有线性瓶颈的残差结构。

  2. 使用NetAdapt算法获得卷积核和通道的最佳数量。

  3. 使用了一种新的激活函数h-swish(x)代替Relu6,其公式:xRelu6(x + 3)/6。

  4. 引入SE通道注意力结构,使用了Relu6(x + 3)/6来近似SE模块中的sigmoid。

  5. 模型分为Large和Small,在ImageNet 分类任务中和V2相比,Large正确率上升了 3.2%,计算延时还降低了 20%。

MobileNetV3代码实现(pytorch):

https://wanghao.blog.csdn.net/article/details/121607296

数据增强Cutout和Mixup

===========================================================================

为了提高成绩我在代码中加入Cutout和Mixup这两种增强方式。实现这两种增强需要安装torchtoolbox。安装命令:

pip install torchtoolbox

Cutout实现,在transforms中。

from torchtoolbox.transform import Cutout

数据预处理

transform = transforms.Compose([

transforms.Resize((224, 224)),

Cutout(),

transforms.ToTensor(),

transforms.Normalize([0.5, 0.5, 0.5], [0.5, 0.5, 0.5])

])

Mixup实现,在train方法中。需要导入包:from torchtoolbox.tools import mixup_data, mixup_criterion

for batch_idx, (data, target) in enumerate(train_loader):

data, target = data.to(device, non_blocking=True), target.to(device, non_blocking=True)

data, labels_a, labels_b, lam = mixup_data(data, target, alpha)

optimizer.zero_grad()

output = model(data)

loss 

  • 16
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值