自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 资源 (5)
  • 收藏
  • 关注

原创 DeepSort之源码解读

文章有点长…代码地址:https://github.com/ZQPei/deep_sort_pytorchtraker是一个类,负责对多个track的进行操作,包括预测和更新。self.tracker.predict()self.tracker.update(detections)tracker预测阶段是对每个track进行预测,包括卡尔曼预测track年龄 age+1time_since_update+1,此变量用于记录track上次更新的时间代码如下: def predict(

2022-04-04 21:25:09 4269 9

原创 YOLOv4之网络结构剖析

1.yolov4的网络结构yolov4的网络结构包括backboneCSPDarknet53NeckSPPPANetDence Predictionyolo head整个网络结构如下图1所示:图1 yolov4结构1.1 BackBone1.1.1 CSP模块CSP在论文《CSP:A New Backbone that can Enhance Learning Capability of CNN 》提出,把CSP(Cross Stage Partial)应用

2022-03-15 22:25:23 7627 2

原创 理解地址空间和逻辑地址生成

1.1 地址空间物理地址:硬件(例如内存条)所支持地址空间,地址空间的管理由硬件完成。逻辑地址(虚拟地址):运行地址所看到的地址空间,地址空间是一维的,应用程序更加容易访问和管理。1.2 逻辑地址生成​ 图1逻辑地址生成如图1所示,.c程序经过编译得到.s文件,再经过汇编得到.o文件,此时变量名和函数名都会转换成从0开始的连续地址空间,然后再经过链接把多个.o文件生成.exe文件,此时因为链接了其他函数库,所以地址会产生偏移,从图中可以看到程序地址从0-75变成了

2021-10-23 10:30:35 1987

原创 如何通俗地理解存储器层次结构?

举个通俗的场景。大学生(CPU)写毕业论文时候,通常会到图书馆(内存)查找相关资料(读取数据),但是没人会那么傻每次写论文都去图书馆吧,跑来跑去,多费劲,要想又快又方便地写论文,我们可以到图书馆借几本相关书籍放到宿舍书架中(缓存),然后就可以舒服地在宿舍写论文了。如果学校图书馆都没有想看的书籍,那只能到市图书馆(本地磁盘)找了。为什么借了几本书之后就可以舒服地在宿舍撸论文了?(缓存为何work?)写论文时候,短时间内会经常翻阅同一本书吧,这就是利用时间局部性。写论文时候,借回来的几本书籍(附近的几

2021-10-10 18:33:08 191

原创 局部性原理

1.1 什么是程序局部性?良好的计算机程序通常有良好的局部性,局部性主要有:时间局部性 :指的是同一个内存位置,从时间维度来看,它能够在较短时间内被多次引用。空间局部性 :指的是同一个内存位置,从空间维度来看,它附近的内存位置能够被引用 。1.2 数据引用局部性请看下面程序:#例1int sumvec(int v[N]){ int i,sum=0; for(i=0;i<N;i++) { sum+=v[i]; }}对于例1的程序,是否有良好的局部性?要回答这个问题

2021-10-09 20:28:32 500

原创 FaceBoxes: 高精度的CPU实时人脸检测器

论文题目:《FaceBoxes: A CPU Real-time Face Detector with High Accuracy》论文链接:https://arxiv.org/pdf/1708.05234.pdf年份:2017论文作者:Shifeng Zhang等人作者单位:中国科学院自动化研究所等1. 论文要解决什么问题?要保持高精度,还要在CPU上达到实时?还真有点难,但是Shifeng Zhang等人针对这个问题,提出了人脸检测模型FaceBoxes,表现SOTA。2. FaceBox

2020-11-22 09:24:48 226

原创 神经网络可视化:Grad-CAM

论文题目:《Grad-CAM:Visual Explanations from Deep Networks via Gradient-based Localization》作者单位:Georgia Institute of Technology,Facebook AI Research年份:2017公众号: CVpython 同步发布导语:前段时间,用Grad-CAM来对神经网络的输出进行可视化,当时做的是一个多便签分类任务,但是可视化出来的结果感觉都点怪怪的,总感觉哪里不对。这次论文的总结让我对G

2020-11-15 18:20:25 2657

原创 基于注意力的多行人属性识别的深度学习模型

论文题目《An Attention-Based Deep Learning Model for Multiple Pedestrian Attributes Recognition 》链接:https://arxiv.org/abs/2004.01110 作者单位:清华大学年份:20201. 论文主要解决什么问题?行人属性预测是一个多任务学习问题。为了共享特征表达,传统的多任务学习方法通常学习特征或者特征子空间的线性组合。但是这种组合排除了通道之间的复杂的相互依赖性。更何况,空间信息交换也很少被考

2020-11-14 17:44:32 731

原创 Pytorch入坑之Tensor大详解

导语深度学习框架Pytorch发展势头惊人,这点小编也深有体会,翻翻Github上深度学习的开源代码,发现用Pytorch真的多了不少,所以小编最近也正在入坑Pytorch,顺便写写文章做些总结。认真看完这篇文章,你将收获:理解Tensor的创建理解Tensor的加速理解Tensor的常用属性理解Tensor的常用方法Tensor创建我们应该都知道Numpy是支持大量维度数组与矩阵运算的常用扩展库。但是对于计算图,深度学习或者梯度,Numpy似乎真的有心无力,因为它的计算无法像Tensor

2020-05-22 16:48:55 609

原创 跟你深入剖析可迭代对象和迭代器的区别和联系

导语可迭代对象和迭代器是经常碰到但又很容易混淆的两个概念,所以今天小编跟大家深入剖析一下可迭代对象和迭代器的区别。认真看完本文,你将收获:理解什么是可迭代对象理解检查可迭代对象的方法理解什么是迭代器可迭代对象和迭代器的关系事不宜迟,我们马上开始吧!可迭代对象要理解可迭代对象,那首先要搞清楚迭代的概念。关于迭代,维基百科是这样子定义的:迭代是重复反馈过程的活动,其目的通常是为了接近并到达所需的目标或结果。每一次对过程的重复被称为一次“迭代”,而每一次迭代得到的结果会被用来作为下一次迭代

2020-05-12 11:12:36 491

原创 特殊的分派机制和重载向量加法运算符

导语小编一直都觉自己公众号的排版很鸡肋,从这篇文章开始将使用了新的排版风格,还特意地做了一个卡通二维码(见文末),希望大家会喜欢(不要脸地假装有很多粉丝)。其实关于排版,小编要真心感谢一下景禹大佬的指导。好了,今天想跟大家谈谈如何重载运算符+,认真看完这篇文章,你将收获:了解中缀运算符特殊方法的分派机制了解向量类如何实现 __ add __ 方法了解向量类如何实现 __ rad...

2020-05-07 22:36:55 149

原创 若用多重继承,请考虑mix-in混合类

为什么要用mix-in混合类Python是面向对象的编程语言,它提供了一些内置的编程机制,使得开发者可以适当地实现多重继承,即一个子类可以继承多个父类,但是多重继承的设计经常被人诟病,因为它违背了“is-a”的关系。但是也存在需要多重继承的情况。例如,轿车是一个交通工具,所以轿车类应该继承交通工具这个父类。那民航飞机呢?它也属于交通工具的一种,所以也应该继承交通工具这个父类,但是交通工具这个类...

2020-05-04 10:40:17 237

原创 Python动态语言之魅力大揭秘

之前的文章跟大家讲解了鸭子类型,其实鸭子类型是编程语言中动态类型语言中的一种设计风格。今天跟大家一起谈谈动态语言的魅力。根据维基百科,动态编程语言是这样子定义的:动态编程语言是高级编程语言的一个类别,在计算机科学领域已被广泛应用。它是一类在运行时可以改变其结构的语言:例如新的函数、对象、甚至代码可以被引进,已有的函数可以被删除或是其他结构上的变化。动态语言是一门在运行时可以改变其结构的语...

2020-04-30 11:01:54 209

原创 帮你举例说明什么是Python鸭子类型

学习python的时候,也知道鸭子类型(ducking typing)这个说法,“当你看到一只鸟走起来像鸭子,游泳起来鸭子,叫起来也像鸭子,那么这只鸟就被称为鸭子类型”,字面上理解了,但是在Python中是如何体验的?这一点还真不太懂。今天在看书,又再次碰到这个玩意,于是决定把这个鸭子类型给整明白。按照书上的解释,鸭子类型是多态一种形式,这这种形式中,不管对象属于哪个类,也不管声明的具体接口是什...

2020-04-27 11:15:26 455

原创 图解Python浅复制和深复制的

浅复制和深复制的区别在于,浅复制只复制引用到新的列表中(引用可以理解为地址),不会创建新对象。而深复制创建新的对象,并把对象保存在新的地址中。浅复制和深复制对可变和不可变序列的影响是不一样的。对可变序列的浅复制会带来意想不到的结果。看示例1示例1>>>a = [[1],2,3,4]>>>b = list(a)>>>a[0].append...

2020-04-21 10:05:37 649

原创 记录一个关于变量作用域的神奇例子

程序中的变量并不是说访问就能访问的,每个变量都有使用范围,也就是变量都有自己的作用域。看示例1示例1b = 3def f1(a): print(a,b)if __name__ == "__main__": f1(3) #输出结果: 3 3虽然函数f1中并没有定义b,但是可以使用全部变量b,再看示例2,可能会让你跌眼镜示例2b = 3def f1(a): p...

2020-04-20 10:39:14 129

原创 python函数传参方法超级大汇总

位置参数位置参数传递是最为简单的传递方式,按照函数参数的位置顺序逐个匹配传入,传入参数的个数必须与函数参数个数一致。见示例1,根据位置顺序进行匹配,a,b,c分别赋值为2,3,4#示例1def func(a,b,c): print("args:",a,b,c) if __name__ == "__main__": func(2,3,4) #输出结果 args: 2...

2020-04-17 21:25:46 253

原创 捋一捋字符串和字节序列的关系

Python3的一个新特性算是把文本和二进制数据清晰地区分开来了。我们看到的文本其实就是一连串的Unicode字符组成的str(下文文无特殊说明均指Unicode字符),最后计算机以二进制数据的形式存储起来。Python内置了两种二进制数据类型,分别是bytes和bytearray。每一个字符都有一个对应的标识,即码位,是0-1 114 111的数字(十进制),在Unicode标准中以4-6个十...

2020-04-15 21:48:44 1116

原创 对序列使用*操作,可要格外小心了

如果你对序列使用*操作符,要多加小心了。因为…,好吧,先看下面的代码…a1=[[1,2,3]]b1=a1*2b1[0][0]=0print(b1)#[[0, 2, 3], [0, 2, 3]]首先你想对a1的第一个元素进行了复制,然后你希望对a[0][0]进行修改,但是你发现了吗?你不但修改了a[0][0],还顺手修改了a[1][0],这也许是你不想要的结果!为什么会导致这种情况?...

2020-04-09 20:58:56 154

原创 可变序列有哪些坑?

先说点概念在解释可变/不可变序列之前,先要知道什么是序列?序列就一个个元素有序地排列在一起,像小朋友”排排坐,吃果果“一样。可变序列就是创建一个序列后,可以改变元素,可以比如成排好队小朋友之间位置可以换,可以插队等。可变序列包括列表和字典,集合。不可变序列就是序列一旦创建后,就不可以修改了,可以比如成排好队地小朋友都十分地”拽“,不让人插队,不给换位置等操作。不可变序列包括元组,数值,字符串...

2020-04-09 10:58:13 245 1

原创 python的map()和filter()函数

map()函数map()函数,顾名思义,用于映射,把一个序列的每一个元素映射到函数中,然后返回一个迭代对象。例如:def square(x): return x**2 print(list(map(square,[1,2,3]))) #[1,4,9] 这里注意要用list作转换当然也可以用匿名函数lambdaprint(list(map(lambda x:x**2,[1,2...

2020-04-07 09:09:09 147

原创 python格式化输出总结

%a = 3.14151617print('The number is %f'%a) #浮点数输出,小数点后保留6位有效数字print('The number is %.3f'%a) #浮点数,小数点后保留3位有效数字print('The number is %.3ef'%a) #指数形式输出,小数点后保留3位有效数字print('The number is %d'%a) #十进制整...

2020-03-29 22:01:57 163

原创 Python如何判断对象为空值?

首先我们要知道None,空列表[],空元组(),空字典{},0都是被程序判断为False,所以要判断对象是否为空,可以用if not x的方法:a={}if not a : print("Empty")else : print("Not Empty"另外,对于list,根据PEP8,不推荐用len(list)==0来判断。欢迎交流~...

2020-03-27 20:40:39 6102

原创 python中is和==的区别一定要搞清楚

is 是用于判断两个变量的引用对象是否相同,也就是说a is b等价于id(a)==id(b),引用对象相同,地址是相同的例如a=1b=1print(a is b)#Truea=1.1b=1.1print(a is b)#Truea=[1]b=[1]print(a is b)#Falsepython 为了性能考虑,对于值相同的不可变对象,都不会重新创建新的地址来存储对象,而...

2020-03-27 11:10:03 443

原创 理解python的with语句和上下文管理器

why with?先看这样子的程序myfile = open(r'C:\misc\data')try: for line in myfile: print(line) #...more code...finally: myfile.close()程序尝试打印myfile的每行数据,最后关闭myfile文件当然我们也有更加简单的写法,wi...

2020-03-25 21:55:47 94

原创 python如何分析程序性能

when use Profiler?有时候你觉得程序运行很慢,想对程序进行优化,但是你又不知道哪部分程序入手,这时候你就需要对程序整体性能进行分析,看看速度慢主要是哪部分程序导致的why use cProfile?cProfile,一个python程序性能分析模块。其实Python有两个profiler,Profile和cProfile,前者是纯Python写的,会产生比较大的开销,测试结果...

2020-03-24 10:48:49 409

原创 理解python中__init__.py和__all__

__ init __.pywhat is init.py?通常在一个工程文件里面,我可能会发现在某个文件夹下面会有一个命名为__init__.py的py文件why need init.py?在一个工程文件下面,我们可能会有很多的py文件(模块),文件太多,管理很不方便,这时候我们就可以创建一个包(package)对这些文件进行管理,把具有共同特征的文件放在同一个package里面,那该如何...

2020-03-15 15:16:29 1335 1

原创 python抽象基类理解

(what)什么是抽象基类?抽象基类它提供了接口,但是又没有去把接口实现的类,需要由子类完成。感觉它就是老板,只告诉你要完成项目A, 你接到项目A后(继承),你自己去把它完成。抽象基类特点:1.继承类必须实现抽象基类的方法2.抽象基类无法实例化(why)为什么要有抽象基类这玩意?1.why 抽象基类?譬如要开发一个项目,你要规定项目开发者要去完成某些接口,这时候抽象基类就帮上忙了,你...

2020-03-12 20:19:02 442

原创 python中private、protected&public

private:1.在类中的属性或者方法前加上两条下划线“__”,该属性或方法就变成了私有的了,只能在类内访问。2.如果想从外部访问私有属性或者方法(不建议访问),有两种方法,一是定义一个函数进行访问,二是对私有的属性或者方法的名字进行转换为:一个下划线“_”+类名+私有属性或者方法的名字。protected:1.在类中的属性或者方法前加上单下划线“_”,该属性或者方法就变成protect...

2020-03-11 21:44:34 1923 1

原创 python多态理解(多态有啥用)

什么是多态?多态顾名思义多种状态,在python中,不同的对象调用同一个接口,表现出不同的状态,称为多态。class Duck(): def who(self): print("I am a duck")class Dog(): def who(self): print("I am a dog")class Cat(): def ...

2020-03-11 11:04:45 2731 12

原创 生成器、迭代器、可迭代对象、迭代协议的区别与联系

迭代器协议:必须实现__next__()方法,要么返回迭代的下一项,要么引起StopIteration异常可迭代对象:实现了__iter__方法的对象,它能将所有可迭代对象转化成迭代器迭代器:不仅实现了__iter()方法,还实现了__next__()方法的对象可迭代对象:列表,字典,元素,字符串等,但可迭代对象并不一定是迭代器生成器:使用了yield的函数就是生成器,它是一个返回迭代器对...

2020-03-05 19:50:32 255

原创 yield函数生成器详解(例子分析)

定义:其实也没啥好说,只要函数中带有yield,那么该函数就是一个生成器了。特性:首先定义yield生成器函数,如下:def yield_func(): print("**") while True: result = yield 1 print("result:", result)运行以下代码:if __name__ == "__mai...

2020-03-03 22:26:21 1284

原创 告诉你python装饰器的来龙去脉

NOTE: python装饰器的作用在于让程序在没有任何代码变动的情况下可以额外添加功能,使得程序更加简洁。有了装饰器,就可以抽离出与函数功能本身无关的雷同代码并继续重用原来python装饰器就是这么回事def say_hello(): print("hello!")def say_goodbye(): print("goodbye!")if __name__ == "...

2020-03-01 22:16:33 177

原创 ubuntu18.04安装cuda-10.0和cudnn-7.4.2

安装cuda-10.01. Ubuntu18.04默认gcc/g++ 7.3版本,但是cuda 9并不支持gcc/g++7,所以先降级至6或6以下2.安装cuda依赖sudo apt-get install freeglut3 freeglut3-dev libxi-dev libxmu-dev3.在官网下载cuda“run”file下载cuda10.04.cd到cuda10.0文件...

2020-01-02 19:54:01 1020

原创 ValueError: Variable xx weights already exists, disallowed. Did you mean to set reuse=True or reuse.

tf程序抛出以下错误:ValueError: Variable InceptionV3/Conv2d_1a_3x3/weights already exists, disallowed. Did you mean to set reuse=True or reuse=tf.AUTO_REUSE in VarScope?先上结论:当我们的graph中已经存在变量A,然后尝试通过get_Vari...

2019-12-16 11:10:05 717

原创 在Linux上如何安装on-my-Zsh命令解释器?

比较常用的命令解释器主要有Sh,Bash,Zsh, Csh, Ash, Fish。而在Linux上默认的命令解释器是Bash。相比于Bash,有一款更好的Shell, 就是Zsh, 因为它的自定义选项,因为它的补全功能,尽管Zsh的启动稍微慢于Bash。1.Zsh 与on-my-ZshZsh 配置比较麻烦,有人在 GitHub 上制作了一个配置文件 oh-my-zsh,这是目前为止最流行的 ...

2019-11-23 22:15:11 443

原创 论文解读《Boosting Adversarial Attacks with Momentum》

摘要我们提出了一种广泛的基于动量的迭代算法来增强对抗攻击。通过将动量项集成到迭代过程中,我们的方法可以在迭代过程中稳定更新方向并避免糟糕的局部最大值1.FGSM我们先来了解一下迭代的FGSM算法,它通过以下公式来产生扰动x∗x_*x∗​x∗=x+ϵ∗sign(∇xJ(x∗,y)),(1)x_*=x+{\epsilon}*sign({\nabla}_xJ(x_*,y)),(1)x∗​=x...

2019-11-15 16:33:38 2226

原创 图像分类的十二种攻击方法

最近想参加天池一个安全AI的比赛,所以研究一下对抗攻击的内容,求组队呜呜呜。。以下的总结来参考论文《Threat of Adversarial Attacks on Deep Learning in Computer Vision: A Survey》这是我看的第一篇对抗攻击类的文章,很多地方没弄懂,先根据论文粗略大概总结一下,不好的地方请指出。1.盒子约束 L-BFGSSzegedy等人...

2019-11-10 10:39:20 3092

原创 计算机如何存储一个数据类型的对象?

先记录几个小知识点在大多数的计算机,最小地址寻址单位是字节,而不是位。机器级别程序把内存看作是一个很大字节数组,称为虚拟内存,所以虚拟内存地址的集合就是虚拟内存空间。对于一个字长位w的机器,它虚拟内存可寻址范围是0-2^w-1,一个32位字长的虚拟地址空间是4GB。计算机如何存储一个对象?比如一个int 对象 0x01234567首先最小的内存单位是一个字节,也就是8位,那一个字节可以...

2019-11-06 21:31:00 425

原创 理解计算机系统,要了解哪些内容?

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Ma...

2019-11-05 15:25:40 338

shearlet.rar

该附件为shearlet变换matlab代码。剪切波是一种多尺度几何分析工具,可以看做是对小波变换的一种改进。小波因其多分辨率特性而成为表情识别的有效算法之一。

2020-03-26

Gabor_Matlab.rar

Gabor变换属于加窗傅立叶变换,Gabor函数可以在频域不同尺度、不同方向上提取相关的特征。该文件为图像处理的gabor变换matlab代码,

2020-03-26

低秩表示 matlab 代码

低秩表示MATLAB代码,自己亲自测试过,是有效可用的呢

2018-07-09

Latent Low-Rank Representation for Subspace Segmentation code

Latent Low-Rank Representation for Subspace Segmentation and Feature Extraction ICCV matlab 论文代码

2018-07-09

matlab画图

matlab画图里面包含二维画图,三维画图等等的介绍

2015-09-14

空空如也

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

TA关注的人

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