人工智能学习07--pytorch16--MobileNet网络详解

news2024/11/16 17:59:35

MobileNet详解

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

DW卷积:

在这里插入图片描述
每个卷积核的深度为1,而不是像之前一样等于特征矩阵的深度。
每个卷积核只负责输入特征矩阵的一个channel进行卷积运算,再得到相应的输出矩阵的一个channel。
因为每个卷积核只负责一个channel,则采用的特征矩阵的深度就应该与输入特征矩阵的深度相同,这样即可确保每一个卷积核负责一个channel。
又因为每个卷积核与输入特征矩阵的一个channel进行卷积之后,得到一个输出特征矩阵的channel,则输出特征矩阵的深度与卷积核的个数相同,进一步与输入特征矩阵的深度相同。

深度可分的卷积操作

在这里插入图片描述
DW卷积+PW卷积
PW卷积:普通卷积,但是卷积核大小等于1。由上图可以看出,每个卷积核的深度与输入特征矩阵的深度相同,输出特征矩阵的深度与卷积核的个数相同。

相比普通卷积而言,参数的变化:
在这里插入图片描述
均可得到深度为4的特征矩阵。
在这里插入图片描述
彩色图像 32个卷积核
在这里插入图片描述
针对MobileNet中部分卷积核废掉的问题,设计了MobileNetV2👇

MobileNetV2详解

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

之前瓶颈结构是因为传统卷积运算量大,可以减少运算量,DW本身减少了运算量,使用倒结构,虽然增大一些运算量,但增大了卷积核个数,可以解决v1版本的缺点

relu6:relu激活函数的改进版
在这里插入图片描述
在这里插入图片描述
对于输入特征矩阵,高x宽x深度:
使用1*1卷积核(个数tk)进行升维处理,所以深度变为tk

进行dw卷积:输出深度与输入深度一样
步距为s,输入特征矩阵的高和宽缩减为原来的1/s倍

1x1的卷积层:采用降维操作,所采用的卷积核个数为k’,所以将特征矩阵的深度变为k’。

在MobileNetV2网络的到残差结构中,不是每一个倒残差结构中都有shortcut捷径分支(上图右下角框)

在这里插入图片描述
每一个block所对应的第一层的bottleneck的步距,其他的都是等于1。若n=2,则bottleneck重复两次,第一层的步距为表里那个s,第二层的就是1。
拓展因子:升维的倍速
在这里插入图片描述
↓这个卷积层与全连接层的作用一样,k为分类个数

在这里插入图片描述
基本上已经实现,在移动设备以及嵌入设备上跑深度学习模型了。

使用pytorch搭建MobileNetV2并基于迁移学习训练

modelv2.py

  • 定义基础操作:

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

  • 搭建倒残差结构
    在这里插入图片描述
    在这里插入图片描述

  • MobileNetV2网络结构
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

train.py

  • 模型权重加载
    下载预训练权重
    在这里插入图片描述
    在这里插入图片描述
    与之前训练脚本不一样的地方:

  • 实例化模型
    在这里插入图片描述
    在这里插入图片描述
    up训练时发现,同样都是调整最后一层,在CPU上训练,pytorch的速度比tensorflow慢得多。
    在这里插入图片描述
    ↑ “理论上”
    可能涉及到一些计算机底层的知识。

predict.py

使用与训练过程中相同的预处理方法
……
载入图片
……
添加batch维度
……
实例化模型
……
载入train.py中训练好的模型权重
……
禁止在预测过程中跟踪误差梯度信息
……
squeeze压缩batch维度
softmax 输出 → 概率分布
argmax 获取最大预测值所对应的索引

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

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

相关文章

Android WebView 的 addJavascriptInterface 探究

Android WebView 的 addJavascriptInterface 探究 一、前言 Java和JS交互的方式有多种,这里探讨的方式是通过以下方式进行的交互。 webView.addJavascriptInterface(this, "JSBridge") 这篇文章是想弄明白 JavaScript 和 Java是如何实现这种方式互调的,就从源码…

C高级 day1

初始工作路径不在家目录下,在不切换路径的情况下,在家目录下创建一个subdir目录,在subdir这个目录下,创建subdir1和subdir2,并且把/etc/passwd拷贝到subdir1中,把/etc/group文件拷贝到subdir2中&#xff0c…

java获取登陆用户ip方法

今天和大家分享一下获取登录用户 ip的方法,如果你想获取自己的登陆用户 ip,可以参考以下思路: 1.可以通过 Java动态链接库的方式获取到,方法很简单,就是把需要的 ip地址添加到动态链接库中,然后在需要用到时…

Word三线表创建

三线表是论文写作中经常使用到的表格格式 自定义三线表 “插入”-->“表格”,随便插入一个表格,然后将光标移动到表格内 “表设计”-->“其他”-->“新建表格样式” 修改模板名称为“三线表”,方便下次直接套用 首先设置标题行【…

把苹果全家桶用于VR全身追踪是什么体验

此前,青亭网曾报道了一项无需摄像头的VR全身追踪方案:Standable: Full Body Estimation(简称SFBE),这套方案就是利用了头显双手柄数据来模拟预测全身动作数据,效果还算不错。 近期在CHI2023活动上&#xff…

深度学习02-神经网络(MLP多层感知器)

文章目录 神经网络简介学习路径分类 多层感知器(MLP)神经网络认识两层神经网络输入层从输入层到隐藏层从隐藏层到输出层激活层输出的正规化如何衡量输出的好坏反向传播与参数优化过拟合 BP算法推导定义算法讲解前向传播反向传播 具体实例 tensorflow实战…

Python并发编程之进程理论

前言 本文将详细介绍进程相关概念。 进程和程序 计算机上的未运行的QQ、Wechat等都属于程序,但是一旦当这些程序运行起来的话,就可以被称为进程。因此可以如下定义程序和进程: 程序:就是存在硬盘上的一堆代码。 进程&#xf…

【AI】YOLOV1原理详解

1、简介 YOLO:You Only Look Once,一种对象检测算法,2016年由Redmon提出 优点:速度快,适合于实时检测任务; 缺点:准确度略低 2、其它算法对象检测原理 在YOLO出现之前,其它算法使用分类器对测试图像的不同切片进行评估。 例如,使用一个小窗口在图像上滑动来获取一小…

【标准化方法】(4) Weight Normalization 原理解析、代码复现,附Pytorch代码

今天和各位分享一下深度学习中常用的归一化方法,权重归一化(Weight Normalization, WN),通过理论解析,用 Pytorch 复现一下代码。 Weight Normalization 的论文地址如下:https://arxiv.org/pdf…

GEE:基于主成分分析(PCA)的风险筛选环境指标(RSEI)计算方法

作者:CSDN @ _养乐多_ 利用主成分分析(Principal Component Analysis, PCA)进行风险筛选环境指标(Risk-Screening Environmental Indicators, RSEI)的计算是一种常用的方法。本文介绍了基于主成分分析的RSEI计算方法,通过将多个基于遥感指数的环境指标转化为少数几个主成…

电脑cpu占用率高?怎么办?1分钟快速解决!

案例:电脑cup过高怎么办? 【我的电脑运行缓慢,导致我学习和工作的效率很低。刚刚查看了一下电脑,发现它的cpu占用率很高。有没有小伙伴知道如何解决此电脑cpu过高的问题?】 电脑是我们生活中不可缺少的工具&#xff…

Linux 多线程(1)线程概念与线程控制

多线程:概念、线程控制(创建、终止、等待、分离),线程安全(问题&实现),应用(生产者与消费者模型,线程池,单例模式) (重要&#xf…

linux系统(进程间通信)06_IPC概念,pipe管道,fifo通信,mmap 共享映射区

01 学习目标 1.熟练使用pipe进行父子进程间通信 2.熟练使用pipe进行兄弟进程间通信 3.熟练使用fifo进行无血缘关系的进程间通信 4.熟练掌握mmap函数的使用 5.掌握mmap创建匿名映射区的方法 6.使用mmap进行有血缘关系的进程间通信 7.使用mmap进行无血缘关系的进程间通信 02 IPC概…

Netfilter和iptables命令详解,从入门到精通

本文目录 1、netfilter架构和工作原则简介2、iptables操作命令说明2.1 、Filtering Specifications2.2、Target Specifications2.3、一个基于Linux的基本的防火墙的配置例子 netfilter 是Linux内核里网络部分的一个重要框架,内核通过netfilter完成IP报文的一些操作。…

缓存雪崩问题

缓存雪崩:指在同一时段大量的缓存key同时失效或者Redis服务宕机,导致大量的请求到达数据库,带来巨大的压力 解决方案: 1.给不同的key的TTL添加随机值 2.利用redis集群提高服务的可用性 3.给缓存业务添加降级限流策略 4.给业务添…

扫雷,咱就是一扫一大片(C语言完美递归版)

🤩本文作者:大家好,我是paperjie,感谢你阅读本文,欢迎一建三连哦。 🥰内容专栏:这里是《C语言》专栏,笔者用重金(时间和精力)打造,基础知识一网打尽,希望可以…

零基础入门 Stable Diffusion - 无需显卡把 AI 绘画引擎搬进家用电脑

我从小特别羡慕会画画的伙伴。他们能够将心中的想法画出来,而我最高水平的肖像画是丁老头。但在接触 Stable Diffusion 之后,我感觉自己脱胎换骨,给自己贴上了「会画画」的新标签。 丁老头进化旅程 Stable Diffusion 是一个「文本到图像」的…

区间预测 | MATLAB实现QRLSTM长短期记忆神经网络分位数回归时间序列区间预测

区间预测 | MATLAB实现QRLSTM长短期记忆神经网络分位数回归时间序列区间预测 目录 区间预测 | MATLAB实现QRLSTM长短期记忆神经网络分位数回归时间序列区间预测效果一览基本介绍模型描述程序设计参考资料 效果一览 进阶版 基础版 基本介绍 MATLAB实现QRLSTM长短期记忆神经…

微波方向有哪些SCI期刊推荐? - 易智编译EaseEditing

微波方向的SCI期刊推荐包括: IEEE Transactions on Microwave Theory and Technology: 该期刊是电磁场与微波技术领域的著名期刊,被世界上许多研究机构和大学广泛引用。 IEEE Transactions on Antennas and Propagation: 该期刊…

C++学习记录——이십일 AVL树

文章目录 1、了解AVL树2、模拟实现3、旋转1、左单旋2、右单旋3、双旋(先左后右)4、双旋(先右后左) 4、检查平衡5、测试性能(随机数)6、删除 1、了解AVL树 如果数据有序或接近有序,二叉搜索树将…