自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 收藏
  • 关注

原创 git使用(记录ing)

git checkout -b 本地分支 origin/远程分支 创建本地分支并将本地分支与远程仓库关联。git checkout -b 分支名 创建新的分支并切换到新的分支。git branch -m 原分支名 新分支名 修改本地分支名称。git rebase 分支名 将分支名rebase到当前分支。git merge 分支名 将分支名合并到当前分支。git branch -D 分支名 强制删除指定分支。git branch -d 分支名 删除指定分支。

2023-01-12 20:50:17 771 1

原创 vision transformer 剪枝论文汇总

同时,作者提出一种自顶向下的剪枝方法,大致的流程就是从最后一层开始反推减去的patch,因为与卷积是不一样的,transformer的patch是一一对应的,而cnn却不是,意思是transformer中,如果我们从头剪,那么剪去的patch在后面是没有的,那么是非常影响精度的,因为前面冗余不代表后面冗余,所以从后往前是最好的选择,具体如图。的含义是:随着模型的层数由浅到深,token 的数量逐渐减小,即随着计算的进行,逐渐丢弃无信息的 tokens。因此深度方向也是可以进行剪枝的。

2022-11-15 20:27:37 3808 3

原创 基础模型量化学习扩展仓库

目前支持更换per_tensor和per_channel量化,支持基于Minmax, EmaMinmax, omse, Histogram, adaround, bias_correction的PTQ量化方法,支持基于Minmax, EmaMinmax,omse, Histogram,Dorefa, LSQ的QAT量化方法。欢迎大家有问题,错误,想法都可以积极交流,探讨,学习,本项目长期维护,持续更新,各位的star,就是对本项目的大力支持。后续,将会支持更多量化方法,量化框架,欢迎大家持续关注。

2022-11-02 21:02:26 474

原创 目标检测tricks总结(记录)

可以根据实际任务,修改anchor预设的大小和scale ,也就是说stride + anchor ratio + anchor scales都可以调整,选择不同stride确定了feature map的大小,stride就是说下采样的比例,4就是256*256变成64*64,ratio确定了纵横比和尺度。

2022-11-01 20:23:09 1409

原创 VIT quantization相关论文阅读

这里采用svd分解,奇异值分解得到的奇异值的和就是矩阵的核范数,可以表述这个矩阵的数据相关性,本文用这个核范数来表征量化的敏感程度,用来作为混合精度Bit-width设置的依据.主要思想:根据bit-width变化造成的二阶扰动来对不同bit-width配置进行排序,排序的指标如下:给定一个目标的model size,根据上述的指标对不同bit-width配置进行排序,然后选取最小扰动的配置。对于softmax来说,也就是说R1对应的是小的,采用2k-1量化,优化R1,同时为了方便计算,

2022-10-19 10:30:47 1561 1

原创 车道线检测1. lanenet代码精读(记录)

直接看模型,首先se_block就是基本模型模块单元,centext_embedding_block一个模块, _GatherExpansion是采用se_block的基础上进行了深度可分离卷积, 分为_apply_ge_when_stride_equal_one和_apply_ge_when_stride_equal_two,是深度可分离卷积中stride的值的区别,当为2时会导致下采样。前两步没啥可说的,就是调整数据格式,需要看的是这个函数。先看二值的,也很简单,就是三个通道,每个通道都做ce。

2022-10-12 20:47:54 2088 2

原创 Up or Down? Adaptive Rounding for Post-Training Quantization(记录)

乍一看很复杂,其实非常好理解,我理解的就是在量化的[ ] 后加一个可训练的参数并且被限制在0-1,也就是相当于到底是up还是down,模型自己学,也就是h(v),这里引入了一个叫rectified sigmoid的东西,据说是可以解决传统的sigmoid梯度消失的问题。然后就很好理解了,练就完事,具体可以参考一篇知乎的讲解,侵删。也就是说,作者假设在对第L层计算量化损失时,认为第L-1层对L层的量化损失影响是一个不依赖于校准数据集输入的常量,所以在公式(18)中可以直接省略。然后,那么如果优化这个取整呢?

2022-10-12 19:52:20 567 3

原创 量化论文笔记

本文通过优化缩放参数(scale)提出了一种更为简单高效的后量化方法,称为EasyQuant(EQ),可以达到与训练中量化相近的精度。EasyQuant优化了每一层权重和激活值的量化因子的取值,使得卷积后达到更高的量化精度;随后将权重和激活值的位宽降至7bit,中间值以int16形式存储,来加速推理。实验结果显示在不同计算机视觉任务中EQ比TensorRT效果更佳,7bit位宽后量化达到了接近int8的精度。

2022-09-06 17:21:40 725

原创 模型量化基础概念温习

min-max对于离群值敏感,效果差,其他校准的策略来说,相对简单效果更好的有:KL散度(KL divergence):最小化量化后int8与float32数据的KL散度,tensorrt采用这个策略。这个敏感度判别采用最直接简单的方法:每次只量化一层跑一遍,看模型效果的影响,影响大的就更敏感,反之就不敏感。为了保证一致性,我们需要在激活之后再进行量化,并且可以使用激活融合的方式。简单节省内存,虽然现在每个通道的权重量化越来越普遍,但并不是所有的商业硬件都是支持的,因此,重要的是需要检查硬件设备是否支持。

2022-08-23 17:23:33 2223 2

原创 初入神经网络剪枝量化5(大白话)

最近看了很多篇关于剪枝的文章,今天在这里简单介绍一下每一篇的思想。①PRUNING FILTERS FOR EFFICIENT CONVNETS​​​​​​: https://arxiv.org/pdf/1608.08710.pdf 这篇论文之前也说过,在我看来就是非常经典的,非常传统的一篇剪枝的论文。核心思想就是首先计算卷积核的绝对值和即 ∑|Fi,j| , (L1范数),选择前m个最小的绝对值删除, 认为权重的绝对值越小,则权重的作用也就越小。②Pru...

2022-04-23 23:17:33 5101

原创 Revisiting ResNets: Improved Training and Scaling Strategies论文简述

这篇论文刚开头就说到现如今人们对于计算机视觉架构具有非常高的关注,但其实每一次新的SOTA的模型架构,其实都经常同时改变训练方法学和缩放策略相结合。所以说,这篇论文就重新审视思考了resnet这一经典的模型架构。然后,作者对比了现在非常火的高性能的用nas搜出来的网络结构effcientnet,与resnet对比,effcientnet到底为什么比resnet强,是因为模型架构吗?还是训练策略,数据增强等tricks。然后,就有了下图:横坐标为模型训练一次所需时间...

2022-04-01 22:34:29 651

原创 micro和macro F1 score理解

首先,明确一个概念,精确率(Precision)和召回率(Recall)并不是只有在目标检测中才有的,是所有任务涉及到分类的都有。而且P和R是针对于每一类来说的,每一个类别都有自己的准确率和召回率,计算每一个类别时,该样本即为正样本,其他样本统一为负样本来计算。首先,先说F1 score,它其实是用来评价二元分类器的度量。F1是针对二元分类的,那对于多元分类器,有没有类似F1 score的度量方法呢?那就是这里提到的micro-F1和macro-F1macro-F1...

2022-03-28 21:18:42 3394

原创 (记录)计算机视觉方面期刊与顶会

会议:cvpr,iccv,eccv, 三大顶会nips,icml,aaai,ijcai,acm-mm期刊:tpami, tip查论文方法:dblp: computer science bibliography 先搜索关键词, 之后在右下方选择refine by venue中随便一个,再修改搜索框中想要选择的会议和期刊名即可。...

2022-03-28 20:59:20 4247

原创 (记录)ubuntu18.04连上wifi无法上网的解决方法

1、sudo vim /etc/resolv.conf这时可以看到只有一个 nameserver 127.0.0.53(这个是不可用的),如果临时使用,可以在后面再配置一项DNS2、nameserver 114.114.114.114即可使用。

2022-03-26 23:15:14 4860 1

原创 (记录)rm的简单用法

rm -rf *

2022-03-25 12:19:55 131

原创 Mobile-Former: Bridging MobileNet and Transformer论文简述

本文的核心思想,就是将mobilenet与transformer结合起来,通过mobilenet提取局部特征,transformer来提取全局特征。比较突出的是,本文采用了一种全新的并行结构,而不是之前的将cnn模型穿插在VIT中的方法,并且通过bridge,将全局与局部特征进行融合。结构如图所示:正在上传…重新上传取消 mobilenett以图像为输入堆叠mobile block(或inverted bottleneck)。它利用高效的de...

2022-03-19 17:37:36 4733

原创 Learning Transferable Architectures for Scalable Image Recognition论文简述

本文是谷歌在2018年提出的一篇神经网络结构最优搜索的论文本文的核心思想是基于一篇Neural Architecture Search With Reinforcement Learning,的优化和改进。我们知道在深度学习任务比如图像识别,图像分类中模型结构是非常关键的,比如VGG,ResNet,DenseNet等在网络结构的设计。但是,这种人为设计的结构就一定好么?不一定,因此希望能通过一个神经网络来按照一定策略学习得到最佳的网络结构。首先,先简单说一说Neu...

2022-03-19 17:28:48 3178

原创 Dynamic Slimmable Network

本文的核心思想就是使用宽度动态可变网络(Dynamic Slimmable Supernet),来实现剪枝,同时解决了传统剪枝方法硬件实际加速效果很低的问题。这里的宽度选择与传统不同,提出了使用动态宽度门控(Dynamic Slimming Gate)对网络进行瘦身。核心思想如图,首先训练supernet网络,再训练Gate门控,通过输入来选择不同的宽度,将困难图片送入复杂的网络,将简单的图片送入简单网络进行前向推理。采用了两阶段的训练策略: ...

2022-03-14 20:35:57 1366

原创 GAN(生成对抗神经网络 )的一点思考

GAN的原理说起来很简单,就是一个生成网络,一个鉴别网络,两个网络不断对抗各自优化,道高一丈,魔高一尺,道再高一丈的过程。那么gan到底是如何通过对抗,就可以使得随机的一张图可以生成我们想要的图片呢?gan的目的很简单,希望构建一个从隐变量 Z 生成目标数据 X 的模型,也就是说假设了服从某些常见的分布(比如正态分布或均匀分布),然后希望训练一个模型 X=g(Z),这个模型能够将原来的概率分布映射到训练集的概率分布,目的就是进行分布之间的变换。...

2022-03-13 17:02:52 3532

原创 Vit,DeiT,DeepViT,CaiT,CPVT,CVT,CeiT简介

Vit: 最基础的,就是将transformer的encoder取出来。输入图像大小维度(B,C,H,W),将图片不重叠地划分为H/patch_height * w/patch_weight个patch,每个patch为patch_height * patch_weight * c。之后,concat用于分类的cls token,维度+1,同时加入可学习的绝对位置编码,送入transformer的主体。 之后就与tansformer的计算相同,这里不多做赘述。...

2022-03-12 11:14:05 4868

原创 torch.fx 简介与量化

pytroch发布的torch.fx工具包可以说是很好的消除一些动态图和静态图的Gap,可以使得我们对于nn.Module的各种变化操作变得非常简单。动态图和静态图:动态意味着程序将按照我们编写命令的顺序进行执行。这种机制将使得调试更加容易,并且也使得我们将大脑中的想法转化为实际代码变得更加容易。而静态则意味着程序在编译执行时将先生成神经网络的结构,然后再执行相应操作。按照动态图和静态图最明显的两个框架就是pytorch和tensorflow两个。静态图的优势就在...

2022-01-14 11:20:28 4910

原创 flappy_bird_DQN_MQBench

项目介绍:强化学习的强大在于我们可以使得计算机在不断的学习中掌握到我们希望他掌握到的本领。本项目首先,基于pytorch使用强化学习中DQN算法来训练不死鸟,并且调用MQBench量化库加速训练,量化网络模型。最终使得鸟可以永远不死的,毫无止境的不断向前通过无数的管道。项目地址(GitHub)https://github.com/Ranking666/flappy_bird_DQN_MQBench如有错误,欢迎各位批评指正!!!...

2022-01-12 22:38:02 348

原创 Yolov5更换backbone,与模型压缩(剪枝,量化,蒸馏)续

项目介绍: 本仓库是基于官方yolov5源码的基础上,进行的改进。 新增支持更换yolov5的backbone主干网络为Efficientnetv2, shufflenetv2, 具体网络模型实现可在model-->common.py中查看。 后续,将会添加更多更轻量,更优秀的主干网络,比如swintranst等,其他剪枝方法,以及量化,蒸馏对于yolov5系列的支持。 欢迎大家有问题,错误,想法都可以积极交流,探讨,学习,本项...

2021-12-28 20:09:15 6372 9

原创 git上传到github简单操作,以及常见问题

一. 最简单最直接:在已经创建好的仓库中 直接选择Add file------>Upload files 进入到这个界面,直接点击choose your files即可 不过这个方法对于简单的自己单独的库还可以,对于复杂一点多人合作涉及到多个分支的话,就不是很友好了。二 利用git 这里默认已经安装好git,并且已经获得github的SSH密钥,网上资料很多也很简单。 首先...

2021-12-23 19:08:52 688

原创 Yolov5更换backbone,与模型压缩(剪枝,量化,蒸馏)

目前支持更换yolov5的backbone主干网络为Ghostnet,以及采用eagleeye的剪枝方法支持对yolov5系列的剪枝。 后续,将会添加更多更轻量,更优秀的主干网络,比如swintrans,...

2021-12-15 14:49:47 28476 17

原创 《Quantization for Sustainable Reinforcement Learning》

强化学习作为一种无监督学习,没有标签使得学习收敛的速度非常低,所以强化学习的加速训练得到了广泛的关注。 什么是强化学习?简单来说,就是我们对相应的状态设置不同的奖励值,agent也就是可以看作一个玩家,这个玩家到不同的状态后,会获得不同的奖励值,最终的目的就是获得最高的奖励。与深度学习结合后,强化学习以DQN为例子的大致流程可以简述为: ①初始化Q和Q_target值网络权重,Q值网络是指输入当前agent在环境中状态,输出为在这个状态下采取不同策略的奖励...

2021-12-11 21:37:44 1933

原创 Bag of Freebies for Training Object Detection Neural Networks(目标检测tircks)论文简述

1. 概述 现在比较流行的目标检测的框架,比如yolo,rcnn,ssd等,不同的模型通常采用不同的数据预处理和训练方法,这使得不同的目标检测方法很难相互受益或在其他领域取得相关进展。 所以,本文提出了一些可以适用于一般模型的tricks,并且不会改变网络结构,损失函数,也不会增加前向推理时间。比如mixup,learning rate scheduling,label smoothing,synchronized BatchNorm 等等2.1 mixup...

2021-11-28 13:17:45 321

原创 初入神经网络剪枝量化4(大白话)

二. 量化简单介绍目前比较SOTA的量化方法,也是最近看的。2.1 DSQ Differentiable Soft Quantization:Bridging Full-Precision and Low-Bit Neural Networks本文的创新点主要在于引入了可微软量化的方法,来模拟近似量化过程。通俗来说也就是,传统的量化方法都是利用round来取整,这就导致了量化的不可微。我们一般的处理方法都是使用STE(Straight Through Es...

2021-11-16 17:28:21 1387

原创 初入神经网络剪枝量化3(大白话)

剪枝1.1MetaPruning: Meta Learning for Automatic Neural Network Channel Pruning 该论文提出了一种使用元学习(meta learning)来实现深度神经网络剪枝的策略。 什么是元学习? 一句话来说,机器学习是让机器学习,元学习是让机器学会如何学习。 听起来很厉害,实际上我个人认为意义不是特别大,因为元学习通过学习超参数来实现所谓的机器学会了如何学习,但是元学习...

2021-11-14 23:58:17 2730

原创 HRformer论文简述

首先,VIT是将图像划分为16*16size的patches,这样的问题是什么,会失去图像的细粒度信息,意思是本来是224*224,现在变成14*14,图像的分辨率是大大降低的,所以这就会导致在密集检测中会存在加大误差。同时,transformer的输入输出的维度是相同的,这就失去了图像的多尺度特征。故本文提出了一种,可以适用于密集检测的框架。 原理,采用了与HRNet相同的多分辨率并行的一种方法,结合transformer与HRNet的优势。即利用...

2021-11-12 15:45:06 3491

原创 逐步理解Swin-Transformer源码

逐步解释Swin-Transformer源码这一行没什么好说的,就是设置参数值,并读取yaml里的模型参数。是否采用混合精度训练,混合精度训练可以给合适的参数设置合适的位数,而不是全部为float32分布式训练。这一段就是什么梯度累加,学习率缩放等一些优化策略。跳到main函数中数据预处理,logger写日志的模块,暂时不用管。跳到构建模型中,详细讲解这一部分。再跳到SwinTransformer中,再看模型的构建代码时,先整体看一下整体一个架构

2021-11-08 22:03:51 1663 3

原创 Embedding

对于一句话, “我, 很, 帅”, 编码,如果用 one-hot编码,会产生一个稀疏矩阵,并且随着句子规模的扩大,会造成很大的空间资源浪费。同时,“帅” 和“酷”是一对同义词,他们是存在着某种相关性的,而One-hot编码不能体现出两者的相关,故Embedding横空出世 Embedding原理也很简单,就是对one-hot进行降维,也就是密集矩阵到稀疏矩阵的转化...

2021-10-29 21:31:50 108

原创 初入神经网络剪枝量化2(大白话)

一Filter Pruning via Geometric Median for Deep Convolutional Networks Acceleration论文链接:https://arxiv.org/pdf/1811.00250.pdf 这篇论文,首先就是说现在一些基于权重的剪枝,基于通道的剪枝的一些算法,简单介绍。 之后,提出了现在广泛使用的基于范式准则的剪枝方法的先决条件:(个人认为非常准确) 1. 范式的标准差...

2021-10-26 19:13:31 740

原创 YOLOv3用到的tricks介绍

1. yolov3的backbone为darknet53,整个网络中是没有用到池化层和全连接层2.Rectangular inference(矩形推理)/ training(矩形训练) 矩形推理就是为了加快网络训练与推理速度速度,因为yolov3在训练的时候会对我们输入的图像数据进行预处理,将图像缩放到416*416,再送到网络中进行训练。这样的话会产生很多无用的信息。正常预处理 如图,我们看到,我们添加了很多对我们训练的干扰信息,存在很多信息的冗余,所以如...

2021-10-24 15:26:19 450

原创 Precision(准确率)和Recall(召回率)介绍

为什么我们需要Precision(准确率)和Recall(召回率)? 首先我们仅仅只看loss的话,会出现什么问题。 举个例子:比如对于一个二分类的模型,我们通过训练得到最终loss仅为5%,也就是准确率达到了95%,这很明显我们认为这是一个比较优秀的模型。但是,如果我们的训练数据,仅有3%的数据对应标签为0,也就是负样本,其余均为正样本,对应标签为1. 这样会发生什么?如果我们的网络只能输出1,无论输入是什么,都只能输出1,这...

2021-10-20 12:17:35 45677 1

原创 YOLOv5 参数介绍

train.py--weigths: 指的是训练好的网络模型,用来初始化网络权重--cfg:指的是网络结构--data:训练数据路径--hyp: 训练网络的一些超参数设置--epochs:训练迭代次数--batch-size:每次喂给神经网络的图片数目--imgsz:训练图片尺寸--rect: 是否采用矩形训练--resume: 指定你之前训练的网络模型,想继续训练这个模型--nosave: 只保留最终网络模型--noval:是否只在最后一次测试网络模型--n

2021-10-16 16:04:23 12347 7

原创 初入神经网络剪枝量化1(大白话)

一、 概述 现在我们也知道,随着神经网络的高速发展,网络的规模和参数量也成为阻碍神经网络应用的阻碍,因此神经网络应运而生。二、剪枝 剪枝在我的理解就是,神经网络其实存在着很大的冗余,有很多层,通道以及参数都是对网络正确推理结果没有影响或者说影响可以忽略不记的。那这样的层,通道和参数就是没用意义的,只是浪费我们的存储空间以及推理速度。这里我就简单介绍几种我这段时间学习的几种不同的剪枝方法。 剪枝按颗粒度划分可以分为,层剪枝,通道剪枝,向量级剪枝以及稀疏...

2021-10-12 22:03:21 1355

空空如也

空空如也

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

TA关注的人

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