MobileNetV1网络结构训练模型(图像分类)

1.MobileNetV1文章

https://mydreamambitious.blog.csdn.net/article/details/124560414


2.重新搭建MobileNetV1模型结构(便于训练)

注:只要将Github上下载的代码中网络结构换成下面的这个MobileNetV1结构即可(如果采用的是面向对象的方式设计的网络结构的话,在训练数据的时候需要做一些调整)并且再将代码中的一些名称修改一下即可。
需要修改的名称如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
重新搭建的结构


def DepthWiseConv(inputs,filter,stride=(1,1)):
    """
    :param filter: 深度可分离卷积中的1x1卷积个数
    :param stride: 深度卷积的步长
    :return:
    """
    depthwiseconv = layers.DepthwiseConv2D(kernel_size=[3, 3], strides=stride, padding='same')(inputs)
    depthbatch = layers.BatchNormalization()(depthwiseconv)
    depthrelu = layers.Activation('relu')(depthbatch)
    conv11 = layers.Conv2D(filter, kernel_size=[1, 1], strides=[1, 1], padding='same')(depthrelu)
    conv11batch = layers.BatchNormalization()(conv11)
    conv11relu = layers.Activation('relu')(conv11batch)
    return conv11relu

def MobileNetV1(input_shape=(224,224,3),num_classes=5):
    input=keras.Input(input_shape)
    conv1 = layers.Conv2D(32, kernel_size=[3, 3], strides=[2, 2], padding='same')(input)
    conv1batch = layers.BatchNormalization()(conv1)
    conv1relu = layers.Activation('relu')(conv1batch)

    x=DepthWiseConv(conv1relu,filter=64, stride=(1, 1))
    x=DepthWiseConv(x,filter=128, stride=(2, 2))
    x=DepthWiseConv(x,filter=128, stride=(1, 1))
    x=DepthWiseConv(x,filter=256, stride=(2, 2))
    x=DepthWiseConv(x,filter=256, stride=(1, 1))
    x=DepthWiseConv(x,filter=256, stride=(2, 2))
    for i in range(5):
        x=DepthWiseConv(x,filter=512, stride=(1, 1))
    x=DepthWiseConv(x,filter=512, stride=(2, 2))
    x=DepthWiseConv(x,filter=1024, stride=(1, 1))

    avgpool = layers.GlobalAveragePooling2D()(x)
    dense = layers.Dense(num_classes)(avgpool)
    dropout = layers.Dropout(rate=0.8)(dense)
    softmax = layers.Activation('softmax')(dropout)

    model=Model(inputs=input,outputs=softmax)
    return model

model_mobilenetv1=MobileNetV1(input_shape=(224,224,3),num_classes=5)
# model_mobilenetv1.summary()

3.训练的结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

由于数据集不是很多,只有近1000张图片,并且之包含两个类别(猫-cat,狗-dot)所以训练的最后效果一般,读者可以根据自己的需要收集图片进行训练。
在这里插入图片描述


4.图像分类测试

只需要将flask中加载的权重文件换成自己训练的就可以了(flask这部分代码在从Github下载的文件中)。
https://github.com/KeepTryingTo/-.git
在这里插入图片描述

flask.py文件:
在这里插入图片描述
在这里插入图片描述
前端文件:index.html
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
从预测结果来看和模型训练的效果差不多,读者可以自己多训练几代(epoch)。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值