自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 NMS及其优化

面试必考 NMSNMSNMS汇总1. NMSNMSNMS代码与实现NonNonNon-MaximumMaximumMaximum-SuppressionSuppressionSuppression(非极大值抑制): 当两个boxboxbox空间位置非常接近,就以scorescorescore更高的那个作为基准,看IOUIOUIOU即重合度如何,如果与其重合度超过阈值,就抑制scorescorescore更小的boxboxbox,只保留scorescorescore大的就BoxBoxBox,其它的BoxB

2021-09-08 15:14:05 1256

原创 初识直方图均衡化

各位大家好,我是灿视,今天是一篇传统图像处理,直方图均衡~直方图均衡化,可以对在不同的光线条件下拍摄不同的图片进行均衡化处理,使得这些图片具有大致相同的光照条件。因此,我们可以用在训练模型之前,对图像进行对预处理。直方图均衡1. 直方图与对比度首先,我们看下面的图像:左列为原图,我们在观看的时候,感受很差。为什么很差呢?因为前景(关键区域)与背景太相似,无法很好的得到前景的信息。这就是表明,这些图像的对比度小,视觉体验很差。其中,对比度是由两个相邻区域的亮度差异产生的。对比度是使一个物体与其

2021-05-21 09:42:03 2327

原创 直方图均衡化(II)

各位大家好,我是灿视,今天是是直方图均衡的第二篇~上一篇文章,我们主要是给大家看了下直方图均衡干了什么事情,并且直接给出了,针对离散型数据的直方图均衡化的公式。今天,我们来看下,这里面的推导过程,为什么它的公式要这么做,以及改进的两类非全局直方图均衡化~。1. 直方图均衡公式推导在上一篇文章,我们了解到均衡化的目的是将原始图像的直方图变为均衡分布的的形式,将一非均匀灰度概率密度分布图像,通过寻求某种灰度变换,变成一幅具有均匀概率密度分布的目的图像。我们开始以直方图均衡化的推导公式入手:假定:rrr

2021-05-21 09:41:47 412

原创 简单阐述一下BP的过程?

1.基本概念BP(Back Propogation)算法是一种最有效的学习方法,主要特点是信号前向传递,而误差后向传播,通过不断调节网络权重值,使得网络的最终输出与期望输出尽可能接近,以达到训练的目的。前向过程中通过与正确标签计算损失,反向传递损失,更新参数,优化至最后的参数。而面试的过程中,我们可以拿出一支笔,给面试官直接说,“老师,我来直接写一个吧,您看看呗?”“你看哈,我这一个两层的神经网络。其中xxx是网络的输入,yyy是网络的输出,www是网络学习到的参数。"“在这里,www的值就是我们

2021-05-13 20:54:41 1148

原创 手写目标检测与语义分割中的IOU

大家好,我是灿视。今天给大家带来两道纯工程的题,是一位博士在面试face++时,被问到的。看文章之前,别忘了关注我们,在我们这里,有你所需要的干货哦!1. 目标检测中的IOU假设,我们有两个框,rec1rec1rec1与rec2rec2rec2,我们要计算其IOUIOUIOU。其中IOUIOUIOU的计算公式为,其交叉面积IntersectionIntersectionIntersection除以其并集UnionUnionUnion。IOUIOUIOU的数学公式为:IoU=Srec1∩Srec

2021-05-13 20:52:58 1498 2

原创 在Backbone不变的情况下,若显存有限,如何增大训练时的batchsize?

大家好,我是灿视。这道题是之前在我之前的那个AttackOnAIer上发过的一题,来自群友在商汤面试的真题,今天重新梳理下,供大家参考。问: 在Backbone不变的情况下,若显存有限,如何增大训练时的batchsize?现在给出一些回答,供各位参考哈~如果各位有别的想法,可以在留言区留言哈!使用Trick,节省显寸使用inplace操作,比如relu激活函数,我们可以使用inplace=True每次循环结束时候,我们可以手动删除loss,但是这样的操作,效果有限。使用float16混合精

2021-05-13 20:49:46 506 1

原创 我再丢dropout!

Stochastic DepthStochasticStochasticStochastic DepthDepthDepth是采取类似于DropoutDropoutDropout的思路,在ResNetResNetResNet块上随机进行对模块的删除,进而提高对模型的泛化能力。如图所示,为StochasticStochasticStochastic DepthDepthDepth的具体做法。用数学化的语言来表示下该过程就是:若网络总共有 LLL 个blockblockblock,我们给每个block

2021-05-13 20:48:11 191

原创 我丢!Drop就完事了!(上)

大家好,我是灿视。今天我们来以Dropout为切入点,汇总下那些各种Drop的操作。本片是上篇,还有续集,欢迎关注我们,追更《百面计算机视觉第三版》哦!Dropout目前来说,DropoutDropoutDropout有两种。第一种就是传统的DropoutDropoutDropout方案。另一种,就是我们的吴恩达老师所讲的InvertedInvertedInverted DropoutDropoutDropout了。这两种方案本质上没什么区别,在实现的过程中是有区别的,接下来我们会详细进行比较。这

2021-05-13 20:41:57 149

原创 最全Normalization汇总!!!

1. 对数据部分做归一化主要且常用的归一化操作有BN,LN,IN,GN,示意图如图所示。图中的蓝色部分,表示需要归一化的部分。其中两维CCC和NNN分别表示channelchannelchannel和batchbatchbatch sizesizesize,第三维表示HHH,WWW,可以理解为该维度大小是H∗WH*WH∗W,也就是拉长成一维,这样总体就可以用三维图形来表示。可以看出BNBNBN的计算和batchbatchbatch sizesizesize相关(蓝色区域为计算均值和方差的单元),而

2021-05-13 20:39:30 816

原创 信息融合之Add与Concat,你了解它们吗?

信息融合举例特征融合目前有两种常用的方式,一种是addaddadd操作,这种操作广泛运用于ResNetResNetResNet与FPNFPNFPN中。一种是ConcatConcatConcat操作,这种操作最广泛的运用就是UNetUNetUNet,DenseNetDenseNetDenseNet等网络中。如下图所示:也有如HRNetHRNetHRNet这样的,多分辨率之间使用addaddadd形式的特征融合。代码演示>>> import torch>>>

2021-05-13 20:21:06 1847

原创 一文带你梳理常见的激活函数

一文梳理常见的激活函数1. 为什么要有激活函数若网络中不用激活函数,那么每一层的输出都是输入的线性组合。无论神经网络有多少层,网络的输出都是输入的线性组合,这种网络就是原始的感知机(PerceptronPerceptronPerceptron)。若网络没有激活函数,则每层就相当于矩阵相乘,深层神经网络,无非是多矩阵相乘。激活函数给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中。网络使用非线性激活函数后,可以增加神经网络模型的非线性因素,网络可

2021-05-10 12:50:31 630

原创 指标问题汇总!

关于指标问题汇总!一. 机器学习分类指标汇总(含代码实现roc与auc)常用指标首先需要建立一个表,对于一个分类任务,我们预测情况大致如下面混淆矩阵所示:预测为正样本预测为负样本标签为正样本TPFN标签为负样本FPTN1. accuracy accuracy =TP+TNTP+TN+FP+FN\text { accuracy }=\frac{T P+T N}{T P+T N+F P+F N}  accuracy =T

2021-05-10 12:44:51 600

原创 颜色空间变换你使用过吗?你知道常用的颜色空间有哪些吗?

你在训模型的时候,有使用过颜色空间变换嘛?你知道常用的颜色空间有哪些呢?1.使用颜色空间进行空间变换的项目在我所做的一些项目中,目前使用颜色空间变换的比较少,目前就是看pix2pix-tensorflow中使用过,直接上图:项目中使用了Lab空间变换来学习A->B图像的映射。在测试的时候,同样是使用了Lab变换,将生成的图来进行前向预测,再将输出结果转换成RGB图像。当然,后面要是看到了其它项目使用到的话,我这边再进行补充!2. 相关颜色空间2. 1. RGBRGB 是我们接触最多的颜

2021-05-10 12:25:11 914

原创 sigmoid与softmax的区别与联系

Softmax与Sigmoid有哪些区别与联系?1. Sigmoid函数SigmoidSigmoidSigmoid函数也叫LogisticLogisticLogistic函数,将输入值压缩到(0,1)(0,1)(0,1)区间之中,其函数表达式为:Sigmoid(x)=11+e−xSigmoid(x) =\frac{1}{1+e^{-x}}Sigmoid(x)=1+e−x1​函数图像如图所示:其求导之后的表达式为:Sigmoid⁡′(x)=Sigmoid⁡(x)⋅(1−Sigmoid⁡(x)

2021-05-10 12:18:05 1177

原创 Resnet网络及其变种

具体阐述一下ResNet网络的细节,你知道的ResNet网络的相关变种有哪些?1. ResNet解决了什么问题?首先在了解ResNet之前,我们需要知道目前CNN训练存在两大问题:梯度消失与梯度爆炸:因为很深的网络,选择了不合适的激活函数,在很深的网络中进行梯度反传,梯度在链式法则中就会变成0或者无穷大,导致系统不能收敛。然而梯度弥散/爆炸在很大程度上被合适的激活函数(ReLU)、流弊的网络初始化(Kaiming初始化、BN等Tricks)处理了。梯度弥散:当深度开始增加的时候, accuracy

2021-05-10 12:07:29 853

原创 DenseNet原理及代码

大家好,我是灿视。介绍下DenseNet1. 介绍在以往的网络都是从要么深(比如ResNet,解决了网络深时候的梯度消失问题)要么宽(比如GoogleNet的Inception)的网络,而作者则是从feature入手,通过对feature的极致利用达到更好的效果和更少的参数。DenseNet网络有以下优点:由于密集连接方式,DenseNet提升了梯度的反向传播,使得网络更容易训练。参数更小且计算更高效,这有点违反直觉,由于DenseNet是通过concat特征来实现短路连接,实现了特征重用,并

2021-05-10 10:55:34 1095

原创 一文带你深入浅出CV中的Attention机制

大家好,我是灿视。在深度学习领域中,存在很多专业名词,第一次看的时候总会很懵逼~后面慢慢看得时候才会有那么感觉,但是总觉得差点意思。今天我们要说的一个专业名词,就叫做Attention机制!1. 直观理解Attention想象一个场景,你在开车(真开车!握方向盘的那种!非彼开车!),这时候下雨了,如下图。那你想要看清楚马路,你需要怎么办呢?dei!很聪明,打开雨刮器就好!那我们可以把这个雨刮器刮雨的动作,就是寻找Attention区域的过程!嗯!掌声鼓励下自己,你已经理解了Attention机

2021-05-10 10:41:50 543

原创 【AICAMP —— Python】入门系列!(3. Python函数编程)

Python函数编程1. 介绍Python与其它编程语言一样,可以直接调用我们写好的函数,或者已经实现的函数。如我们可以使用系统自带的函数,求一个数的绝对值,使用abs函数,对其传入参数,得到输出。>>> abs(-100)100>>> abs(100)100对于函数而言,传入的参数也是有限制的,如果传入的参数不对,那么就会输出错误信息。如下:>>> abs(-1, 100)Traceback (most re...

2021-04-08 13:29:24 154

原创 【AICAMP —— Python】入门系列!(2. Python基本语法)

Python基本语法在介绍Python的语法之前,我们需要了解下计算机中的两种模式:1. 交互模式在macos与ubuntu等系统中,我们通过使用terminal输入python进入python的交互模式。在windows下面,我们是通过 cmd进入到交互模式,长得很像下面这个这样。Python 3.7.0 (default, Jun 28 2018, 08:04:48) [MSC v.1912 64 bit (AMD64)] :: Anaconda, Inc. on win32Ty..

2021-04-08 13:28:21 207

原创 AICAMP —— Python】入门系列!(1.Python简介与环境配置)

Python介绍1. Python简介相信你听过很多关于python的介绍,不论是朋友圈里或者各大广告都会说Python很好,python很强!确实如此。Python是一种解释型、面向对象、动态数据类型的高级程序设计语言 (先不用纠结什么是解释型,什么是面向对象,知道有种语言叫python就行了,后面会讲的)。由 Guido van Rossum (下图最右边一个,看这茂密的头发,你还要盘C++?)于 1989 年底发明,第一个公开发行版发行于 1991 年。像 Perl 语言一样, Pytho

2021-04-08 13:26:50 516

原创 python_opencv使用鼠标获取图片的某一点坐标

目前的图像工作,需要获取某点的图像坐标,用来制作掩膜等,所以参考了一些代码。https://blog.csdn.net/huzhenwei/article/details/82900715为了防止忘记。# coding: utf-8import cv2img = cv2.imread("C:\\Users\\v_chenziqiang\\Desktop\\mixed1.jpg")...

2019-01-08 20:02:15 15790 5

原创 cs231n的svm以及softmax的梯度求解

cs231n-assignment1-SVM/Softmax/two-layer-nets梯度求解SVM梯度求导 SVM的梯度求导要考虑两种情况,j==yi 和 j!=yi,此处 j表示误分类项,yi表示正确分类的项。比如,输入猫的图片,共有三个进行预测的类别:狗、猫和车。在进行预测的时候“猫”这一项就是ground true正确分类的项,其余两项“狗”和“车”就是误分类的项。可以根据course...

2018-06-17 15:04:46 1055

转载 FCN:Semantic Segmentation(语义分割模型)

感谢知乎上的大佬总结的,我总结的话肯定没有这么好,就转过来,看看,附上作者链接点击打开链接全卷积网络首现于这篇文章。这篇文章是将CNN结构应用到图像语义分割领域并取得突出结果的开山之作,因而拿到了CVPR 2015年的best paper honorable mention.图像语义分割,简而言之就是对一张图片上的所有像素点进行分类如上图就是一个语义分割的例子,不同的颜色代表不同的类别下面简单介绍...

2018-03-23 18:09:45 5102

转载 cs231n_training neural network partII

转载自知乎:点击打开链接本笔记中的所有取自课件的多媒体版权属于斯坦福大学。训练神经网络的核心是一个优化问题,给定损失函数并定义网络权值,损失函数告诉我们这些权值在解决对应问题时的表现是好还是坏。假设在当前权值下,损失函数给出了等高线图,这里是一个二维的问题,X和Y轴表示两个权值,图上的颜色表示损失值,在这个问题中只优化 两个参数,目标是要找到红色最深的区域,这对应了损失值最小值的权值。之前已经使...

2018-03-17 14:00:26 312

原创 cs231n_激活函数

首先讲述的是激活函数的内容。在上一个lecture中,我们看到了任意特定层是如何生成输出的,输入数据在全连接层或者卷积层,将输入乘以权重值,之后将结果放入一个激活函数(非线性单元)。下面是一些激活函数的例子,有在之前使用过的sigmoid函数,之前提及到的ReLU函数。这里会提及更多的激活函数,并在它们之间进行权衡。先是之前见过的sigmoid函数,这个函数的表达式是 。每一个元素输入到sigm...

2018-03-12 23:16:44 2623 1

转载 cs231n学习笔记-激活函数-BN-参数优化

1. 机器学习流程简介    1)一次性设置(One time setup)          - 激活函数(Activation functions)          - 数据预处理(Data Preprocessing)          - 权重初始化(Weight Initialization)          - 正则化(Regularization:避免过拟合的一种技术)     ...

2018-03-12 23:08:33 284

原创 cs231n_卷积神经网络_卷积_池化_全连接

讨论一下神经网络中非常有名的卷积神经网络,如下图,之前我们构建的都是两层的神经网络,我们有一个线性层,然后一个非线性的运算,再添加一个线性运算,得到我们的结果,我们还发现这有助于我们解决一些模式问题,我们通过学习任务所需的中间模板,比如我们要识别一辆车,我们会提取红色的车,黄色的车,等等,然后把这些中间特征组合起来,得到某一类别的最终的评分函数,这是一些传统的神经网络。今天我们说下卷积神经网络,它...

2018-03-11 17:03:23 317

原创 cs231n_neural network

    接下来我们讨论下神经网络,我们直接以两层的神经网络为栗子,首先我们有一个线性层,我们将线性层的最大值作为输出,将这个输出作为输入。这些非线性计算非常重要,如果我们只是在顶层将线性层合在一起,那么就会简化为一个线性函数。所以我们首先有线性层,然后又这个非线性计算,继而在顶层中再加入另一个线性层,然后再这里,最后我们得到一个计分函数,输入计分向量,一般来说,神经网络就是,由简单函数构成的一组函...

2018-03-09 23:24:45 255

原创 cs231n_backpropagation

    上次我们讲到了loss function,当我们有了loss function之后,就是我们优化这个loss function来得到最终对应得最小损失的W的过程,这个过程,我们就是把它叫做backpopagation,反向传播。我们接着以上面svm loss为栗子,为了找到这个loss 的最小值所对应得W,我们首先需要找到L在W方向上梯度。就跟上一节我们谈到的下山一样,我们找到最抖的方向,...

2018-03-08 21:34:14 147

原创 cs231n_ optimizer

     从上一张的loss function过渡都这一张的optimizer,我们深度学习的训练过程其实就是一个优化的过程,优化的过程我觉得就想是一个盲人下山的问题,盲人想通过最快的速度到达山底,就相当于我们找函数最小值,山底代表我们的loss function的最小值,盲人采用的小碎步往下走,可是他该往哪个方向走最快呢?是的,他可以凭借他身体的感受,在他的周围,用脚去感受,哪个方向最抖,即斜率...

2018-03-07 17:42:32 194

原创 day4_cs231n _ 损失函数与优化器

    今天我们要讨论损失函数(loss function)与优化器(optimizer),上周我们说到了线性分类器,我们将图片当成一个矩阵放入计算机中,其次我们寻找一个权值矩阵W,这个W我们可以当做是每一行像素的得分来理解,然后根据这个W与我们的数据矩阵进行点积,最终算出一个得分,其实在于深度学习中,我们所要做的工作就是寻找这么权值矩阵。对于任意一个W矩阵,我们都会得到一个得分,就如下图中。我们...

2018-03-06 23:08:16 1598

原创 day3 Linear Classification

   接下来我们讨论线性分类,线性分类非常重要,同时他也是一个非常简单的算法,有助于我们建立起整个神经网络和整个卷积网络。我们整个神经网络就像是玩积木,从一个个积木拼成一个大的积木,每个小积木就是一个线性分类器,这些分类器最终泛化到整个神经网络,帮助我们理解整个神经网络。接下来我们还是要继续谈到cifar-10这个数据集,其中cifar-10有5万个训练样例,每个图片大小是32*32,三通道的图像...

2018-03-05 08:29:13 148

原创 day2_(cs231n) KNN

接下来,我们讨论knn来做图像分类,下面的图中,左边是我们要predict的图像,右边是我们predict出的图像,如果右边有我们正确的分类,则表示我们分类正确,(ps:在很多计算机视觉一些算法的文章中,我们都会看到top5正确率的概念,其中指的就是,我们预测出来的类别中,取前5名,如果这预测出来的5类中,有一类是正确的类别,表示我们预测正确,然后把正确预测的,除以总数,得到我们的top5 acc...

2018-03-04 23:02:10 141

原创 day2 图像分类数据驱动方法

                                               day2 图像分类驱动方法关于图像分类(这是一个计算机视觉中一个非常重要的任务),当我们做图像分类的时候,我们的分类系统接收到一些输入图像,比如说可爱的猫咪,我们的系统是明确知道其中这些图像的分类,或者说是分类的集合,这些标签可能是一只狗狗,一只猫咪,也有可能是一辆卡车。。。。那计算机的工作就是看图片,并...

2018-03-04 21:55:08 183

原创 图像锐化边缘检测

图像锐化和边缘检测本文内容构成:       1、图像锐化和边缘检测的基本概念,微分梯度已经差分的定义       2、锐化和边缘检测的像素处理方式(3种)       3、单方向一阶微分锐化,包括:             水平方向             垂直方向             Kirsch算子        4、无方向微分锐化,包括:   

2018-01-22 18:38:06 664

原创 c++实现大位数乘法

#include #include #include int main(void){    char a[1000];    char b[1000];    scanf("%s", a);    scanf("%s", b);    mpz_t x;    mpz_t y;    mpz_t result;    mpz_init(x)

2017-08-21 10:21:44 881

原创 c代码实现大位数减法

#include#includeint main(){char a[10000],b[10000];int x[10000],y[10000],z[10000];int i,k,l;//a 数组用来存放被减数,b数组用来存放减数scanf("%s",a);scanf("%s",b);//k指的是a数组的长度//l指的是b数组的长度k=strlen

2017-08-21 09:29:39 358

原创 c代码实现的大位数的加法

#include #include int main(){char a[10000],b[10000];int m[10000],n[10000],c[10000];int x,y,i,j;printf("请输入两个大整数!");scanf("%s",a);scanf("%s",b);x=strlen(a);y=strlen(b);/

2017-08-20 22:27:53 790

空空如也

空空如也

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

TA关注的人

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