- 博客(27)
- 资源 (4)
- 问答 (2)
- 收藏
- 关注
原创 PyTorch 分布式训练 DistributedDataParallel 注意事项
最近写代码,用的pytorch的DDP分布式工具。发现一个问题,如果在代码中,模型在一次训练中有两次前项传播,如下:model = Model()for i, (x1, x2, y) in enumerate(trloader): x = x.cuda() y = y.cuda() p1 = model(x1) p2 = model(x2) ...程序会爆如下错误:RuntimeError: one of the variables needed for gradient compu
2021-04-23 11:40:19 732
原创 PyTorch Bug 记录:one of the variables needed for gradient computation has been modified by an inplace
有一段代码在 pytorch 1.2 上没有问题,但是移植到 pytorch 1.8 就会报如下错误:RuntimeError: one of the variables needed for gradient computation has been modified by an inplace operation: [torch.cuda.FloatTensor [3136, 10]], which is output 0 of TBackward, is at version 2; expecte
2021-04-02 18:29:38 4109 5
原创 在 nn.Sequential 中使用 reshape
pytorch中没有nn.Reshape层,如果想使用 reshape 功能,通常:class Net(nn.Module): def __init__(self): super().__init__() ... def forward(self, x): ... h = h.view(-1, 128) ...如果要想在 nn.Sequential 中使用 Reshape 功能,可以自定义Reshape层:class Reshape(nn.Module): def _
2021-01-05 11:10:20 5124 1
原创 半监督学习导论第2章:半监督学习概述
2.1 从有标签和无标签数据中学习半监督学习是监督学习和无监督学习的中间地带,可以看成是监督学习或者无监督学习的扩展,具体来说,可以分成下面几大类:半监督分类(Semi-supervised classification):对于有监督分类问题的扩展,使用有标签数据和无标签数据共同训练分类器。希望通过无标签数据的加入,提升分类器的学习性能。带约束聚类(Constrained clusteri...
2019-04-04 23:07:51 702 1
原创 opencv-python 一个关于 flann 的BUG
最近用opencv-python 做一个东西,用到了cv2.flann_Index ,用下式建立索引:flann = cv2.flann_Index(data, dict(algorithm=1, trees=5)) # kd-tree然后用 flann.knnSearch() 方法进行knn搜索,搜索结果错误很严重。错误原因:cv2.flann_Index 建立索引之后,原始数据...
2018-07-18 18:48:11 946
原创 多维尺度分析 MDS
1 目的已知很多样本点之间的相互距离(以欧式距离为例),但是不知道每个样本点的具体坐标,MDS分析就是要求解出每个样本点的原始坐标,然后保证这些样本点的原始坐标尽量符合这个距离矩阵关系。用一个例子说明一下这个问题,已知中国几大城市之间的距离,但是不知道他们的经纬度,现在要求他们之间的相对位置关系。 北京 天津 上海 重庆 呼市 乌市 拉萨 ...
2015-09-06 12:21:10 11427 2
原创 string 转 LPCTSTR
(1)在ANSI字符集下LPCTSTR想当于LPCSTR,其中L指long,P指Point,C指Const。在程序中可以直接用char*类型的数据对LPCSTR进行赋值,用下述语句:LPCSTR a1= "abc";string a2 = "abcde";a1 = a2.c_str();(2)在Unicode字符集下LPCTSTR相当于LPCWSTR,它相当于wchar_t
2015-07-19 21:26:00 6810
原创 C++中vector的排序问题
在用vector排序的时候,发现sort()函数有一个问题,sort排序只会返回排序后的结果,不会返回每个排序后的结果在原来的编号。//templatebool cmp(const pair &x,const pair &y){ return x.second > y.second;}//templatevoid sortVector(vector &value, vector
2015-07-06 19:20:43 2653
原创 布尔检索
布尔检索是在倒排索引结构下进行的,下面举个例子说明一下什么是布尔检索。假设有一个倒排文件,如下图所示:现在要检索的word为 word1 和word3,以布尔 与 运算为例,就是对word1 与word3的检索结果 与 一下,也就是说只有两个word的倒排表中都有的文档编号才会被检索到。word1 & word3 ,那么检索的结果就是 doc4 和doc6。当然还可
2015-05-28 16:06:59 2206
原创 倒排文件(二):多特征倒排文件
如果不懂什么是倒排文件,请看上一个博文:http://blog.csdn.net/d14665/article/details/46043103本文参考清华一个牛人写的论文:Packing and Padding:Coupled Multi-index for Accurate Image Retrieval这样讨论一下二维倒排文件,它的思想与一维倒排文件是一样的。以下图为例说明:
2015-05-27 10:24:40 1095
原创 倒排文件(一)
最近做图像检索,发现倒排文件里边也大有文章。倒排文件对于检索性能没有影响,它只有一个作用,就是加速。举个例子:有两本书,两本书里的内容分别是:Book1: 语文 语文 语文 语文 语文 数学 数学 数学 英
2015-05-27 10:19:30 3301
原创 关于神经网络的一点猜想
现阶段,工程应用方方面面都出现了神经网络,小弟现在也正在学习神经网络,有一点猜想。 当前的神经网络大多都是调整自身的权值,从而进行学习。在某一种神经网络的结构之下,通过改进算法,提高收敛速度,或者加深层数,提高性能。在网络的学习过程中,网络自己只是调整它的权值,这个阶段类似的是人类的学习过程。不同结构的网络,可以看成是不同等级的生物。比如单隐含层的BP网,是比较低级的生物;隐含导
2015-04-12 00:12:59 860
原创 基于randomized visual phrase的目标检索
这个算法是用于目标检索的比较快速的一个算法,参考Randomized Visual Phrases for Object Search。算法的流程如下://图片训练阶段1读入N张图片2 转换成灰度图3 检测N张图片的特征点,本算法中应用的是SIFT特征。4 生成描述子5 描述子聚类,生成visual word,用kmeans()算法完成。6 将图片库中的图片用另
2015-04-03 11:52:57 909 4
原创 Gabor滤波器与纹理特征检索
本文目录1 Gabor函数的空频特性2 Gabor滤波器组设计3 纹理特征的表示1 Gabor函数的空频特性先介绍一下什么是Gabor函数,以非对称的Gabor函数为例:(公式1)它的实部是这样的:(公式2)Gabor函数的实况可以看成是一个高斯函数乘一个余弦函数,可以把高斯函数看成调制信号,把余弦函数看成载波信号,这样就容易相信gabor函数的
2015-01-29 19:38:22 2055 5
原创 GMM背景建模原理
简要原理:对一个视频序列帧中的每一个像素,建立一个混合高斯模型,这个模型中权重大的代表背景,权重小的代表前景。新来的像素如果能匹配上背景对应的高斯模型,那么新来的像素就被当成背景。如果匹配的是权重较小的高斯模型,或者没有匹配的高斯模型,那么这个像素被当成前景。算法流程:1 前提:视频序列的每一个像素,都训练好了一个混合高斯模型(一组高斯模型的和)。2 对于新的一个视
2015-01-13 16:43:34 11567 2
原创 meanshift应用于目标跟踪
这个文章并不是详细的讲解,只是总结一下我用meanshift的一些体会先简单说一下meanshift算法的原理:如下图所示,先指定一个区域,通过把指定区域的几何中心与质心想比较,如果相差较大,将区域的几何中心移到质心处,然后继续做比较。直到这个区域的几何中心与质心重合。用这个方法,可以找到一个图片中点最密集的地方。将meanshift应用于目标跟踪,其实就是构造一个运行图片的P
2015-01-06 18:26:42 25501 2
原创 全景图片拼接
最近在做老师布的一个作业,原来是要做全景视频合成,可是做出来发现实时性根本达不到,改成全景图片合成吧。废话不多说啦,说说原理。原理:1 直方图均衡化对图片三个信道进行归一化处理。2 柱面投影3 图片配准4 图片融合简单解释一下,柱面投影其实不难,就是一个曲面与一个跟它相切的平面的三角变换关系,有高中数学的人完全可以明白。做这块的程序,要知道摄像机的视角,或者知道投影
2015-01-05 17:41:35 1289 2
原创 模式识别中常用度量方式
1 欧式距离:设X为N维列向量,y为其警戒距离,则:y=X‘*X。 2 Hausdorff距离:设有两个向量集合,X={x1,x2,x3,x4,...xm},Y={y1,y2,...yk},其中集合内的每一个元素都是一个N维向量。H(X,Y)代表集合X到集合Y的Hausdorff距离,它是一个单身距离。H(X,Y)=max(x∈X) min(y∈Y) ||x-y||。H...
2014-12-24 11:59:44 1302
原创 自适应阈值二值化
二值化原理:把一个灰度图像二值化,其实就是找到一个阈值,使这个较低中,灰度大于这个阈值的,设置成255,灰度小于这个阈值的,设置为0。阈值自适应二值化:非自适应的二值化呢,有一个问题,就是一个阈值往往只对应一类图像,如果图像的光照变暗了,那个单阈值情况的二值化效果会大大的折扣。自适应二值化其实就是一种根据图片的灰度直方图,得到一个适合本图像的二值化阈值。本文给出一种自适应阈
2014-12-17 22:46:26 12058
原创 块匹配算法-全搜索
原理:假设有两帧图片,第K帧(当前帧)与第K-1帧(上一帧),第K帧图片以M*N的图像块为单位,分成一个个块,块间不重叠。对于第x个图像块A,在第K-1帧中,寻找与它最匹配的图像块A',我们认为A图像块是由A'图像块平移而得到的。于是就把图像块A'到A的运动矢量MV记作图像块A的运动矢量。全搜索算法:假设图像块在X方向与Y方向的可以最大位移为Xmax与Ymax,那么在以图像块A为中心的
2014-12-13 17:19:25 4073
原创 运动检测-时间差分法
原理:时间差分法其实就是让视频的两帧做差,从而得到变化的像素,再取一个阈值,小于阈值的变化值忽略,大于阈值的变化值保留下来。它的优点就是算法简单,速度快。本程序中,阈值是通过多次实验得到的一个针对本视频比较好的一个值,这种方法自适应性比较差,这也是它的一个缺点。代码如下:%本程序是主程序,用于实现时间差分法进行运行检测path='e:\test-pic\hall.yuv';sta
2014-12-09 00:18:37 2167
原创 Hough变换-直线检测
原理:举一个例子,有一条直线:y=bx+k。以x与y为坐标轴,那么给定一个b与一个k,就可以确定一条直线。同理如果以b与k为轴,那么给定一个x和一个y也可以确定一个直线。即xoy坐标系下的一个点在bok坐标系下对应一个直线。而bok坐标系下的一个点在xoy坐标系下对应一个直线。怎么检测一个图片中的直线呢?首先要求它的边缘,得到一个二值化的边缘图片。我们已经知道xoy坐标系下的一个点对应bo
2014-12-01 22:56:54 769
原创 PCA算法简述
PCA算法的步骤:1 获取初始数据矩阵;2 对矩阵进行减去平均值的调整;3 计算协方差矩阵;4 计算协方差矩阵的特征值与特征向量;5 选取主成分;6 生成特征矩阵。下面以人脸识别为例来说明PCA算法。第一步:获取原始数据矩阵假如以10幅不同人脸的图片为训练样本,每幅图片为10*10的矩阵,那么把每幅图片变成一个1*100的向量,把10幅图片合成一个矩阵,就得到了
2014-11-26 23:51:10 1208
WPF 中的viewport3问题
2016-06-15
关于opencv flann 的KDtree
2015-07-02
TA创建的收藏夹 TA关注的收藏夹
TA关注的人