昇思学习打卡-17-热门LLM及其他AI应用/基于MobileNetv2的垃圾分类

news2025/4/20 1:42:33

文章目录

  • 网络介绍
  • 读取数据集
  • 训练
    • 训练策略
    • 模型保存
    • 损失函数
    • 优化器
    • 模型训练

网络介绍

  • MobileNetv2专注于移动端、嵌入式或IoT设备的轻量级CNN网络。
  • MobileNet网络使用深度可分离卷积(Depthwise Separable Convolution)的思想在准确率小幅度降低的前提下,大大减小了模型参数与运算量。并引入宽度系数 α和分辨率系数 β使模型满足不同应用场景的需求。
  • 由于MobileNet网络中Relu激活函数处理低维特征信息时会存在大量的丢失,所以MobileNetV2网络提出使用倒残差结构(Inverted residual block)和Linear Bottlenecks来设计网络,以提高模型的准确率,且优化后的模型更小。

读取数据集

利用ImageFolderDataset方法读取垃圾分类数据集,并整体对数据集进行处理。

读取数据集时指定训练集和测试集,首先对整个数据集进行归一化,修改图像频道等预处理操作。然后对训练集的数据依次进行RandomCropDecodeResize、RandomHorizontalFlip、RandomColorAdjust、shuffle操作,以增加训练数据的丰富度;对测试集进行Decode、Resize、CenterCrop等预处理操作;最后返回处理后的数据集,实现如下:

def create_dataset(dataset_path, config, training=True, buffer_size=1000):
    """
    create a train or eval dataset

    Args:
        dataset_path(string): the path of dataset.
        config(struct): the config of train and eval in diffirent platform.

    Returns:
        train_dataset, val_dataset
    """
    data_path = os.path.join(dataset_path, 'train' if training else 'test')
    ds = de.ImageFolderDataset(data_path, num_parallel_workers=4, class_indexing=config.class_index)
    resize_height = config.image_height
    resize_width = config.image_width
    
    normalize_op = C.Normalize(mean=[0.485*255, 0.456*255, 0.406*255], std=[0.229*255, 0.224*255, 0.225*255])
    change_swap_op = C.HWC2CHW()
    type_cast_op = C2.TypeCast(mstype.int32)

    if training:
        crop_decode_resize = C.RandomCropDecodeResize(resize_height, scale=(0.08, 1.0), ratio=(0.75, 1.333))
        horizontal_flip_op = C.RandomHorizontalFlip(prob=0.5)
        color_adjust = C.RandomColorAdjust(brightness=0.4, contrast=0.4, saturation=0.4)
    
        train_trans = [crop_decode_resize, horizontal_flip_op, color_adjust, normalize_op, change_swap_op]
        train_ds = ds.map(input_columns="image", operations=train_trans, num_parallel_workers=4)
        train_ds = train_ds.map(input_columns="label", operations=type_cast_op, num_parallel_workers=4)
        
        train_ds = train_ds.shuffle(buffer_size=buffer_size)
        ds = train_ds.batch(config.batch_size, drop_remainder=True)
    else:
        decode_op = C.Decode()
        resize_op = C.Resize((int(resize_width/0.875), int(resize_width/0.875)))
        center_crop = C.CenterCrop(resize_width)
        
        eval_trans = [decode_op, resize_op, center_crop, normalize_op, change_swap_op]
        eval_ds = ds.map(input_columns="image", operations=eval_trans, num_parallel_workers=4)
        eval_ds = eval_ds.map(input_columns="label", operations=type_cast_op, num_parallel_workers=4)
        ds = eval_ds.batch(config.eval_batch_size, drop_remainder=True)

    return ds

部分数据可视化

ds = create_dataset(dataset_path=config.dataset_path, config=config, training=False)
print(ds.get_dataset_size())
data = ds.create_dict_iterator(output_numpy=True)._get_next()
images = data['image']
labels = data['label']

for i in range(1, 5):
    plt.subplot(2, 2, i)
    plt.imshow(np.transpose(images[i], (1,2,0)))
    plt.title('label: %s' % class_en[labels[i]])
    plt.xticks([])
plt.show()

在这里插入图片描述

训练

训练策略

常见的学习率下降策略有:

  • polynomial decay/square decay;
  • cosine decay;
  • exponential decay;
  • stage decay.
    本模型使用cosine decay下降策略

模型保存

在模型训练过程中,可以添加检查点(Checkpoint)用于保存模型的参数,以便进行推理及中断后再训练使用。使用场景如下:

  • 训练后推理场景
    模型训练完毕后保存模型的参数,用于推理或预测操作。
    训练过程中,通过实时验证精度,把精度最高的模型参数保存下来,用于预测操作。
  • 再训练场景
    进行长时间训练任务时,保存训练过程中的Checkpoint文件,防止任务异常退出后从初始状态开始训练。
    Fine-tuning(微调)场景,即训练一个模型并保存参数,基于该模型,面向第二个类似任务进行模型训练。
    这里加载ImageNet数据上预训练的MobileNetv2进行Fine-tuning,只训练最后修改的FC层,并在训练过程中保存Checkpoint。

损失函数

又叫目标函数,用于衡量预测值与实际值差异的程度。深度学习通过不停地迭代来缩小损失函数的值。定义一个好的损失函数,可以有效提高模型的性能。损失函数有SoftmaxCrossEntropyWithLogits、L1Loss、MSELoss等。这里使用SoftmaxCrossEntropyWithLogits损失函数。

优化器

用于最小化损失函数,从而在训练过程中改进模型。

此外,在训练MobileNetV2之前对MobileNetV2Backbone层的参数进行了固定,使其在训练过程中对该模块的权重参数不进行更新;只对MobileNetV2Head模块的参数进行更新。

模型训练

在这里插入图片描述
此章节学习到此结束,感谢昇思平台。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1917677.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

九.核心动画 - 显式动画

引言 本篇博客紧接着上一篇的隐式动画开始介绍显式动画。隐式动画是创建动态页面的一种简单的直接的方式,也是UIKit的动画机制基础。但是它并不能涵盖所有的动画类型。 显式动画 接下来我们就来研究另外一种动画显式动画,它能够对一些属性做指定的动画…

北斗GPS天线使用技巧与性能对比

北斗GPS天线使用中注意的问题 多系统兼容性:确保天线不仅能接收北斗信号,还能同时接收其他GNSS系统(如GPS、GLONASS、Galileo)的信号,以提高定位精度和可靠性。 信号频率选择:根据应用需求选择合适的信号…

【RHCE】实验(HTTP,DNS,SELinux,firewalld的运用)

一、题目 二、主服务器配置 1.下载HTTP服务,DNS服务 [rootlocalhost ~]# yum install -y httpd bind 2.开启防火墙,放行服务 # 开启防火墙 [rootlocalhost ~]# systemctl start firewalld # 放行服务 [rootlocalhost ~]# firewall-cmd --add-service…

【linux服务器】大语言模型实战教程:LLMS大模型快速部署到个人服务器

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 引言 说到大语言模型相信大家都不会陌生,大型语言模型(LLMs)是人工智能文本处理的主要类型,也现在最流行的人工智能…

市场趋势的智能预测:Kompas.ai如何洞察未来市场动向

在商业领域,市场趋势预测是企业制定战略规划和做出明智决策的关键。准确把握市场动向能够帮助企业及时调整战略,抓住机遇,规避风险。Kompas.ai,一款先进的人工智能市场分析工具,正通过其深度学习和数据分析能力&#x…

漏洞中有三分之一具有严重且高风险

首发公众号网络研究观,微信搜索关注每日获取更多内容。 在大多数项目中,发现了低复杂度(38%)和中等复杂度(50%)的攻击向量,即使是低技能的黑客也可以执行这些攻击向量。 Positive Technologie…

变量和常量(局部变量和全局变量)

常变的值叫变量,不变的值叫常量 变量分为局部变量和全局变量 在同一范围内,变量只能定义一次,否则就会报错 全部变量和局部变量是可以同时存在的,不过使用的时候是局部优先 变量如果你不给他初始化,那么他放得就是一…

ICC2:如何检查input floating

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 input floating分为两种情况: input没接net的情况: get_flat_pins -f "direction ==in && undefined(net)" input接net…

解决fidder小黑怪倒出JMeter文件缺失域名、请求头

解决fidder小黑怪倒出JMeter文件缺失域名、请求头 1、目录结构: 2、代码 coding:utf-8 Software:PyCharm Time:2024/7/10 14:02 Author:Dr.zxyimport zipfile import os import xml.etree.ElementTree as ET import re#定义信息头 headers_to_extract [Host, Conn…

springboot轻松音乐-计算机毕业设计源码48092

目 录 摘要 1 绪论 1.1研究背景与意义 1.2研究现状 1.3论文结构与章节安排 2 基于微信小程序的轻松音乐系统分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2 经济可行性分析 2.1.3 法律可行性分析 2.2 系统功能分析 2.2.1 功能性分析 2.3 系统用例分析 2.4 系统…

将charles证书放置根文件夹目录下

一:证书导出重命名 先将charles证书导出,然后使用下列命令将charles证书文件重命名 openssl x509 -inform DER -subject_hash_old -in FiddlerRoot.cer 将文件命名为e5472ab9.0 二:文件移动 我在一台pixcel 5尝试将charles证书移动到安卓跟文件目录下,即显示文件只可读不可…

知识链:知识图谱提升大模型的推理能力,解决多个知识点结合推理时出错

知识链:知识图谱提升大模型的推理能力,解决多个知识点结合推理时出错 提出背景解法拆解逻辑链 CoK 框架hop 步骤处理肺炎疑似病例2-hop规则的应用3-hop规则的应用4-hop规则的应用CoK(T&E)方法的优势 CoK 算法步骤数据集构建 知…

什么是工业4.0?

在当今这个日新月异的时代,科技的每一次飞跃都深刻地改变着我们的生活与工作方式。而在这场全球性的变革中,工业4.0不仅代表了制造业的未来趋势,更是全球经济发展的新引擎。那么,究竟什么是工业4.0?它如何重塑我们的工…

nginx正向代理、反向代理、负载均衡

nginx.conf nginx首要处理静态页面 反向代理 动态请求 全局模块 work processes 1; 设置成服务器内核数的两倍(一般不不超过8个超过8个反而会降低性能一般4个 1-2个也可以) netstat -antp | grep 80 查端口号 *1、events块:* 配置影响ngi…

赛迪顾问ITSS服务经理发布多项2024年IT趋势报告

在深入探讨算力、工业控制系统、网络安全、数据治理、人工智能、数字化转型、5G通信等12大IT关键领域的基础上,赛迪顾问ITSS服务经理于1月16日以“乘势而上,及锋而试”为主题,成功举办了2024年IT趋势发布会。 会议聚焦IT行业的新技术、新模式…

p14数组(2)

数组作为函数的参数 冒泡排序 两两比较 void bubble_sort(int arr[],int sz) {int i0;for(i0;i<sz-1;i){//每一趟冒泡排序int j0;for(j0;j<sz-1-i;j){if(arr[j]>arr[j1]){int tmparr[j];arr[j]arr[j1];arr[j1]tmp;}}} } int main(){int arr[]{9,8,7,6,5,4,3,2,1,0}…

镜像加速方法

参考&#xff1a; https://github.com/DaoCloud/public-image-mirror 使用DaoCloud加速&#xff1a; 比如我想在dockerhub下载这个镜像&#xff1a; 本来的命令是&#xff1a; docker pull openjdk:11.0-jdk-slim-buster在要拉取的镜像前&#xff0c;添加前缀&#xff1a;m.…

网络安全从业人员必知的ClamAV工具(非常详细)零基础入门到精通,收藏这一篇就够了

一、引言 ClamAV&#xff08;Clam AntiVirus&#xff09;是一个开源的防病毒工具&#xff0c;广泛应用于网络安全领域。它的主要功能包括病毒扫描、恶意软件检测、以及电子邮件网关的病毒防护。ClamAV以其高效的性能和灵活的配置选项&#xff0c;成为网络安全从业人员的重要工…

护眼台灯真的护眼吗?一起看台灯的功能作用有哪些

长时间近距离用眼、长时间阅读书籍、长时间处于不良姿势下阅读或写作&#xff0c;都可能导致眼部调节过度&#xff0c;从而引起近视。近视不仅影响个人生活质量&#xff0c;还可能限制职业选择&#xff0c;甚至增加眼部疾病的风险。因此&#xff0c;从日常细节入手&#xff0c;…

IoC源码分析——singleton bean创建与循环依赖

文章目录 概要主流程bean的创建循环依赖 概要 容器初始化时&#xff0c;会创建单例bean&#xff0c;本文主要关注单例bean是如何创建的&#xff0c;并说明源码中是如何解决循环依赖的 代码入口 Testpublic void testIoC() {// ApplicationContext是容器的高级接口&#xff0c…