自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(84)
  • 资源 (6)
  • 收藏
  • 关注

原创 对BatchNorm2d的理解

简介网上关于BN处理的说明有很多,它的前身就是白化处理,但是白化处理需要消除特征之间的相关性(使用PCA降维,矩阵分解等),这样比较消耗时间,然后对每一维特征的样本进行归一化,就是将其映射到均值为0,标准差为1的空间上。 BN汲取了白化处理的思想,但是BN的特点是进行批量归一化,比如一个形状为[N,C,H,W]的输入数据,它针对每一维特征进行样本大小为NxHxW的归一化操作,将该维特征的样本空间进行一个标准映射。为了验证我的理解,我做了实验一下实验。准备数据input1: 一维特征,batch=2的t

2021-07-14 21:30:04 629 1

原创 IOU计算,Numpy 和 Torch 版本

简介IOU计算一直是目标检测中最重要的一个环节。虽然iou在数学上定义很简单,但是想大规模计算还是有点复杂,我自己利用numpy和torch库仔细写了一下iou算法,从而加深对iou计算的印象。核心代码Numpy 版本import numpy as npdef get_iou(a_boxs,gt_boxs): ''' Args: a_boxs (N, 4): predicted boxes. gt_boxs (N, 4): ground truth

2021-07-05 17:20:44 1500

原创 性别年龄识别器

最近比较郁闷,自己的小论文已经投了快8个月了,从去年的AAAI,CVPR,到现在在审的TCSVT,AAAI由于页数超限被拒,CVPR因为一个正面和2个负面评价被拒,TCSVT还前途未卜,真的很郁闷。心情不好,论文也不太想看,撸撸代码放松一下心情。写了一个性别判别器玩玩。

2021-05-12 17:12:57 528

原创 Exception has occurred: AttributeError ‘InceptionOutputs‘ object has no attribute ‘log_softmax‘

在使用 inception_v3 训练时报的错,当时使用的是如下代码:. . .optimizer.zero_grad()outs_1 = model(imgs_1)loss = criterion(outs_1,labels)loss.backward()optimizer.step(). . .就这样报错了,因为平时都是这样写的,没太注意。通过调试观察网络输出outs_1,发现有2种值,outs_1结果如下:InceptionOutputs(logits=tensor([[-22.2

2021-05-12 14:29:06 988

原创 Leetcode 47. Permutations II

Given a collection of numbers, nums, that might contain duplicates, return all possible unique permutations in any order.Example 1:Input: nums = [1,1,2]Output:[[1,1,2],[1,2,1],[2,1,1]]大致意思是在全排列的基础上去重,如果先得到所有全排列,再去重,这样的效率是极低的,也是通过不了的。比较好的方法是在全排列的过程中进

2021-01-14 13:05:40 86

原创 Adam 优化器,从AdaGrad,RMSprop,Momentum的思想娓娓道来。

Adam 在批量随机梯度的基础上,充分吸收了RMSprop + Momentum思想,其中RMSprop 是在AdaGrad的基础上改进的,AdaGrad累积历史梯度平方,当历史梯度比较频繁时(即某一维度的梯度呈正或负方向频次比较多),那么更新的步长比较小;当历史梯度比较稀疏时(即某一维度的梯度为0频次比较多),那么更新的步长比较大。AdaGrad公式如下所示:gtg_{t}gt​是批量随机平均梯度,是在SGD基础上加入了批量平均梯度的思想,这里不再赘述。AdaGrad其优点:在数据分布稀疏的场景,

2021-01-12 11:00:24 818

原创 Learning Memory-guided Normality for Anomaly Detection

论文链接:Learning Memory-guided Normality for Anomaly Detection开源代码:https://github.com/cvlab-yonsei/MNAD创新点:提出了不同正常模式的记忆模块,可以有效地记忆正常数据的多样性。在这篇论文中,作者认为CNN特征的表达能力很强,很可能会将正常数据重构成异常数据。在这种情况下,他将正常数据分成若干种模式,在记忆模块里表现为M个记忆单元(其实也就是特征向量)。当通过Encode提取到了CNN特征时,而不是直接进行重构

2020-10-27 15:34:50 1811

原创 python中opencv 与 PIL读图区别,以及与Numpy转换

之前在图片预处理上就遇到过opencv和PIL,很纠结PIL读取的图片不好在opencv上使用,或者是opencv读取的图片不好在PIL上使用,以及它们如何转换为numpy类型。现在有时间,做个小实验总结一下附上代码import numpy as npimport cv2from PIL import Imageimport matplotlib.pyplot as pltimg_cv2 = cv2.imread("jena.jfif")img_PIL = Image.open("jena.j

2020-06-02 23:10:05 1700

原创 Pytorch官方微调Mask-RCNN遇到的坑

官网地址已经成功做好了这个实验,但是不得不吐槽一下官方的说明书,做实验的前提不交代好,尤其是这句话:In references/detection/, we have a number of helper functions to simplify training and evaluating detection models. Here, we will use references/detection/engine.py, references/detection/utils.py and ref

2020-05-27 12:09:29 2774 8

原创 对pytorch中optimizer.zero_grad()理解

刚接触pytorch不久,就遇到这种问题,既然要计算梯度(pytorch用loss.backward()计算各参数的梯度loss.grad),那为什么要先将上个epoch的梯度重置为0再去计算呢?其主要原因是:在torch.autograd中,上个epoch计算Variable中的grad成员也会自动变成Variable,也就是说,Variable变多了,但是这些Variable是不需要的,所以将其重置为0,让它不起作用。这样的话,下一次求的梯度就是之前Variable对应的梯度了。官方解释:We t

2020-05-25 08:39:46 2307

转载 pytorch 卷积 分组卷积 及其深度卷积

转载申明:https://blog.csdn.net/lyl771857509/article/details/84109695先来看看pytorch二维卷积的操作API现在继续讲讲几个卷积是如何操作的。一. 普通卷积torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True)普通卷积时group默认为1 dilation=1(这里先暂时

2020-05-14 15:29:47 954

原创 RPN遇到的坑

RPN的作用在于较为准确的选择前300个推荐框,前2篇论(RCNN,Fast-RCNN)用的是Selective Search方法, 贪婪地合并基于低层次特征的像素,产生2000个推荐框,效率低。本文主要讲解RPN网络层及其损失函数,遇到过的坑和疑惑的地方在这里记录一下,便于今后回顾。涉及到的内容过多,请参考:Faster-RCNN论文地址1、RPN模型要点1:在每个滑动窗口的中心(经过...

2020-05-08 17:24:17 537

原创 Tensorflow2.0实例化 Model 的两种方式

1、在“函数式API”中,从“输入层”开始,当前层的输入层是前一层的输出层,最后用输入层和输出层创建模型:inputs = tf.keras.Input(shape=(28,28,1))x = Conv2D(32,3,activation='relu')(inputs)x = Flatten()(x)x = Dense(128,activation='relu')(x)outputs =...

2020-04-10 12:18:34 3000

原创 成功解决tensorflow2.0在VS-Code代码自动提示功能

目前tensorfow2.0稳定版还不能自动提示,网上说是tensorflow懒惰加载依赖引起的,先不管这些了。使用tensorflow-2.0.0-beta(测试版),其中的API跟稳定版基本一致,应该可以满足大部分需求,如果不行的话,可以将编写的代码放到tensorflow-2.0稳定版本运行,这也是一个不错的选择。不多说了,附上具体解决方法。1、pip install tensorflow...

2020-04-08 10:07:30 2913

原创 最长公共子串和最长公共子序列(仅讨论2个字符串)

最长公共子串必须是连续的,而最长公共子序列可以不连续,只要顺序一致就行。例如 s1=abcdef,s2=acdsse,最长公共子串是cd,最长公共子序列是acde,这里简单点,只讨论最大子串或子序列的长度。1、最长公共子串如果按照普通方法求的话,时间复杂度非常高,这里使用动态规划的思想,就是要找出最优子结构,最优子结构之间的联系,构建递推公式,一步步求好小问题,大问题则迎刃可解。最优子结构是,...

2020-03-19 16:49:50 283

原创 Cmake opencv 和 contrib遇到的问题

简述:最近需要用到opencv的高级算法库,比如目标跟踪、特征提取等。这些高级算法库都封装在一个单独的模块contrib。opencv官方下载的window下的exe文件,双击安装后的opencv文件是已经编译好的文件,这里面是不包含contrib模块的。所以,我们需要自己编译一个带有contrib模块的opencv库。准备编译工具Cmake,opencv和contrib源代码。Cmake链接(...

2020-03-02 09:51:21 832

原创 LeetCode 33. Search in Rotated Sorted Array

Description:Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand.(i.e., [0,1,2,4,5,6,7] might become [4,5,6,7,0,1,2]).You are given a target value to search....

2020-02-18 15:11:46 117

原创 LeetCode 31. Next Permutation

Description:Implement next permutation, which rearranges numbers into the lexicographically next greater permutation of numbers.If such arrangement is not possible, it must rearrange it as the lowest...

2020-02-16 19:23:52 125

原创 使用EmguCV集成的Tesseract-OCR进行光学字符识别

开源代码:https://github.com/tesseract-ocr/tesseract简述:之前是惠普开发的,并在2005年开源出来,2006年,谷歌接手维护。在光学字符识别上算是一个不错的算法,而且还是开源的。EmguCV集成了该算法,资源文件需要去官网下载,下载速度挺慢的,有需要可在下方链接进行下载:调用的核心代码:tess = new Tesseract("Tessdata",...

2019-12-02 13:30:23 2130

原创 使用tensorflow实现BP神经网络

前言:前一篇博客使用numpy实现了BP神经网络,梯度求解和参数的更新都需要自己来编程实现,一不小心就会搞错。然而,每一层的实现都有一个固定的套路,激活函数也就这么几个,有没有更好的框架来实现呢?额谷歌团队开发了一个深度学习框架tensorflow,将一些繁琐的东西封装好了供我们使用。tensorflow在工业界和学术界都使用广泛,所以,我们有必要学习使用tensorflow,今天小试牛刀,用t...

2019-11-01 17:29:26 2650 1

原创 使用Numpy实现BP神经网络

前言BP神经网络是深度神经网络的基础,由于深度神经网络过于复杂,不便于理解其中参数更新的过程,所以我们一般会用3层网络来理解这个过程。BP网络由输入层,隐藏层和输出层组成。一次正向传播输出结果,算出损失值,然后一次反向传播,求出各层之间连接的权重和偏置的梯度,通过梯度下降法(或者其他方法)更新参数,从而完成一次loss的最小优化。重复正,反向传播的过程,直到loss不再减小(或者说减少的很小,可...

2019-11-01 17:02:56 1761

原创 逻辑回归之原理分析与实践

一、简述上一篇博客写到线性回归,它是一个线性拟合的过程,而逻辑回归是一个通过线性分类的过程,逻辑回归可以用于多分类,其实就是在分割好的区域再次线性分割,从而实现多分类,一般用在二分类的模型中。二、数学原理三、编程测试沙发婚纱发件方三房...

2019-10-16 13:21:56 246

原创 线性回归之原理分析与实践

1、环境:Pycharm2017.2,Win7,python3.62、损失函数一般用均方误差来表示,对损失函数进行微分,可以得到梯度,使用梯度下降法不断迭代,可以将参数调整为最佳(前提条件是损失函数为凸函数,并且学习率比较合适)。使用公式: w = w - 梯度*学习率https://www.jianshu.com/p/f5570f21e5behttps://blog.csdn.net/n...

2019-09-30 16:20:21 208

原创 卷积层与全连接层权重(参数)个数的计算

环境:Pycharm2017.2,tensorflow 2.0.0b0,Win7感想:最近在研究卷积神经网络的构建和训练,权重(参数)是一个非常重要的概念,卷积层会用多个不同的卷积核,每个卷积核有m*n个权重,用来提取和强化图像的特征,主要利用了图像的局部相关性。全连接层,顾名思义,每一层的每个神经元都与上一层的每个神经元连接起来,每条连接都有一个权重和偏置来进行传递。构建卷积网络如下:im...

2019-09-05 10:48:16 15957 2

原创 文本倾斜校正的两种方法(Python-OpenCv)

一、通过minAreaRect方法获得斜率参考资料:【1】http://www.360doc.com/content/17/0225/20/28294195_631980376.shtml【2】https://blog.csdn.net/qq_24237837/article/details/77850496主要步骤:1、输入图片2、灰度化3、图像取非4、二值化5、获得有文本区域...

2019-06-26 17:18:15 13494 2

原创 ImageAI目标检测和resnet50_coco_best_v2.0.1.h5模型文件

最近在学习使用ImageAI库中的目标检测库,有个模型文件官网下载速度让人捉急,动不动就0kb/s,在这里共享一下这个模型文件(resnet50_coco_best_v2.0.1.h5),供大家学习使用。资源链接:链接:https://pan.baidu.com/s/1MMwCXRODROFRXwx8k1Ki0g提取码:epnr参考博客:【1】https://blog.csdn.net/...

2019-06-21 17:09:19 3837 8

原创 基于OpenCVSharp的人脸识别系统

一、概述因为OpenCv对UI兼容不是很好,C#可以很好地写UI,有2个框架可供选择:1、EmguCv;2、OpenCvSharp。OpenCvSharp是一个日本人开发的开源项目,里面封装的类和方法和OpenCv非常相似,且底层协议用的是BSD,对商业友好,OpenCvSharp的下载量已经超过了EmguCv,之前用了EmguCv,现在改用OpenCvSharp来做OpenCv的程序开发。人脸...

2019-06-13 15:24:48 8530 3

原创 OpenCVSharp+C# 轮廓检测

OpenCv提供了函数 findContours()用于对物体轮廓进行检测,该函数实现算法是由S.suzuki K.Abe于1985年发表的。OpenCVSharp封装了这个函数,有2个参数(contours,hierarchy)要做特别的说明。public static void FindContours(InputOutputArray image, out Point[][] contou...

2019-06-06 11:18:45 9981 7

原创 OpenCV环境安装

第一次安装Opencv在一年之前,当时对Visual Studio和OpenCV不是很了解,再加上Visual Studio是英文版的,当时花了很多时间才安装好了,很是无奈,现在重新安装了一遍,有了一点新的想法,和大家一起分享,希望可以帮到大家。操作环境:win7+VS2017+OpenCV-3.4.1OpenCV-3.4.1版本,下载地址:https://opencv.org/release...

2019-05-28 15:57:04 258

原创 213. House Robber II

题目:You are a professional robber planning to rob houses along a street. Each house has a certain amount of money stashed. All houses at this place are arranged in a circle. That means the first house ...

2019-02-08 21:41:36 197

原创 leetcode 198. House Robber

题目:You are a professional robber planning to rob houses along a street. Each house has a certain amount of money stashed, the only constraint stopping you from robbing each of them is that adjacent ho...

2019-02-08 21:27:36 206

原创 leetcode 62. Unique Paths(动态规划)

题目:A robot is located at the top-left corner of a m x n grid (marked ‘Start’ in the diagram below).The robot can only move either down or right at any point in time. The robot is trying to reach the ...

2019-02-06 21:41:21 174

原创 leetcode 279. Perfect Squares

题目:Given a positive integer n, find the least number of perfect square numbers (for example, 1, 4, 9, 16, …) which sum to n.Input: n = 12Output: 3Explanation: 12 = 4 + 4 + 4.算法思路1(BFS和图的最短路径):n从1开...

2019-02-05 20:52:28 143

原创 leetcode 343. Integer Break(从递归到动态规划)

题目;Given a positive integer n, break it into the sum of at least two positive integers and maximize the product of those integers. Return the maximum product you can get.Input: 2Output: 1Explanatio...

2019-02-02 22:38:15 398

原创 leetcode 40. Combination Sum II(找出和为target的组合)

题意:找出和为target的组合算法思路:首先将数组拍个序,然后进入递归方法,如果target等于当前元素,则加入该组合,为防止组合重复,有2种方式解决,第一,结果中不包含该组合则加入结果;第二,在尝试下一个元素时,检查当前元素是否和下一个元素相等,相等则跳过,不相等则继续。如果target大于当前元素,暂存当前元素,递归进入下一个元素查找,target相应减去当前元素值,查找完成后,除去当前...

2019-01-26 22:03:26 562

原创 leetcode 78. Subsets II(求集合的子集)

题意:求集合的子集算法思路:先给该集合从小到大排个序。子集分为0个元素(空集)、1、2、…n个元素,找出其对应的组合。为防止找的的子集不重复,有2种方法,第一:子集不在结果中,则加入,花O(n)时间复杂度;第二:在尝试下一个元素时,检查当前元素是否和下一个元素相等,相等则跳过,不相等则继续。参考代码://leetcode 78. Subsets II public static Li...

2019-01-26 21:28:12 246

原创 leetcode 401. Binary Watch

题目简述:A binary watch has 4 LEDs on the top which represent the hours (0-11), and the 6 LEDs on the bottom represent the minutes (0-59).Given a non-negative integer n which represents the number of LE...

2019-01-26 21:05:35 195

原创 leetcode 108. Convert Sorted Array to Binary Search Tree

题意:将一个有序数组转化为一棵平衡二分搜索树算法思路:我们可以将一个有序数组不断往中间切分,中间值就是根结点,其左右子树结点个数相等或相差1,然后它的左半部分和右半部分按照相同的方式切分下去,左半部分挂在左子树上,右部分挂在右子树上,这样需要用一个标记区别左右子树。我在leetcode上提交的结果,挺满意的,分享下:Runtime: 1 ms, faster than 99.17% of Ja...

2019-01-21 21:09:12 123

原创 leetcode 450. Delete Node in a BST

题意:删除二分搜索树中值为key的结点算法思路:当root为null时,直接返回root。首先,用二分搜索法查找到值为key的结点,在查找的过程中记录该结点的父结点并标记该结点是父结点的左孩子还是右孩子(用于保存删除某结点时涉及到的其他结点)。若没有找到key值的结点,则原样返回。若父结点为null,说明删除的结点是根结点,如果 root.left为null,则root指向root.right,...

2019-01-21 20:16:12 154

原创 leetcode 113. Path Sum II

题意:求和为sum的路径,将满足的所有路径返回算法思路:首先创建一个list(用来存储所有路径),当root为null时,返回list。当该结点为叶节点并且其值为sum,则将该结点作为一条路径加入list中,返回list。从它的左孩子获取满足条件的路径,然后遍历获得的路径,将本结点加入到该路径后将该路径加入到list中。相应地从它的右孩子获得满足条件的路径,操作和前面类似,不足赘述。最后返回li...

2019-01-20 23:01:47 130

Tessdata.zip

字符(eng)的资源文件,用于字符识别,主要包括eng.cube.bigrams,eng.cube.fold,eng.cube.lm,eng.cube.nn,eng.cube.params,eng.cube.size,eng.cube.word-freq,eng.tesseract_cube.nn,eng.traineddata的9个文件。

2019-12-02

MyFaceDetect.rar

这个类是基于OpenCvSharp写的,它封装了几个关键方法,包括图片信息的获取,训练识别器,添加人脸信息,检测人脸并获得人脸框,展示人脸识别后的结果

2019-06-13

arm-linux-gcc-4.4.3.tar.gz

安装方法网上很多,我就不多赘述了

2017-08-12

ESP8266-WIFI数据透传

ESP8266-WIFI数据透传,将数据通过路由器上传到服务器端

2017-05-14

ESP8266 AT指令集

对ESP8266进行操作,可以作为客户端实现WIFI连接,通过透传模式,将数据上传到TCP服务器端

2017-05-13

串口调试助手

用于上位机串口的相关操作,可以接收串口的数据,也可以向串口发送数据

2017-05-13

空空如也

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

TA关注的人

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