自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

不要给自己设限,尝试更多可能(思所向 皆可往)

分享在学习过程中看过的知识以及遇到的问题,求知的路上将会越走越远

  • 博客(204)
  • 收藏
  • 关注

原创 什么是扩散模型(Diffusion Models)?为什么它们是图像生成的一大进步?

也许过去十年在计算机视觉和机器学习方面的突破是 GANs(生成对抗网络)的发明——这种方法引入了超越数据中已经存在的内容的可能性,是一个全新领域的敲门砖,现在称为生成式建模。然而,在经历了一个蓬勃发展的阶段后,GANs 开始面临平台期,其中大多数方法都在努力解决对抗性方法面临的一些瓶颈。这不是单个方法的问题,而是问题本身的对抗性。图像生成缺乏多样性模式崩溃多模态分布问题学习训练时间过长由于问题表述的对抗性,不容易训练。

2025-04-05 11:10:17 409

原创 图像退化对目标检测的影响 !!

然而,目标检测算法的有效性很大程度上取决于输入图像的质量。图像退化是一个常见的问题,可能由低分辨率、噪声、模糊和压缩伪影等多种因素引起,严重阻碍目标检测系统的性能。本文深入探讨图像退化对目标检测的影响,分析其带来的挑战,并探索缓解这些影响的潜在解决方案。随着技术的进步,目标检测系统对图像退化的鲁棒性无疑将得到提高,从而拓宽其在不同领域中的应用范围和可靠性。在光与像素的复杂交织中,清晰与复杂相遇,目标检测的探索提醒我们,即使在一个数据充斥的世界中,图像中最微小的退化也可能在我们的数字成果中产生深远的影响。

2025-04-03 14:45:14 641

原创 一文搞懂 蒸馏、量化、MoE 和 MHA !!

通过以更少的位数表示浮点数据,模型量化可以减少模型尺寸,进而减少在推理时的内存消耗,并且在一些低精度运算较快的处理器上可以增加推理速度。软标签通常是教师模型的输出概率分布,它携带了更多的信息,例如类别之间的相似度,这使得学生模型能够在较少的数据和参数的情况下,学到更加丰富的知识。是一种在Transformer 模型中被广泛采用的注意力机制扩展形式,它通过并行地运行多个独立的注意力机制来获取输入序列的不同子空间的注意力分布,从而更全面地捕获序列中潜在的多种语义关联。这个大模型即为 “教师模型”。

2025-04-02 21:32:30 666

原创 特征提取:传统算法 VS 深度学习 !!

特征提取是计算机视觉领域经久不衰的研究热点,总的来说,快速、准确、鲁棒的特征点提取是实现上层任务基本要求。特征点是图像中梯度变化较为剧烈的像素,比如:角点、边缘等。FAST(Features from Accelerated Segment Test)是一种高速的角点检测算法;而尺度不变特征变换 SIFT(Scale-invariant feature transform)仍然可能是最著名的传统局部特征点。也是迄今使用最为广泛的一种特征。特征提取一般包含特征点检测和描述子计算两个过程。

2025-04-01 19:17:03 628

原创 图像处理:使用Numpy和OpenCV实现傅里叶和逆傅里叶变换

图像处理一般分为直接对图像内的像素进行处理的空间域处理和频率域处理。空间域处理主要划分为灰度变换和空间滤波两种形式。灰度变换是对图像内的单个像素进行处理,比如调节对比度和处理阈值等。空间滤波涉及图像质量的改变,例如图像平滑处理。空间域处理的计算简单方便,运算速度更快。频率域处理是先将图像变换到频率域,然后在频率域对图像进行处理,最后再通过反变换将图像从频率域变换到空间域。

2025-03-31 11:22:44 869 1

原创 PyTorch 的十大核心操作总结 !!—(2)

在 PyTorch 中,通常通过创建一个自定义的数据集类来加载数据。自定义数据集需要继承自 torch.utils.data.Dataset,并实现 __len__ 和 __getitem__ 方法。

2025-03-29 14:52:16 722

原创 PyTorch 的十大核心操作总结 !!—(1)

可以通过继承 nn.Module 类创建自定义的神经网络层和操作,例如自定义的激活函数、损失函数等。这些功能使得 nn.Module 成为 PyTorch 中构建和组织神经网络的核心工具之一。通过模块化的设计,可以更灵活地搭建、训练和调整复杂的神经网络结构。可以通过继承 torch.optim.Optimizer 类来创建自定义的优化器。# 自定义的优化步骤...优化器是深度学习训练过程中关键的组件之一,选择适当的优化器和学习率策略对于模型的性能至关重要。

2025-03-28 19:56:23 920

原创 一文了解视觉Transformer解析 !!

自2017年“注意力就是一切”的理念问世以来,Transformer模型便迅速再自然语言处理(NLP)领域展露头角,确立了其领先地位。到了2021年,“一张图片等于16x16个单词”的理念成功将Transformer模型引入计算机视觉任务中。自此以后,众多基于Transformer的架构纷纷涌现,应用于计算机视觉领域。本文将详细介绍“一张图片等于16x16个单词”中阐述的Vision Transformer(ViT),包括其开源代码和对各组件的概念解释。所有代码均使用PyTorch Python实现。

2025-01-30 18:15:09 904

原创 数据压缩的十种常用算法!!

另外,基于CNN的压缩还提升了JPEG图像的品质,因为它减少了峰值信噪比(PSNR)和结构相似性(SSIM)。LZMA算法,全称是Lempel-Ziv Markov chain Algorithm(LZMA),于1998年提出,是LZ77的改进版,旨在实现.7z格式的7-ZIp文件归档。这个算法目标是成为LZ77的一个线性时间替换算法,但编码后Udell指针可能指向文件的任意偏移量,意味着需要耗费可观的内存,因此表现不如LZ77。它的原理是消除不必要的数据或以更高效的格式重新组织数据。

2024-12-31 17:10:02 1856

原创 一文搞懂卷积核的基本概况 !!

在卷积神经网络里,卷积核其实就是一个过滤器,但在深度学习里,它不做反转,而是直接执行逐元素的乘法和加法,我们把这个又称为互相关,在深度学习里称为卷积。

2024-11-07 16:26:15 2397 1

原创 7大类卷积神经网络(CNN)创新综述

深度卷积神经网络(CNN)是一种特殊类型的神经网络,在各种竞赛基准上表现出了当前最优结果。深度 CNN 的超强学习能力主要是通过使用多个非线性特征提取阶段实现的,这些阶段能够从数据中自动学习分层表征。大量数据的可用性和硬件处理单元的改进加速了 CNN 的研究,最近也报道了非常有趣的深度 CNN 架构。近来,深度 CNN 架构在挑战性基准任务比赛中实现的高性能表明,创新的架构理念以及参数优化可以提高 CNN 在各种视觉相关任务上的性能。

2024-10-24 09:30:00 1510

原创 一文搞懂 PyTorch 中的 torch.nn模块 !!

在深度学习领域,PyTorch是一个非常流行的框架,而 torch.nn 模块是PyTorch中用于构建神经网络的核心模块。

2024-10-18 17:23:25 1053

原创 深度学习500问——Chapter17:模型压缩及移动端部署(5)

所谓的 channel split 其实就是将通道数一分为2,化成两分支来代替原先的分组卷积结构(G2),并且每个分支中的卷积层都是保持输入输出通道数相同(G1),其中一个分支不采取任何操作减少基本单元数(G3),最后使用了 concat 代替原来的 elementy-wise add,并且后面不加 ReLU 直接(G4),再加入channle shuffle 来增加通道之间的信息交流。深度卷积的传统实现是每次都在卷积核元素上迭代,然后将一个卷积核行和一个输入行的结果累加到输出行。

2024-10-18 11:06:47 845

原创 一文搞懂像素、特征和决策级融合的区别 !!

在图像处理和计算机视觉领域,图像融合技术通过整合来自多个传感器或模型的信息,提高图像质量、特征提取和识别精度。根据融合的层次,图像融合可以分为三类:像素级融合、特征级融合和决策级融合。本文将详细介绍这三者的区别以及各自的优势和应用场景。

2024-10-17 15:52:52 2186 1

原创 深度学习500问——Chapter17:模型压缩及移动端部署(4)

ResNet中的Residuals block先经过1*1的Conv layer,把feature map的通道数降下来,再经过3*3 Conv layer,最后经过一个1*1的Conv layer,将feature map通道数再“扩张”回去。即采用先压缩,后扩张的方式。增多3*3的卷积的分支的数量,使它与1*1的卷积的输出通道数相等,此时每个3*3的卷积只作用与一个通道的特征图上,作者称之为“极致的Inception(Extream Inception)”模块,这就是Xception的基本模块。

2024-10-10 16:17:01 794

原创 深度学习500问——Chapter17:模型压缩及移动端部署(3)

Group convolution是将输入特征对维度c1分为g份,每个group对应的channel数为 c1/g,特征维度 H*W*c1/g,每个group对应对卷积核对维度也相应发生改变为 h1*w1*c1/g,共 c2/g个;如果在相同的FLOPs时,group卷积为了满足FLOPs会是使用更多的channels,可以提高模型的精度。,等式成立的条件是c1=c2,也就是输入特征通道数和输出特征通道数相等时,在给定FLOPs前提下,MAC达到取值的下界。卷积核的维度为 h1*w1*c1,共c2个;

2024-10-01 09:30:00 854

原创 深度学习500问——Chapter17:模型压缩及移动端部署(2)

大型网络通常是在量级较大的数据集上训练完成的,比如,在ImageNet上训练的模型具备对1000类物体的分类,但在一些具体场景的应用中,可能仅需要一个能识别其中几类的小型模型。目前,对各类深度网络压缩算法的评价是比较零碎的,侧重于和被压缩的大型网络在参数量和运行时间上的比较。深度网络的最终结果是由全部的权重参数共同作用形成的,目前,关于单个卷积核/卷积核权重的重要性的度量仍然是比较简单的方式。学生网络的结构构造目前仍然是由人工指定的,然而,不同的学生我网络结构的训练难度不同,最终能够达到的效果也有差异。

2024-09-30 10:47:42 918

原创 深度学习500问——Chapter17:模型压缩及移动端部署(1)

深度神经网络在人工智能的应用中,包括语音识别、计算机视觉、自然语言处理等各方面,在取得巨大成功的同时,这些深度神经网络需要巨大的计算开销和内存开销,严重阻碍了资源受限下的使用。本章总结了模型压缩、加速一般原理和方法,以及在移动端如何部署。

2024-09-29 15:42:54 857

原创 深度学习500问——Chapter15:异构计算,GPU和框架选型(2)

针对硬件厂商来说,比如NVIDIA,对各个操作系统的支持都是比较好的,比如WIndows系列,Linux系列,但是由于Linux系统对专业技术人员比较友好,所以目前几乎所有的深度学习系统构建都是基于Linux的,比较常用的系统如Ubuntu系列,CentOS系列等等。(3)熟悉Linux,不熟悉深度学习理论,毫无疑问,强烈推荐使用Linux系统,安装软件简单,工作效率高,总之一句话,如果不熟悉Linux,就先慢慢熟悉,最终还是要回归到Linux系统来构建深度学习系统。内存带宽通常相对固定,选择空间较小。

2024-09-26 18:08:15 1020

原创 深度学习500问——Chapter15:异构计算,GPU和框架选型(1)

异构计算是基于一个更加朴素的概念,“异构现象”,也就是不同计算平台之间,由于硬件结构(包括计算核心和内存),指令集和底层软件实现等方面的不同而有着不同的特性。异构计算就是使用结合了两个或者多个不同的计算平台,并进行协同运算。比如,比较常见的,在深度学习和机器学习中已经比较成熟的架构:CPU和GPU的异构计算;此外还有比较新的Google推出的协处理器(TPU),根据目的而定制的ASIC,可编程的FPGA等也都是现在在异构计算中使用比较多的协处理器。

2024-09-26 13:47:27 1483

原创 深度学习500问——Chapter14:超参数调整(3)

一、优秀的数据预处理;二、合适的模型结构和功能;三、优秀的训练策略和超参数;四、合适的后处理操作;五、严格的结果分析。这几方面都对最终的结果有着举足轻重的影响,这也是目前的数据工程师和学者们的主要工作。但由于这每一方面都十分繁琐,尤其是在构建模型和训练模型上,而大部分情况下,这些工作有无须过深专业知识就能使用起来。所以AutoML主要的作用就是来帮助实现高效的模型构建和超参数调整。例如深度学习网络的架构搜索、超参数的重要性分析等等。

2024-09-24 17:27:50 1113

原创 深度学习500问——Chapter14:超参数调整(2)

微调(fine-tune),顾名思义指稍微调整参数即可得到优秀的性能,是迁移学习的一种实现方式。微调和从头训练(train from scratch)的本质区别在于模型参数的初始化,train from scratch通常指对网络各类参数进行随机初始化(当然随机初始化也存在一定技巧),随机初始化模型通常不具有任何预测能力,通常需要大量的数据或者特定域的数据进行从零开始的训练,这样需要训练到优秀的模型通常是稍困难的。

2024-09-22 14:51:38 737

原创 深度学习500问——Chapter14:超参数调整(1)

关于训练深度学习模型最难的事情之一是你要处理的参数的数量。无论是从网络本身的层宽(宽度)、层数(深度)、连接方式,还是损失函数的超参数设计和调试,亦或者是学习率、批样本数量、优化器参数等等。这些大量的参数都会有网络模型最终的有效容限直接或间接的影响。面对如此众多的参数,如果我们要一一对其优化调整,所需的无论是时间、资源都是不切实际的。结果证实一些超参数比其他的更为重要,因此认识各个超参数的作用和其可能会造成的影响是深度学习训练中必不可少的一项重要技能。超参数调整。

2024-09-17 11:55:22 1950

原创 深度学习500问——Chapter13:优化算法(3)

这个问题出现总会和模型过拟合表现很相似,即在训练集上能体现非常不错的性能,但在测试集上表现总是差强人意,区别在于如果遇到的是数据不匹配的问题,通常在用一批和训练集有着相同或者相似分布的数据上仍然能取得不错的结果。而不同类型的模型,在不同数据上的优化成本都可能不一样,所以在探索模型时需要尽可能挑选优化简单,训练效率更高的模型进行训练。​ 1、提高模型的结构,比如增加神经网络的层数,或者将简单的神经元单位换成复杂的 LSTM 神经元,比如在自然语言处理领域内,利用 LSTM 模型挖掘语法分析的优势。

2024-09-10 18:44:10 1191

原创 深度学习500问——Chapter13:优化算法(2)

训练、验证、测试集在机器学习领域是非常重要的三个内容。三者共同组成了整个项目的性能的上限和走向。训练集:用于模型训练的样本集合,样本占用量是最大的;验证集:用于训练过程中的模型性能评价,跟着性能评价才能更好的调参;测试集:用于最终模型的一次最终评价,直接反应了模型的性能。在划分上,可以分两种情况:1、在样本量有限的情况下,有时候会把验证集和测试集合并。实际中,若划分为三类,那么训练集:验证集:测试集=6:2:2;若是两类,则训练集:验证集=7:3。

2024-08-29 16:33:24 823

原创 深度学习500问——Chapter13:优化算法(1)

目前大部分的深度学习模型仍然需要海量的数据支持。例如ImageNet数据就拥有1400多万的图片,而现实生产环境中,数据集通常较小,只有几万甚至几百个样本。这时候,如何在这种情况下应用深度学习呢?

2024-08-24 10:05:43 1323

原创 RuntimeError: PytorchStreamReader failed reading zip archive: invalid header or archive is corrupted

模型推理过程中遇到错误:RuntimeError: PytorchStreamReader failed reading zip archive: invalid header or archive is corrupted。这个错误通常发生在尝试加载损坏的 PyTorch 模型文件时。这可能是由文件下载不完整、文件传输过程中损坏或者存储设备出现问题导致的原因。

2024-07-22 11:00:25 1279

原创 Python基础知识——(005)

本章总结保留字是Python已经被赋予特定意义的一些单词,保留字严格区分大小写标识符可用来给变量、函数、类、模块和其他对象命名可以是字母(包含中文)、数字、下划线,第一个字符不能是数字不能是Python中的保留字标识符严格区分大小写以下划线开头的标识符有特殊意义,不能随便使用允许使用中文作为标识符,但不建议使用变量名=value整数类型的四种表示形式:二进制、八进制、十进制和十六进制浮点数可以使用内置函数round() 限定运算结果需要保留的小数位数。

2024-07-20 11:18:17 663

原创 Python基础知识——(004)

布尔类型用来表示 “真” 值或 “假” 值的数据类型在Python中使用标识符True或False表示布尔类型的值True表示整数1,False表示整数0

2024-07-11 17:30:59 644

原创 Python基础知识——(003)

编译器知道常量不会改变,这可以在编译时进行一些优化处理,如将常量内联到代码中,减少运行时的内存访问。:常量通常用于表示不会改变的值,比如圆周率π、一年的月份数量等。,在开发程序时,不可以把这些保留字作为变量、函数、类、模块和其他对象的名称来使用。:如果程序中某个值不应该改变,将其定义为常量可以预防编程错误,例如误将其改变。:使用常量可以防止数据在程序运行中被意外修改,从而增加程序的可靠性。表示的数值是没有小数部分的数值,包含正整数、负整数和0。连续的字符序列,可以表示计算机所能识别的一切字符。

2024-07-09 17:43:28 1155

原创 Python基础知识——(002)

是指每行语句开始前的空白区域用来表示Python程序间的包含和层次关系类定义、函数定义、流程控制语句以及异常处理语句等行尾的冒号和下一行的缩进表示一个代码块的开始,而缩进结束,则表示一个代码块的结束通常情况下采用4个空格作为一个缩进量程序设计语言又被称为编程语言计算机程序是使用编程语言组织起来的一组计算机指令计算机指令就是指挥机器工作的指示和命令编程语言可分为机器语言、汇编语言和高级语言采用编译方式执行的语言称为静态语言采用解释方式执行的语言称为脚本语言。

2024-07-09 13:53:37 730

原创 Python基础知识——(001)

Python语言的发明人——吉多·范罗苏姆(荷兰人)Python语言的设计非常优雅、明确、简单Python语言具有丰富和强大的库,能够把使用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。

2024-07-08 18:05:52 1014

原创 深度学习500问——Chapter12:网络搭建及训练(3)

所有的模型数据、计算参数都是暴露在外、可供读写的。AlexNet中用到了一些非常大的卷积核,比如11×11、5×5卷积核,之前人们的观念是,卷积核越大,感受野越大,看到的图片信息越多,因此获得的特征越好。主要的创新在于他的Inception,这是一种网中网(Network In Network)的结构,即原来的结点也是一个网络。因为如果所有的参数都是0,那么所有神经元的输出都将是相同的,那在back propagation的时候同一层内所有神经元的行为也是相同的,这可能会直接导致模型失效,无法收敛。

2024-06-21 09:30:00 1308

原创 深度学习500问——Chapter12:网络搭建及训练(2)

Caffe的全称应该是 Convolutional Architecture for Fast Feature Embedding,它是一个清晰、高效的深度学习框架,它是开源的,核心语言是C++,它支持命令行、Python和Matlab接口,它既可以在CPU上运行也可以在GPU上运行,它的license是BSD 2-Clause。

2024-06-20 16:01:27 719

原创 深度学习500问——Chapter12:网络搭建及训练(1)

如果我们运行的节点依赖某个placeholder,那我们必须给这个placeholder指定值,怎么指定代码里面很清楚,给关键字参数feed_dict传递一个字典即可,字典里的元素的key是placeholder对象,value是我们指定的值。符号式计算一般是先定义各种变量,然后建立一个数据流图,在数据流图中规定各个变量间的计算关系,最后需要对数据流图进行编译,但此时的数据流图还是一个空壳,里面没有任何实际数据,只有把需要运算的输入放进去后,才能在整个模型中形成数据流,从而形成输出值。

2024-06-16 09:15:00 1329

原创 深度学习500问——Chapter11:迁移学习(4)

深度网络的finetune也许是最简单的深度网络迁移方法。Finetune,也叫微调、fine-tuning,是深度学习中的一个重要概念。简而言之,finetune就是利用别人已经训练好的网络,针对自己的任务再进行调整。从这个意思上看,我们不难理解finetune是迁移学习的一部分。为什么需要已经训练好的网络?在实际的应用中,我们通常不会针对一个新任务,就去从头开始训练一个神经网络。这样的操作显然是非常耗时的。尤其是,我们的训练数据不可能像ImageNet那么大,可以训练出泛化能力足够强的深度神经网络。

2024-06-14 09:30:00 972 1

原创 深度学习500问——Chapter11:迁移学习(3)

作者提出了类内迁移(Intra-class Transfer)的思想,指出现有的绝大多数方法都只是学习一个全局的特征变换(Global DomainShift),而忽略了类内的相似性。这种方法的基本思想是,由于源域和目标域的数据概率分布不同,那么最直接的方式就是通过一些变换,将不同的数据分布的距离拉近。特征选择的基本假设是:源域和目标域中均含有一部分公共的特征,在这部分公共的特征,源域和目标域的数据分布是一致的。因此,此类方法的目标就是,通过机器学习方法,选择出这部分共享的特征,即可依据这些特征构建模型。

2024-06-13 09:30:00 980

原创 深度学习500问——Chapter11:迁移学习(2)

在最新的研究成果中,香港科技大学的Tan等人扩展了实例迁移学习方法的应用场景,提出 了传递迁移学习方法(Transitive Transfer Learning, TTL) [Tan et al.,2015] 和远域迁移学习 (Distant Domain Transfer Learning,DDTL) [Tan et al.,2017],利用联合矩阵分解和深度神经网络,将迁移学习应用于多个不相似的领域之间的知识共享,取得了良好的效果。而基于特征表示的迁移学习方法效果更好,是我们研究的重点。

2024-06-11 09:30:00 1443

原创 深度学习500问——Chapter11:迁移学习(1)

找到目标问题的相似性,迁移学习任务就是从相似性出发,将旧领域(domain)学习过的模型应用在新领域上。负迁移(Negative Transfer)指的是,在源阈上学习到的知识,对于目标域上的学习产生负面作用。数据问题:源域和目标域压根不相似,谈何迁移?方法问题:源域和目标域是相似的,但是,迁移学习方法不够好,没找到可迁移的成分。负迁移给迁移学习的研究和应用带来了负面影响。在实际应用中,找到合理的相似性,并且选择或开发合理的迁移学习方法,能够避免负迁移现象。

2024-06-09 09:30:00 1228 1

原创 Python代码——压缩整个文件夹

使用 Python 的 zipfile 模块来创建一个压缩文件夹。下面是一个示例代码,展示了如何将一个文件夹中的所有文件和子文件夹压缩成一个 ZIP 文件:这段代码会遍历指定文件夹内的所有文件和子文件夜,并将它们加入到一个新的 ZIP 文件中。表示使用了标准的 ZIP 压缩算法。

2024-06-08 16:42:22 1381

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除