当前位置: 首页 > 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扩容为什么必须…...

51c自动驾驶~合集58

我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留&#xff0c;CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制&#xff08;CCA-Attention&#xff09;&#xff0c;…...

mongodb源码分析session执行handleRequest命令find过程

mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程&#xff0c;并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令&#xff0c;把数据流转换成Message&#xff0c;状态转变流程是&#xff1a;State::Created 》 St…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具

文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

《通信之道——从微积分到 5G》读书总结

第1章 绪 论 1.1 这是一本什么样的书 通信技术&#xff0c;说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号&#xff08;调制&#xff09; 把信息从信号中抽取出来&am…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日&#xff0c;2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席&#xff0c;并作《智能体在安全领域的应用实践》主题演讲&#xff0c;分享了在智能体在安全领域的突破性实践。他指出&#xff0c;百度通过将安全能力…...

OpenLayers 分屏对比(地图联动)

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能&#xff0c;和卷帘图层不一样的是&#xff0c;分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表

##鸿蒙核心技术##运动开发##Sensor Service Kit&#xff08;传感器服务&#xff09;# 前言 在运动类应用中&#xff0c;运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据&#xff0c;如配速、距离、卡路里消耗等&#xff0c;用户可以更清晰…...

【Redis】笔记|第8节|大厂高并发缓存架构实战与优化

缓存架构 代码结构 代码详情 功能点&#xff1a; 多级缓存&#xff0c;先查本地缓存&#xff0c;再查Redis&#xff0c;最后才查数据库热点数据重建逻辑使用分布式锁&#xff0c;二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...

Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成

一个面向 Java 开发者的 Sring-Ai 示例工程项目&#xff0c;该项目是一个 Spring AI 快速入门的样例工程项目&#xff0c;旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计&#xff0c;每个模块都专注于特定的功能领域&#xff0c;便于学习和…...

【Linux】自动化构建-Make/Makefile

前言 上文我们讲到了Linux中的编译器gcc/g 【Linux】编译器gcc/g及其库的详细介绍-CSDN博客 本来我们将一个对于编译来说很重要的工具&#xff1a;make/makfile 1.背景 在一个工程中源文件不计其数&#xff0c;其按类型、功能、模块分别放在若干个目录中&#xff0c;mak…...