蔬菜图片的类型识别系统【基于MobileNetV3模型】

本设计实现了一套蔬菜图片类型识别系统,使用MobileNetV3模型并结合百度Paddle框架及官方蔬菜数据集进行开发。

蔬菜图片的类型识别系统【基于MobileNetV3模型】


识别系统简介

本作业设计实现了一个蔬菜图片的类型识别系统,使用百度官方蔬菜数据集vegetables_cls(共960张训练数据+240张验证数据,包含菠菜、胡萝卜、西红柿等6种蔬菜图片数据)。
作业基于国产百度Paddle框架,使用MobileNetV3模型,进行开发实现,过程中对图片数据进行RandomCrop数据增强。

模型介绍

MobileNet V3 是对 MobileNet V2 的改进,同样是一个轻量级卷积神经网络。为了适用于对资源不同要求的情况,MobileNet V3 提供了两个版本,分别为 MobileNet V3 Large 以及 MobileNet V3 Small。

MobileNet V3 的创新

1. SE模块的加入

仿照 MnasNet,MobileNet V3 在 MobileNet V2 中的 BottleNeck 模块中的深度级卷积操作后面添加了 SE 模块。如下图所示:
在这里插入图片描述

在这里插入图片描述

2. 修改尾部结构

MobileNet V2 中,在 GlobalAveragePooling 操作之前,为了提高特征图的维度我们使用了一个 1x1 的卷积层,但是这必定会带来了一定的计算量,所以在 MobileNet V3 中作者将其放在 GlobalAveragePooling 的后面,首先利用 GlobalAveragePooling 将特征图大小由 7x7 降到了 1x1,然后再利用 1x1 提高维度,这样就减少了很多计算量。另外,为了进一步地降低计算量,作者直接去掉了前面纺锤型卷积的 3x3 以及 1x1 卷积,进一步减少了计算量,就变成了如下图第二行所示的结构。

在这里插入图片描述

3. 修改通道数量

修改网络开始时第一个卷积核的数量,MobileNet V2 中使用了 32 个卷积核,在 MobileNet V3 中,作者仅使用了 16 个卷积核就达到了相同的精度。

4. 改变激活函数

SE 模块中
MobileNet V3 中将原来 SE 模块中的 sigmoid 激活函数换成了 h-sigmoid 激活函数,其表达式如下:
在这里插入图片描述

BottleNeck 模块中
MobileNet V3 中将原来 BottleNeck 模块中的 ReLU6 激活函数换成了 h-swish 激活函数,其表达式如下:
在这里插入图片描述

​使用示例:

使用pip安装方式安装2.1.0版本:

1. 安装PaddleX

pip install paddlex==2.1.0 -i https://mirror.baidu.com/pypi/simple
pip install paddlepaddle==2.3.2 -i https://mirror.baidu.com/pypi/simple

2. 准备蔬菜分类数据集

wget https://bj.bcebos.com/paddlex/datasets/vegetables_cls.tar.gz
tar xzvf vegetables_cls.tar.gz

3. 定义训练/数据增强

因为训练时加入了数据增强操作,因此在训练和验证过程中,模型的数据处理流程需要分别进行定义。如下所示,代码在train_transforms中加入了RandomCrop和RandomHorizontalFlip两种数据增强方式。

from paddlex import transforms as T
train_transforms = T.Compose([
    T.RandomCrop(crop_size
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值