学习笔记
Rainylt
这个作者很懒,什么都没留下…
展开
-
Swap分区扩容
https://blog.csdn.net/qq_36758914/article/details/107117169 改为600权限。https://blog.csdn.net/qq_53850321/article/details/121235918 设备忙。两个扩容操作,几乎一样的,对比着加深理解。原创 2022-11-03 20:46:22 · 218 阅读 · 0 评论 -
似然函数的意义
什么是似然函数?一般说似然函数,是指某一参数的似然函数,比如某分布的参数θ\thetaθ的似然函数。它是给定样本值下,关于参数θ\thetaθ的函数:左边是给定x,关于θ\thetaθ的函数。右边是给定θ\thetaθ,x的概率密度函数。结合极大似然估计,这里似然函数实际上和该参数下取到已有样本x的概率相等。根据极大似然估计,某参数下,取到已有样本的概率越大,我们越认为这参数为真实的参数。所以似然函数意思是这个参数的真实度回顾一下极大似然估计,实际上是右边,argmaxθf(x∣θ)\math原创 2022-06-06 11:57:56 · 1050 阅读 · 0 评论 -
EM算法原理
参考人人都懂EM算法 - August的文章 - 知乎https://zhuanlan.zhihu.com/p/36331115EM算法与极大似然估计已知:(1)一堆数据(2)数据的概率密度函数的形式未知:概率密度函数的参数eg. 高斯分布的均值和方差此时可以用极大似然估计求解概率密度函数的参数eg.似然函数=每个样本出现的概率的乘积为了方便计算一般会取一个对数转换成求和形式(称为对数似然函数):最大似然估计实际上就是求argmax似然函数,从而求得变量θ\thetaθ.原创 2022-04-08 15:55:38 · 693 阅读 · 0 评论 -
联合分布,边缘分布,条件分布,互信息
注意:分布和概率有时候会混乱,有时候P(X)表示X的分布,有时候用F(X),有时候用p(X),具体的直接看作者说它是啥就是啥吧分布函数要求F(X)F(X)F(X),实际上是FX(x)=P{X<x}F_X(x)=P\{X<x\}FX(x)=P{X<x}联合分布P(X,Y)P(X,Y)P(X,Y),表示X,Y同时发生的概率的分布边缘分布P(X)=P(X,Y=∞)P(X) = P(X,Y=\infty)P(X)=P(X,Y=∞)即当Y可以取所有值时,或者说不考虑Y的取值时,X的概原创 2021-12-22 21:56:05 · 2886 阅读 · 2 评论 -
熵,交叉熵,KL散度,条件熵
参考理解熵与交叉熵 - 九号的文章 - 知乎https://zhuanlan.zhihu.com/p/389293738熵计算公式:H(a)=−log(p(a))H(a) = -log(p(a))H(a)=−log(p(a))就是信息量,对于一个事件A,的一种情况的信息量,由情况a_i发生的概率决定举个例子:明天的天气有3种情况,分别是阴,晴,雨。发生的概率分别为1/10,2/10,7/10。那么,假如上帝告诉你“明天一定会下雨”,则这句话的信息量为−log(1/10)-log(1/10)−.原创 2021-12-22 21:00:07 · 653 阅读 · 0 评论 -
决策树ID3、C4.5、CART算法
参考【机器学习】决策树(上)——ID3、C4.5、CART(非常详细) - 阿泽的文章 - 知乎https://zhuanlan.zhihu.com/p/85731206算法的目的都是为了构建决策树,即每一层应该用什么特征用于分支。比如第一层用性别,性别男或女,第二层用年龄等等。ID3算法根据信息增益选择特征。信息增益=数据集原本的信息熵−使用某一特征后的条件熵信息增益=数据集原本的信息熵-使用某一特征后的条件熵信息增益=数据集原本的信息熵−使用某一特征后的条件熵信息熵如何计算?可看交叉熵计.原创 2021-12-09 18:22:57 · 646 阅读 · 0 评论 -
python做视频拼接
需求:将两个视频上下or左右拼接,用来做直观对比应该可以读入视频,遍历帧,每帧当做np对象直接concate,加padding的,不过已经有现成的包了,实现应该更加高效,就不造轮子了用到的包:moviepy文档:https://zulko.github.io/moviepy/getting_started/compositing.html用法:from moviepy.editor import VideoFileClip, clips_arrayclip1 = VideoFileCli原创 2021-11-29 11:22:12 · 1766 阅读 · 1 评论 -
matplotlib画动态轨迹图
参考https://blog.csdn.net/suzyu12345/article/details/78338091函数from matplotlib.animation import FuncAnimationanim = animation.funcanimation(fig, animate, init_func=init, frames=100, interval=20, blit=true)# fig: 是我们创建的画布# animat: 是重点,是我们每个时刻要更新图形对象的函数,.原创 2021-11-16 17:01:06 · 1767 阅读 · 0 评论 -
Attribute-aware Pedestrian Detection in a Crow
APD,citypersons的SOTA,主要解决重叠目标的问题普通NMS流程:对于最后输出的所有框(1)找到预测置信度最大的框M(2)计算其他同类框和M的IOU(3)将IOU大于阈值N_t的框的置信度置0普通NMS的问题:两(多)个同类物体的IOU特别大的时候,其中一个人的预测框会在最后被NMS掉那么,有没有可能知道两个框是否属于同一个identity呢?=》给每个框预测一个属性向量,负责标记其identity如果是属于同一个identity,则其向量相近,若不属于同一个ident原创 2021-11-12 19:52:53 · 1691 阅读 · 0 评论 -
np.arctan2(y,x)
补充知识:向量与坐标向量的坐标:一个二维向量,一般就用两个数字表示,比如[1,3]看起来像一个坐标,可以称之为向量的坐标实际上,向量的坐标=向量的尾坐标—向量的首坐标np.arctran2(y, x)则是计算向量[x,y]与向量[1,0]的角度当然,以(0,0)为起点,坐标(x,y)为终点的向量,向量的坐标=向量的尾坐标否则,向量的坐标=[(x2-x1),(y2-y1)]此外,np.arctan2是可以批量计算角度的即输入y = [3,5,7],x=[2,4,8]时,会批量计算向量[2,3原创 2021-10-29 11:30:43 · 5653 阅读 · 0 评论 -
XML解析
一般用ElementTree包import xml.etree.ElementTree as ET首先传入xml文件名,创建解析对象:tree = ET.parse(xml_file)然后获取根结点:root = tree.getroot()获取了根结点,也就是整个xml的根结点,就可以用findall来找子结点比如找到’object’结点root.findall("object"),此时返回的是所有object结点的list,可以用index选择其中一个进行下一步操作以下面这个xml为例原创 2021-10-09 15:46:57 · 1118 阅读 · 0 评论 -
glob.glob
获取指定目录下的某类型的图片,比如获取VOC数据集里的所有xml文件xml_files = glob.glob(os.path.join(args.xml_dir, "*.xml"))获取所有Png图片:glob.glob(r"/home/qiaoyunhao/*/*.png")返回所有文件的绝对路径的list,非常好用...原创 2021-10-08 16:16:17 · 174 阅读 · 0 评论 -
目标检测样本分配
根据YOLOX作者的文章 如何评价旷视开源的YOLOX,效果超过YOLOv5? - 旷视科技的回答 - 知乎https://www.zhihu.com/question/473350307/answer/2021031747总结目标检测样本匹配方法设计原则,应该也可拓展至其他方法设计1.Loss Aware: 用Loss来作为样本分配的依据,以Loss最小化原则来分配样本。2.Prior knowledge: 在目标检测里就是Center prior,对目标的中心和样本的中心的距离做一定限制3.D原创 2021-09-27 10:53:35 · 440 阅读 · 0 评论 -
Parkinsonian Patients Detection
文章:Video Based Shuffling Step Detection for Parkinsonian Patients Using 3D Convolution没啥创新点,不过好歹出了一套检测帕金森病人的shuffling step的流程吧shuffling step是一个病症,主要体现在脚部,所以作者先用mask rcnn把视频里的人框出来,然后用DLGnet,人体解析的工作,把人分割出来,然后去掉背景,裁掉上半身,相当于做个数据预处理。(话说为啥部用mask rcnn直接把人扣出来呢,精原创 2021-09-18 16:06:42 · 291 阅读 · 0 评论 -
AutoAssign
label分配主要是为了计算Loss,这篇文章使得gt内部的所有点同时具有前景和背景类标签和置信度,因为作者认为gt内部的所有点并不应该都认为是正样本,因为有很多背景点结构跟FCOS是一样的:(1)center weighting先验分支一个分支,根据gt的位置,得到gt框在不同level上的feature(仅仅为了存放权重),并根据高斯分布生成权重,作为中心先验(2)positive weight map对于gt框内部的点,根据每个点的分类、回归loss,生成权重map1.根据回归loss生原创 2021-08-30 21:51:00 · 952 阅读 · 0 评论 -
修改矩阵每列topk的值_v2.0
前面那种两次sort固然能拿到对应的mask,但是稍微复杂了点,而且原创 2021-07-20 11:24:11 · 116 阅读 · 0 评论 -
得到矩阵每列的topk的mask
现有1矩阵:>>> a tensor([[-0.5882, 0.1056, 2.3118],原创 2021-07-19 20:36:52 · 211 阅读 · 0 评论 -
better to follow, follow to better
把小proposal超分后再进行分类和回归超分的gt是原图,LR是原图缩小0.5倍后的图有一个问题,图像缩小后,送入同样的特征提取网络,ROI的感受野不一定能对上按理说,原图,送入特征提取网络,ROI宽w,ROI的感受野为R_w+(w-1)D缩小0.5倍,送入特征提取网络,ROI宽0.5w,ROI的感受野应该也是上面的一半才能对齐,可实际上并不一定是一半如上图所示,这里用了相对感受野,就是除以了全图的宽,也就是占全图的比例,这样的话,缩小前后的相对感受野应该相等才能对的上,即DRRF=1,可上面原创 2021-07-14 16:12:13 · 108 阅读 · 0 评论 -
ROI的感受野计算
上图来源Better to follow, follow to betterRwR_wRw是一个点的感受野,ARF(w)是这个ROI的感受野,D是stride,w是ROI的宽RwR_wRw是如何计算的暂且不管,总之我们已经知道一个点的感受野是这么大问题:为什么Rw≠D,ARF≠w×D?R_w\neq{D},ARF\neq{w\times{D}}?Rw=D,ARF=w×D?因为这不是求点的映射!,求点的映射的时候,缩小了D倍,所以坐标直接乘D映射到原图,这里是感受野,相邻的两个点的感..原创 2021-07-14 14:08:28 · 167 阅读 · 0 评论 -
目标检测assigner发展
以FCOS起,In_gt_box+center sampling:(1)在gt内部(2)用一个圆的外接框来扩大/缩小gt,半径需预定义,相当于抑制大物体的正样本数,小物体正样本仍是按小物体内部的,实际上也不太好继续扩张,算是较优解了。ATSS:fcos有个缺点,规定不同尺寸的gt在不同尺度上拿正样本,也就是说小目标只能在P3上拿正样本。ATSS统计所有level的anchor,自适应阈值,实际上根取所有anchor的IoU的top9差不多,每个gt可以在所有level上拿到共9个样本,这样不同尺原创 2021-06-22 20:32:38 · 454 阅读 · 2 评论 -
向量运算转矩阵运算
比如A向量:[A1,A2][A_1, A_2][A1,A2]B向量:[B1,B2,B3][B_1,B_2,B_3][B1,B2,B3]要得到A向量中的每一个元素与B向量中的每一个元素相减的结果,如何计算?A.shape = [2]B.shape = [3]用代码的话就是#(1)A扩张到[2,3]#(2)B扩张到[2,3]#(3)A-BA[:,None].expand[2,3]B[None].expand[2,3]A-B现在来分析一下为什么要这么做?(1)直接推一下想要原创 2021-06-18 15:40:09 · 3009 阅读 · 0 评论 -
Mask rcnn调参
1.学习率 我是设的0.0012.训练轮数 如果是之前训好的模型,那么20/40,训到loss降到0.6左右应该比较合适3.MIN_DIM,短边的长度,我这里是用的原图训,就960了,长边1280,要求能整除644.TRAIN_ROIS_PER_IMAGES。这个比较关键,训练和测试不一样。这个值是指提取的ROI的数量,也就是候选框的数量,最好先大概看一下一张图上有多少个目标,然后x3。如果训练用了crop,则训练和测试这个参数要做对应调整5.IMAGE_RESIZE_MODE,一般用默认的“squ原创 2021-06-16 16:49:06 · 3162 阅读 · 3 评论 -
Seesaw Loss:目标检测长尾分布loss
参考Seesaw Loss:一种面向长尾目标检测的平衡损失函数 - 王佳琦的文章 - 知乎https://zhuanlan.zhihu.com/p/339126633上面文章讲过的这里就不赘述了,主要解释一些东西。Motivation中,“来自头部类别的样本会对尾部类别施加过量的负样本梯度,淹没了来自尾部类别自身的正样本梯度”要理解这句话,得先理解loss反向传播的过程为啥头部类别还能对尾部类别施加梯度呢?以全连接为例设1为头部类别。现在就是头部类别的预测情况,这个样本的gt为头部类别,.原创 2021-06-10 20:40:13 · 1043 阅读 · 2 评论 -
目标检测中的resize
dataset里的pipeline有resize操作,但是这里并不是把所有图片resize到同一大小,而是根据range,比如(1333,800),把图像的短边resize到这个范围,同时保持长宽比,相当于是限制图像大小真正的resize到同样大小在dataloader的collator(stitcher里是to_image_list,image list是一个数据结构,一个属性为size,一个属性为一个batch的数据)里,根据一个batch中的图片的长宽最大值确定这个batch的图片的长宽。也就是说,原创 2021-06-01 21:59:16 · 1113 阅读 · 1 评论 -
tensor的repeat和expand
expand(*sizes)把原tensor扩大到size大小不一定是按照哪个dim,按照哪个dim得看size里和tensor不相同的dimeg.x = torch.tensor([[1], [2], [3]])x.size()>>>torch.Size([3, 1])x.expand(3, 4)#此时做expand,可以发现(3,1)和(3,4)第一个维度是相同的,因此是按第二个维度扩张>>>tensor([[ 1, 1, 1, 1],原创 2021-05-27 16:44:32 · 1017 阅读 · 0 评论 -
torch.cat和torch.stack
同样都要指定维度cat指定维度是原维度相加,在原维度上相加,不增加维度stack指定维度是根据数量得到结果,增加一个维度,值为叠的元素数量eg.a = torch.rand((4, 3))b = torch.rand((4, 3))c = torch.stack((a, b), dim=-1)>>>c.shape = (4, 3, 2) #这个2是因为是2个元素d = torch.cat((a,b), dim=0)>>>d.shape = (8, 3)#原创 2021-05-27 16:09:35 · 152 阅读 · 0 评论 -
nn.Sequential和nn.ModuleList
nn.Sequential的参数为一个个模块,它负责将模块连接seq = nn.Sequential( nn.Conv2d(1,20,5), nn.ReLU(), nn.Conv2d(20,64,5), nn.ReLU() )使用时直接seq(feature)nn.ModuleList得参数和上面类似,多了个list的外框 self.modlist = nn.ModuleList([原创 2021-05-27 15:18:20 · 984 阅读 · 0 评论 -
feature map坐标映射回原图
不要管卷积核!!!不要管卷积核!!!不要管卷积核!!!只看StrideStride是啥?就是缩放倍率(1)比如一个8*8的原图,stride=4,就变成了2*2的那么这个点要映射回原图怎么办?stride=4,其实就是4*4个点变成了1个点,这1个点映射回原图,照理说映射回这16个点都可以,但是总得选一个点,思路是尽量靠近中心(1)x*stride,实际上就是映射回原来的4*4方块的最左上角的点(2)+sride/2,这个方块是stride*stride的,这相当于靠近中心,实际上是中心原创 2021-05-27 15:11:06 · 1365 阅读 · 1 评论 -
注册器的一小点困惑,_module_dict的value是对象
#test.pyclass apple: pass#此时此时,在这个代码里面,apple是啥?apple不再是一个str,而是一个对象,一个type=class的对象,不管它有没有实例化,它都已经是一个对象了,apple代表着class apple:pass…这一整段代码如果加上装饰器#test.py@CATS.register_module()class apple: pass不是把apple这个字符串传进去,而是把这个对象传进去如果直接使用#test.pyclass ap原创 2021-05-25 15:17:43 · 96 阅读 · 0 评论 -
self._meshgrid (mmdetection实现)
mmdetection自己实现了_meshgrid方法,跟pytorch的功能差不多,只不过不是返回两个矩阵,而是直接返回拉平后的结果eg.x=[1,3,5]y=[2,4,6]希望得到两个坐标的两两组合,自然是x=[1,3,5,1,3,5,1,3,5]y=[2,2,2,4,4,4,6,6,6]也就是说,x直接重复3次,y得每个单位重复3次,主要看y的重复是怎么实现的xx = x.repeat(y.shape[0])#eg.y.shape[0]=3yy = y.view(-1,1).repea原创 2021-05-21 16:42:05 · 138 阅读 · 0 评论 -
mmdetection代码结构图
model是architecture里的东西,而core则是目标检测的东西,anchor,bbox,mask,后处理原创 2021-05-20 15:51:16 · 415 阅读 · 0 评论 -
FPN结构图
论文里的结构图是这样画的,看起来比较美观不过并没有画出中间结果,于是我手画了一张图,有1*1卷积的中间结果向上的箭头代表插值,上采样,s=2代表stride=2的卷积,如果箭头上没有符号和数字代表没有操作从这张图就能很容易看出来自顶向下的融合操作...原创 2021-05-19 21:58:05 · 545 阅读 · 0 评论 -
pytorch eval模式和requires_grad=False的区别
参考https://sdsy888.blog.csdn.net/article/details/103884586?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCom.原创 2021-05-19 21:16:23 · 1259 阅读 · 0 评论 -
OTA:用最优传输理论解决目标检测label assign问题(cvpr2021)
最优传输理论:两种主体,一个供应商(supplier),一个客户(demander)n个供应商,每个供应商有k个货物,m个客户,每个客户需要s个货物同时满足n∗k=m∗sn*k=m*sn∗k=m∗s,也就是说所有供应商的货物都能给出去,所有客户都能拿到需要的货物要解决的是供应商把货物交给客户的运输费用最小化问题,所以叫做最优传输问题先不讲如何解决这个问题,自然有各种办法解决。OTA这篇文章就是把label assign问题用最优传输问题建模,然后用最优传输问题的常规方法去解决。建模:对于一张原创 2021-05-19 16:24:23 · 1124 阅读 · 2 评论 -
目标检测的运作原理的文章
https://www.cnblogs.com/jins-note/p/14170183.html原创 2021-05-11 16:47:48 · 72 阅读 · 0 评论 -
目标检测的PR曲线
参考对目标检测模型 PR 曲线的原理分析和实现 - sudit的文章 - 知乎https://zhuanlan.zhihu.com/p/365225772AP不是准确率,应该说是PR曲线下的面积,同时表征了查准率(precise)和查全率(Recall)查准率:TP/(TP+FP)查全率:TP/(TP+FN)那么如何调整查准率或者查全率以得到上面的PR曲线呢?——置信度阈值对于某一类,假设做NMS后有2个anchor,这两个anchor的预测置信度为0.8,0.5,已经做了NMS,这两个a.原创 2021-05-11 16:16:23 · 1760 阅读 · 0 评论 -
VarifocalNet: An IoU-aware Dense Object Detector(cvpr2021)
这篇文章的motivation跟上篇IQDet很像,只是这篇专门用实验说明了用IoU(浮点数)来代替分类target的1,同时实现类似label smooth的效果可以提高performance。但是这跟label smooth又有些区别,就是只有target类别是IoU值,其他还是0。这是否是相当于降低了loss?根据mmdetection最小复刻版(十六):iou感知VarifocalNet深入分析 - 深度眸的文章 - 知乎https://zhuanlan.zhihu.com/p/2717575原创 2021-05-07 11:09:19 · 499 阅读 · 0 评论 -
梳理一下IQDet_cvpr2021
IQDet: Instance-wise Quality Distribution Sampling for Object Detection论文地址:https://arxiv.org/abs/2104.06936CVPR2021上做目标检测anchor assign的文章,正好最近也想做这方向总体思路还是比较好懂的,就是用了GMM建模质量分布搞得有点玄,要是事先不知道GMM的可能看着还有点云里雾里GMM就是一种分布,可以理解为多个高斯分布的叠加,既然它是一个已知的分布,自然就知道其概率密度函数原创 2021-04-28 16:54:48 · 1004 阅读 · 1 评论 -
最大似然估计
有啥用?先说说最大似然估计是干啥的?1、已知一组采样得到的独立同分布的数据2、已知或猜测得到的这组数据所属总体的分布——概率密度函数(含有未知数)3、求解概率密度函数中的未知数怎么求?eg.已知N个采样得到的数据xi,i∈1,2,3,……Nx_i, i\in1,2,3,……Nxi,i∈1,2,3,……N假设其属于正态(高斯)分布,即其概率密度函数为1、那么,由于每组数据都是独立同分布的抽到这组数据的概率为P(x1,x2……xN∣μ,σ)=P(x1)∗P(x2)∗……P(xN)=∏原创 2021-04-26 15:12:05 · 354 阅读 · 0 评论 -
联合概率
上篇文章讲了对于某一随机变量的概率密度、概率分布函数,这篇文章讲两个随机变量的联合概率密度、联合概率分布函数首先回顾一下一个随机变量的概率分布函数的意义:F(x)=P(X<=x)F(x)=P(X<=x)F(x)=P(X<=x)即随机变量X的概率分布函数F(x),注意这里的小x是指随机变量大X的某一取值,表示随机变量X小于x的概率,即其概率密度函数从负无穷到x的积分那么,两个随机变量的联合概率分布函数F(a,b),即表示两个随机变量A,B满足A≤aA\leq{a}A≤a且B≤bB原创 2021-04-23 17:03:28 · 929 阅读 · 0 评论