(7)catanddog_用mobilenetv3迁移学习分类和测试

1、网络的介绍参照下面

MobileNet系列(4):MobileNetv3网络详解_@BangBang的博客-CSDN博客_mobilenetv3

和下面的文字 

https://www.toutiao.com/article/6972051587388785184/?app=news_article&timestamp=1665491325&use_new_style=1&req_id=202210112028440101320380301D113152&group_id=6972051587388785184&tt_from=mobile_qq&utm_source=mobile_qq&utm_medium=toutiao_android&utm_campaign=client_share&share_token=b18046b3-f26e-473e-b539-1fc65dfd400d&source=m_redirect

TorchVision v0.9 中新增了一系列移动端友好的模型,可用于处理分类、目标检测、语义分割等任务。

2、研究mobilenetv3最后的输出层

 3、修改输出层的方法

3.1 输出层修改实现方法一

    chen_set_mode_out = nn.Sequential(
                            nn.Flatten(),
                            nn.Linear(576,1024),
                            nn.Hardswish(inplace=True),
                            nn.Dropout(p=0.2, inplace=True),
                            nn.Linear(1024, 1000),
                            nn.Linear(1000, 2)
                          ).to(device)


    # small = mobilenet_v3_small(pretrained=True)
    trained_model = mobilenet_v3_small(weights=models.MobileNet_V3_Small_Weights.DEFAULT)
    #注意默认是1000分类输出,[256,1000]
    
    #(1)实现方法一:

    model = nn.Sequential(*list(trained_model.children())[:-1], #[b, 512, 1, 1]
                        #   Flatten(), # [b, 512, 1, 1] => [b, 512]
                        #   nn.Flatten(),
                        #   nn.Linear(256, 2)
                        chen_set_mode_out
                          ).to(device)

3.2 输出层修改实现方法二

    #(2)实现方法二
    print("陈打印最后的分类模块---------------------")
    print(trained_model.classifier._modules['0'])
    print(trained_model.classifier._modules['1'])
    print(trained_model.classifier._modules['2'])
    print(trained_model.classifier._modules['3'])
    trained_model.classifier._modules['3'] = nn.Linear(1024, 2)
    model = trained_model

4、代码实现

4.1方法一的代码

import  torch
from    torch import optim, nn
# import  visdom
# from tensorboardX import SummaryWriter  #(1)引入tensorboardX
from torch.utils.tensorboard import SummaryWriter
 
# import  torchvision
from    torch.utils.data import DataLoader
from    torchvision import transforms, datasets, models
# from    utils import Flatten
 
# from    pokemon import Pokemon
# from    resnet import ResNet18
# from    torchvision.models import resnet18
from    torchvision.models import  mobilenet_v3_small
from    PIL import Image
from    tqdm import tqdm
from    torchinfo import summary
import  os
 
 
# batchsz = 32
batch_size = 256
lr = 1e-3
epochs = 10
img_resize = 224
 
# print("cuda:") 
# print(torch.cuda.is_available())
# print(torch.cuda.device_count())
# print(torch.cuda.current_device()) 
# print(torch.cuda.get_device_name(0)) 
 
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
# device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
# device = torch.device('cpu')
torch.manual_seed(1234)
 
# tf = transforms.Compose([
#                      transforms.Resize((224,224)),
#                      transforms.ToTensor(),
#      ])
#输入应该是PIL.Image类型
tf = transforms.Compose([
    #匿名函数
    # lambda x:Image.open(x).convert('RGB'), # string path= > image data
    transforms.Resize((int(img_resize*1.25), int(img_resize*1.25))),
    transforms.RandomRotation(15),
    transforms.CenterCrop(img_resize),
    transforms.ToTensor(),
    transforms.Normalize(mean=[0.485, 0.456, 0.406],
                            std=[0.229, 0.224, 0.225])
])
# db = torchvision.datasets.ImageFolder(root=&#
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MobileNetV2是一种用于图像分类和物体检测的深度学习模型,由Google开发。它具有一个非常强大的特点,即可以进行迁移学习迁移学习是指通过将一个已经在大型数据集上训练过的模型应用于不同的任务或数据集,以提高在新任务上的性能。MobileNetV2通过在大型图像数据集上进行训练,可以学习到图像的通用特征,例如形状、纹理和颜色等,这些特征可以在不同的图像分类或物体检测任务中通用。 在迁移学习中,我们可以使用MobileNetV2作为一个预训练模型,然后根据新任务的需求进行微调。微调是指在已经训练好的模型上,通过在新数据集上进行少量的训练来调整模型,以适应特定任务。 迁移学习的主要优势在于减少了训练时间和数据需求。由于MobileNetV2已经在大型数据集上进行过训练,它已经学到了很多通用特征,并且能够在训练初始阶段快速收敛。因此,使用MobileNetV2进行迁移学习可以减少模型训练所需要的时间和资源。 此外,MobileNetV2还具有轻量级的特点,适用于移动设备和嵌入式设备上的应用。在使用迁移学习时,可以通过微调MobileNetV2模型来适应不同的硬件设备和任务需求。 总而言之,MobileNetV2是一个适用于迁移学习的强大模型。通过使用预训练的MobileNetV2模型,并结合特定任务的微调,可以在新数据集上实现快速而准确的图像分类和物体检测。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值