当前位置: 首页 > news >正文

耕地单目标语义分割实践——Pytorch网络过程实现理解

一、卷积操作

(一)普通卷积(Convolution)

(二)空洞卷积(Atrous Convolution)

        根据空洞卷积的定义,显然可以意识到空洞卷积可以提取到同一输入的不同尺度下的特征图,具有构建特征金字塔的基础。

(三)深度可分离卷积(Depthwise-Separable Convolution)

        在对深度可分离卷积具有一定的了解后,我产生了一种“既然模型参数大幅度减少了,那么该模型的运行时间应该也会大幅度缩减”的想法。可是,当我分别在GPU、CPU上进行实验时,我发现结果并不与我当初所想相同。后经过查阅资料[13][14]进一步加深了我对硬件计算优势以及深度可分离卷积的理解。(注:1)实际上,通常我们一层卷积之后都会加深特征图深度,但是我所设计的实验保持了原有深度前向计算。同时,一个卷积网络也应顾及到模型精确性适当使用DSC而非完全;2)参考资料[13]具有与我相同思想的不同模型之间的对比试验)

        适合GPU运算的运算类型有1)大量轻量级运算;2)高度并行运算:3)计算密集型:4)浮点型运算等。CPU擅长于串行运行。

(图源: 三分钟搞懂CPU, GPU, FPGA计算能力 - 知乎)

        针对DSC有可能出现模型参数大幅度减少,但模型运行时间却不下降的现象,可能存在以下原因:

        1)许多深度学习加速器和库(如CUDA和cuDNN),对深度可分离卷积的优化可能不够;

        2)尽管深度可分离卷积需要的乘、加运算较少,但与普通卷积相比,它可能需要更多的内存访问操作,这在GPU上可能导致效率降低;

        3)受限于自身设备的显存容量。

(四)转置卷积(Transpose Convolution)

          转置卷积是一种卷积,它将输入和核进行了重新排列,同卷积一般是做下采样不同,它通常用作上采样。如果卷积将输入从(h,w)变成了(h‘,w'),同样超参数下转置卷积将(h‘,w')变成(h,w)。

       转置卷积可以变为对应核的矩阵乘法。转置卷积是一种变化了输入和核的卷积,来得到上采样的目的,其并不等同于数学上的反卷积概念。在深度学习中,反卷积神经网络指用了转置卷积的神经网络。

二、池化操作

        池化操作主要的作用为1)减少网络计算量与内存消耗;2)增加感受野大小;3)增加平移不变性(即较小的特征偏移也不影响特征输出)。从某种角度上来说,Pooling操作是一种对现存硬件计算能力和存储设备的妥协,其在某些卷积神经网络(如Resnet)可以被忽略。

三、数据归一化操作

        数据归一化操作中(以BatchNormal为例),β和γ参数是需要计算梯度更新的学习参数,数据归一化行为在Train、Test过程中是不一样的。在Train过程中,我们需要不断计算反向梯度更新β、γ参数,而在Test过程中我们是会固定前面学习得到的β、γ参数(Pytorch中测试调用net.eval())。

        批量归一化的主要作用:

        1)控制传入下一层的特征图数据,有效减少梯度爆炸和梯度消失的可能;

        2)减少对参数初始化的依赖;

        3)便于应用更高的学习率,实现更快的收敛。

四、深度学习中的Batch、Epoch

        反向梯度计算以更新模型权值等参数发生于一个Batch迭代后。初期训练时,我认为足够的Batch样本数对于模型的快速收敛较为重要。那么,如果受限于自身GPU显存限制,我们可以进一步权衡在CPU上训练更多样本数的Batch,而放宽训练时间这一要求。

        在合理范围内,增大Batch_Size具有以下优点[11]:

        1)内存利用率提高了,大矩阵乘法的并行化效率提高;

        2)跑完一次epoch(全数据集)所需的迭代次数减少,对于相同数据量的处理速度进一步加快;

        3)在一定范围内,一般来说Batch Size越大,其确定的下降方向越可能对准极值低点,训练引起损失震荡越小。

(图源: 【深度学习训练之Batch】_深度学习batch_哈哈哈哈海的博客-CSDN博客)

五、在.ipynb文件中调用不同路径位置文件的方法

(1)首先被引.ipynb文件转换为.py文件,然后在.ipynb文件中头部添加sys.path.insert(0,r"绝对路径")或sys.path.append(r“绝对路径”)[17]。

(2)编写.ipynb解析文件置于同一文件夹下[16]。

Pytorch参考资料:

[1] 在CV/NLP/DL领域中,有哪些修改一行代码或者几行代码提升性能的算法? - 圈圈的回答 - 知乎

https://www.zhihu.com/question/427088601/answer/1544199551.

[2]在CV/NLP/DL领域中,有哪些修改一行代码或者几行代码提升性能的算法? - 陀飞轮的回答 - 知乎 https://www.zhihu.com/question/427088601/answer/1587333057

[3]PyTorch 中文文档

[4]课时61 什么是卷积-1_哔哩哔哩_bilibili

[5]PyTorch Forums

[6]https://en.wikipedia.org/wiki/Convolutional_neural_network

[7]数字图像处理:第四版/(美)拉斐尔C.冈萨雷斯(Rafael C.Gonzalez),(美)理查德E.伍兹(Richard E.Woods)著;阮秋琦等译.——北京:电子工业出版社,2020.5.

[8]深入理解空洞卷积 - 知乎

[9]演示分组,深度,深度可分离卷积|3D卷积神经网络_哔哩哔哩_bilibili

[10]卷积神经网络之深度可分离卷积(Depthwise Separable Convolution) - 知乎

[11]谈谈深度学习中的 Batch_Size_机器学习batch size作用_ycheng_sjtu的博客-CSDN博客

[12]pytorch统计模型参数量并输出_pytorch输出模型参数量_xidaoliang123的博客-CSDN博客

[13]薰风读论文:MobileNet 详解深度可分离卷积,它真的又好又快吗? - 知乎

[14]三分钟搞懂CPU, GPU, FPGA计算能力 - 知乎

Python参考资料:

[15]Python:为什么类中的私有属性可以在外部赋值并访问_python 类外访问私有属性_Ding Jiaxiong的博客-CSDN博客

[16]调用jupyter notebook文件内的函数一种简单方法_AlexInML的博客-CSDN博客

[17]Jupyter Notebook引入外部的py文件中的方法_dirtyboy6666的博客-CSDN博客

相关文章:

耕地单目标语义分割实践——Pytorch网络过程实现理解

一、卷积操作 (一)普通卷积(Convolution) (二)空洞卷积(Atrous Convolution) 根据空洞卷积的定义,显然可以意识到空洞卷积可以提取到同一输入的不同尺度下的特征图&…...

画质提升+带宽优化,小红书音视频团队端云结合超分落地实践

随着视频业务和短视频播放规模不断增长,小红书一直致力于研究:如何在保证提升用户体验质量的同时降低视频带宽成本? 在近日结束的音视频技术大会「LiveVideoStackCon 2023」上海站中,小红书音视频架构视频图像处理算法负责人剑寒向…...

【傅里叶级数与傅里叶变换】数学推导——3、[Part4:傅里叶级数的复数形式] + [Part5:从傅里叶级数推导傅里叶变换] + 总结

文章内容来自DR_CAN关于傅里叶变换的视频,本篇文章提供了一些基础知识点,比如三角函数常用的导数、三角函数换算公式等。 文章全部链接: 基础知识点 Part1:三角函数系的正交性 Part2:T2π的周期函数的傅里叶级数展开 P…...

第二章MyBatis入门程序

入门程序 创建maven程序 导入MyBatis依赖。pom.xml下导入如下依赖 <dependencies><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.6</version></dependency><dependen…...

AgentBench::AI智能体发展的潜在问题(二)

从历史上看&#xff0c;几乎每一种新技术的广泛应用都会在带来新机遇的同时引发很多新问题&#xff0c;AI智能体也不例外。从目前的发展看&#xff0c;AI智能体的发展可能带来的新问题可能包括如下方面&#xff1a; 第二是AI智能体的普及将有可能进一步加剧AI造成的技术性失业。…...

C++中的运算符总结(4):逻辑运算符(上)

C中的运算符总结&#xff08;4&#xff09;&#xff1a;逻辑运算符&#xff08;上&#xff09; 8、逻辑运算 NOT、 AND、 OR 和 XOR 逻辑 NOT 运算用运算符!表示&#xff0c;用于单个操作数。表 1是逻辑 NOT 运算的真值表&#xff0c;这种运算将提供的布尔标记反转&#xff1…...

Flink安装与使用

1.安装准备工作 下载flink Apache Flink: 下载 解压 [dodahost166 bigdata]$ tar -zxvf flink-1.12.0-bin-scala_2.11.tgz 2.Flinnk的standalone模式安装 2.1修改配置文件并启动 修改&#xff0c;好像使用默认的就可以了 [dodahost166 conf]$ more flink-conf.yaml 启动 …...

CentOS系统环境搭建(七)——Centos7安装MySQL

centos系统环境搭建专栏&#x1f517;点击跳转 坦诚地说&#xff0c;本文中百分之九十的内容都来自于该文章&#x1f517;Linux&#xff1a;CentOS7安装MySQL8&#xff08;详&#xff09;&#xff0c;十分佩服大佬文章结构合理&#xff0c;文笔清晰&#xff0c;我曾经在这篇文章…...

3.react useRef使用与常见问题

react useRef使用与常见问题 文章目录 react useRef使用与常见问题1. Dom操作: useRef()2. 函数组件的转发: React.forwardRef()3. 对普通值进行记忆, 类似于一个class的实例属性4. 结合useEffect,只在更新时触发FAQ 1. Dom操作: useRef() // 1. Dom操作: useRef()let app doc…...

Axios使用CancelToken取消重复请求

处理重复请求&#xff1a;没有响应完成的请求&#xff0c;再去请求一个相同的请求&#xff0c;会把之前的请求取消掉 新增一个cancelRequest.js文件 import axios from "axios" const cancelTokens {}export const addPending (config) > {const requestKey …...

九耶丨阁瑞钛伦特-Spring boot与Spring cloud 之间的关系

Spring Boot和Spring Cloud是两个相互关联的项目&#xff0c;它们可以一起使用来构建微服务架构。 Spring Boot是一个用于简化Spring应用程序开发的框架&#xff0c;它提供了自动配置、快速开发的特性&#xff0c;使得开发人员可以更加轻松地创建独立的、生产级别的Spring应用程…...

总结,由于顺丰的问题,产生了电脑近期一个月死机问题集锦

由于我搬家&#xff0c;我妈搞顺丰发回家&#xff0c;但是没有检查有没有坏&#xff0c;并且我自己由于不可抗力因素&#xff0c;超过了索赔时间&#xff0c;反馈给顺丰客服&#xff0c;说超过了造成了无法索赔的情况&#xff0c;现在总结发生了损坏配件有几件&#xff0c;显卡…...

C#程序配置读写例子 - 开源研究系列文章

今天讲讲关于C#的配置文件读写的例子。 对于应用程序的配置文件&#xff0c;以前都是用的ini文件进行读写的&#xff0c;这个与现在的json类似&#xff0c;都是键值对应的&#xff0c;这次介绍的是基于XML的序列化和反序列化的读写例子。对于ini文件&#xff0c;操作系统已经提…...

Angular中的管道Pipes

Angular中的管道&#xff08;Pipes&#xff09;是一种强大的工具&#xff0c;它可以处理和转换数据&#xff0c;然后将其呈现在视图中。它们可以被用于排序、格式化和过滤数据等任务。在本文中&#xff0c;我们将介绍Angular中的管道以及如何使用它们来简化开发过程。 管道的基…...

React入门 jsx学习笔记

一、JSX介绍 概念&#xff1a;JSX是 JavaScript XML&#xff08;HTML&#xff09;的缩写&#xff0c;表示在 JS 代码中书写 HTML 结构 作用&#xff1a;在React中创建HTML结构&#xff08;页面UI结构&#xff09; 优势&#xff1a; 采用类似于HTML的语法&#xff0c;降低学…...

sqlserver数据库中把一张表中的数据复制到另一张表中

我们在使用ERP时经常会遇到&#xff0c;把老系统的单据直接拉过来使用&#xff0c;但是对应的数据却没有&#xff0c;为空&#xff0c;这时候就需要把老系统数据库里的数据复制一份到新系统里&#xff0c;&#xff08;方法如下&#xff09; 1、如果是整个表复制表达如下&#…...

el-table 多个表格切换多选框显示bug

今天写了个功能&#xff0c;点击左侧的树做判断&#xff0c;一级树节点显示系统页面&#xff0c;二级树节点显示数据库页面&#xff0c;三级树节点显示表页面。 数据库页面和表页面分别有2个el-table ,上面的没有多选框&#xff0c;下面的有多选框 现在出现bug&#xff0c;在…...

UE5.2程序发布及运行问题记录

发布后的程序默认是以全屏模式启动运行的&#xff0c;通过添加以下命令行参数&#xff0c;可实现程序的窗口模式运行&#xff1a; -ResX1280 -ResY720 -WINDOWED 发布后的程序&#xff0c;启动时&#xff0c;提示显卡驱动警告&#xff08;如图1所示&#xff09;&#xff0c;但是…...

c语言strtol函数、strtod函数、strtoul函数浅悉

---------------- | strtol | ---------------- i.e. string to long long int strtol(const char *nptr, char **endptr, int base) strtol()会将nptr指向的字符串&#xff0c;根据参数base&#xff0c;按权转化为long int, 然后返回这个值。 参数base的范…...

Spark第三课

1.分区规则 1.分区规则 shuffle 1.打乱顺序 2.重新组合 1.分区的规则 默认与MapReduce的规则一致,都是按照哈希值取余进行分配. 一个分区可以多个组,一个组的数据必须一个分区 2. 分组的分区导致数据倾斜怎么解决? 扩容 让分区变多修改分区规则 3.HashMap扩容为什么必须…...

国防科技大学计算机基础课程笔记02信息编码

1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制&#xff0c;因此这个了16进制的数据既可以翻译成为这个机器码&#xff0c;也可以翻译成为这个国标码&#xff0c;所以这个时候很容易会出现这个歧义的情况&#xff1b; 因此&#xff0c;我们的这个国…...

SkyWalking 10.2.0 SWCK 配置过程

SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外&#xff0c;K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案&#xff0c;全安装在K8S群集中。 具体可参…...

五年级数学知识边界总结思考-下册

目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解&#xff1a;由来、作用与意义**一、知识点核心内容****二、知识点的由来&#xff1a;从生活实践到数学抽象****三、知识的作用&#xff1a;解决实际问题的工具****四、学习的意义&#xff1a;培养核心素养…...

VTK如何让部分单位不可见

最近遇到一个需求&#xff0c;需要让一个vtkDataSet中的部分单元不可见&#xff0c;查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行&#xff0c;是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示&#xff0c;主要是最后一个参数&#xff0c;透明度…...

今日科技热点速览

&#x1f525; 今日科技热点速览 &#x1f3ae; 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售&#xff0c;主打更强图形性能与沉浸式体验&#xff0c;支持多模态交互&#xff0c;受到全球玩家热捧 。 &#x1f916; 人工智能持续突破 DeepSeek-R1&…...

C++使用 new 来创建动态数组

问题&#xff1a; 不能使用变量定义数组大小 原因&#xff1a; 这是因为数组在内存中是连续存储的&#xff0c;编译器需要在编译阶段就确定数组的大小&#xff0c;以便正确地分配内存空间。如果允许使用变量来定义数组的大小&#xff0c;那么编译器就无法在编译时确定数组的大…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题

分区配置 (ptab.json) img 属性介绍&#xff1a; img 属性指定分区存放的 image 名称&#xff0c;指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件&#xff0c;则以 proj_name:binary_name 格式指定文件名&#xff0c; proj_name 为工程 名&…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖

在Vuzix M400 AR智能眼镜的助力下&#xff0c;卢森堡罗伯特舒曼医院&#xff08;the Robert Schuman Hospitals, HRS&#xff09;凭借在无菌制剂生产流程中引入增强现实技术&#xff08;AR&#xff09;创新项目&#xff0c;荣获了2024年6月7日由卢森堡医院药剂师协会&#xff0…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...