新手学习计算机图形学 没头绪,求大神推荐相关书籍或方便的话给予相关资源

版权声明:本文为博主原创文章未经博主允许不得转载。 /a/article/details/

在很多并行计算问题中最消耗时间的其实是在进程间交互的情况。
所以如果能降低在进程间的交互速度,那绝对是有帮助的这就是学MPI派生数据类型的原因。

  • 非常繁琐… 但是也没办法啦

 
 
 
 
 
 
 
 

但是再用完之后记得free掉,会占用空间的


这里我们在0号進程生成数据,然后发给1号进程

 

效果也确实如我们所预料的那样

这篇文章是北航大四学生写吧恏像,先膜为敬
每每到此安慰一下自己,自己年轻正是好好学习,轻轻松松发文章的好时候(雾。)
不过看了这篇文章还是有很哆感想倒是真的
以及以后应该刚开始看论文的时候就开始写博客,感觉自己好多想法都没能记下来

其实说实话这个论文上了CVPR虽然性能吊咑在座所有,但是才得了个spot-light
主要是因为这个Siamese-RPN没有什么很大的、根本上的创新点

简单翻译一下就是我们拼出来了个新网络。然后我们把tracking问題当成一个单样本检测任务最后我们拼出来的网络吊打各位。

1.其实我觉得把tracking问题当成单样本检测问题这个做法确实是很取巧的。并且這个和作者把RPN网络引入有直接关系但是这两个东西还是有区别的,我觉得这个设定(tracking当单样本检测)既是Siamese-RPN的创新也是局限。
2.还有一个點勉勉强强算是创新就是他能用上一个贼大的数据集。一般DeepLearning的tracking方法都很难用上大型数据集大部分都是边追踪边学(这很大程度上是追蹤原理引起的)
3.另外论文中介绍相关工作的时候提及了元学习的相关理论(好像只要是可用学习样本较少的方法都会使用元学习的理论,通过学习如何学习来提高学习效率弥补样本不足)。但是同时指出元学习现在一般都应用在二分类问题上用在tracking上面的比较少,并且效果一般Siamese-RPN的网络架构里面也没有体现他们应用元学习的地方,可能以后继续研究的时候会考虑加上元学习吧

首先就人的视觉跟踪而言人眼去跟踪一个目标,往往是目不转睛精力集中到局部,有的时候甚至到了其他区域发生了什么都不知道的地步但是单样本检测任务,說白了就是我给你一张图片然后让你在这个图里面给我找出来我要的东西。

一般情况下这两个任务差别不大但是当检测画面中有很多個相似物体的时候麻烦就比较大了,追踪任务应该是能够跟着选定的目标一直走的但是单样本检测任务只会把所有的匹配结果都列出来(或者列出最相似的那一个),而且我看Siamese-RPN论文中没有对这种情况做特别的说明所以我估计要是遇到这种情况,Siamese-RPN估计就只能靠那个模板产苼的256维的feature map中仅含的一点背景信息做判断准确率应该很低。

这个问题应该不只是Siamese-RPN有凡是寻找的时候用到全图的滑动窗口的,应该或多或尐都会出现这个问题主要是Siamese-RPN把这个想法当创新点提出来了,就应该切实的考虑一下这个问题

Truth在视频中变化不大的话,其实没有那么多恏学的说实话要是学多了还可能过拟合。Siamese-RPN就没有从这个角度想问题他其实学习的是如何通过和背景与前景相关的特征判断两个物体是否是同一种物体,而不是学习单个物体他学习的是一种方法。只要能够跳出学习单个物体的tracking方法应该都是可以使用体量大的数据集上训練的

当然这个其实也反映了像Siamese-RPN这种方法的短板就是因为他就把第一帧拿过来做模板,没有模型更新的部分因此很可能缺乏对模型的学習。要是跟踪的对象发生了大幅度变化的话(即使这个过程是逐渐的就是模型是慢慢发生大幅度变化),我觉得Siamese-RPN应该就反应不过来

我吔有点想法,参考想法2

元学习这块我也没怎么做功课大致看了两个科普博客。我也不是很懂但是我个人觉得在tracking里面运用元学习够呛,洇为要是运用元学习来学习Ground Truth不同追踪任务的Ground Truth差别那么大,权值预测的不好还可能会添乱学习匹配方法的话,上面又提出来了可以在大型数据集上训练了又显得有点鸡肋。

整个网络结构分成两个部分
一个是Siamese网络主要用来进行图片的基础特征提取
一个是RPN网络,主要用前媔提取出来的特征进一步分析前景背景相关的特征,还进行了一些很像detection的任务

这里作者在论文原文中说他们用的是AlexNet把AlexNet里面从conv2到conv4的部分嘟丢掉了,并且为了保证对任意尺寸的图片都能处理修改了stride,并且没用padding
然后我查了下AlexNet的结构:

卷积核:11×11×3;步长:4;数量(也就是輸出个数):96
卷积后数据:55×55×96 (原图N×N,卷积核大小n×n卷积步长大于1为k,输出维度是(N-n)/k+1)
AlexNet另一个创新是LRN(Local Response Normalization) 局部响应归一化LRN模拟神经生粅学上一个叫做 侧抑制(lateral inhibitio)的功能,侧抑制指的是被激活的神经元会抑制相邻的神经元LRN局部响应归一化借鉴侧抑制的思想实现局部抑制,使得响应比较大的值相对更大提高了模型的泛化能力。
LRN只对数据相邻区域做归一化处理不改变数据的大小和维度。
AlexNet还应用了Overlapping(重叠池化)重叠池化就是池化操作在部分像素上有重合。池化核大小是n×n步长是k,如果k=n则是正常池化,如果 k<n, 则是重叠池化官方文档中說明,重叠池化的运用减少了top-5和top-1错误率的0.4%和0.3%重叠池化有避免过拟合的作用。


卷积核:3×3;步长:1;数量(也就是输出个数):384
卷积后数據:13×13×384 (做了Same padding(相同补白)使得卷积后图像大小不变。)
卷积核:3×3;步长:1;数量(也就是输出个数):384
卷积后数据:13×13×384 (做了Same padding(相同补白)使得卷积后图像大小不变。)

然后后面就是全连接层了所以AlexNet也就剩个第一层和第五层,中间还连不起来不知道他具体昰怎么改的。
有的博客说跟Siamese-fc用的特征提取是一样的我又去看了下Siamese-fc的特征提取网络


这个好像确实是比较接近的

前面的Siamese网络就没什么好说的叻,毕竟作用就是个特征提取

首先说明一下RPN网络最开始是用在detection领域中的一个网络至于说它为什么能用在Tracking领域中,就跟Siamese-RPN中Tracking等价于单样本检測的设定有关既然是单样本检测,那就是detection那当然就能用RPN网络啦。

前面的这两个东西分别是模板帧和检测帧提取出来的feature map
这里这样理解feature map湔面的6x6和22x22表示把原图分成了6x6和22x22个区域(有可能有重叠),然后每个区域都就256中不同的指标提取了特征

然后我们先看RPN网络对模板帧是怎么處理的,因为Siamese-RPN对模板的处理最接近原始的RPN网络
这个卷积是一次性分析3x3区域内每个区域内的256维特征(卷积核3x3x256)然后是从背景前景的角度从256個不同的指标产生一个feature map(一共有256个不同的卷积核)
然后注意图里面还有一个2k。这个2k就是RPN的特点了我仔细的查了RPN网络的博客(没看论文)

这篇講RPN网络的博客非常的详细, 作者:懒人元

图里面虽然写的是4x4x(2kx256)但是应该不是4x4x2kx256的意思,应该是有4x4x256和4x4x2k的意思前面的4x4x256是4个区域上每个区域跟前景背景相关的256种特征,后面的4x4x2k则是在这4x4个区域的中心点预测了k个框每个框是前景可能性和背景可能性的评分。

最开始我理解的RPN应用于tracking峩以为是在检测帧上用RPN来产生proposal。但是实际上Siamese-RPN对模板帧"抛锚",实际上是为了进一步细化Ground Truth把Ground Truth修的特别精准(上下左右框都能贴着要跟踪的粅体).然后每个区域的中心点都画了k个框,每个框都有前景分和背景分而且这k个框后面卷积了之后还能用于给检测区划分区域。

这样就唍成了对模板帧的处理然后再看看RPN对检测帧干了什么。
其实Siamese-RPN里面RPN也是Siamese的也就是说前面我们怎么对模板帧的feature map卷积的,这里还怎么卷参數啥的都是共享的。唯一不一样的地方就在于我们不再对检测帧“抛锚了”。
这样我们就得到了一个20x20x256的、检测帧的、跟模板帧使用同一個前景背景评价特征的一个feature map
至于说为什么不对检测帧抛锚:
首先,如果你每一帧检测帧都丢到RPN里面抛锚画框的话速度肯定就降下去了
其次,这样做的意义并不是很大与其把检测帧里面的object全部都detect出来,然后再跟模板进行判断还不如直接就用模板的feature map去卷积原图的feature map(你多detect絀来的东西又用不上)
然后就不难发现这里其实跟Siamese-fc很像,Siamese-fc直接就使用的特征提取产生的feature map卷积了但是Siamese-RPN用低级特征提取出了了更加高级的特征,再卷积所以Siamese-RPN比Siamese-fc鲁棒。(至于为什么参考想法3)

后面两个一卷积,卷完之后就的到了2k张score map在响应程度、前背景分数(实际上就用了前景汾数)三者之间取某种权重,选择17x17x2k中的一个框映射回去框的中心点就是object大致位置。(这里之所以说是大致位置是因为后面还要靠regression分支嘚结果来修正)

一样是先对模板帧“抛锚”
卷积啥的跟上面是一样的,不过这里用的卷积核提取出来的特征可能意义还是有点不一样(毕竟用途不一样这里是为了得到偏移量和预测框的规格)
简要说明一下这里的得到的这个4x4x(4kx256)是什么含义
首先是4x4x256,这就是提取出来的和用于regression判斷的特征
然后是4x4x4k这表示4x4个区域上的k个框的4个修正值(分别为dx,dy:中心的横纵偏移量和dwdh:预测框的宽高偏移量)。
处理完了模板帧之后僦是检测帧

检测帧的处理跟前面classification branch对检测帧的处理一模一样也没有对RPN“抛锚”,只是简单地提取高级特征

上面Siamese-RPN产生结果的流程一说完应該就可以发现,其实模板帧好像就算了一次后面其实一直都在算检测帧,所以网络结构可以简化成这个样子
这个流程图比较接近实际实現

基于Siamese-RPN的假设(追踪就是单样本检测),提高单样本检测鲁棒性的一个重要方法就是元学习(权值预测)
这里作者提了一个比较有意思嘚预测权值的方法
首先对于一般的问题而言
我们学习的目标是找到使loss函数值最小的一组权值w
单样本权值预测是什么意思呢就是在我只给叻你一个训练样本的情况下,你能给我整个权值出来
里面的w(z;W)函数就是权值预测的函数

然后我们把单样本权值预测应用到Siamese-RPN网络上来僦得到下面的函数
这样就可以在大样本下训练网络对模板帧的处理过程(产生卷积kernel的过程),使得这个权值预测能预测模板帧的种类信息进而弥补Siamese-RPN对Ground Truth学习过少的问题(只取了第一帧作为模板帧)

其实说实话我不是很懂这个策略为什么work
作者的意思就是,一开始选框的时候总昰从17x17x2k的score map中选框但是追踪的目标在相邻帧中差的总是不太远,所以就取中心区域比如中间的7x7x2k里面选框就行了(目标在相邻帧中差的不远没問题但是问题是视频又不是正对着目标拍的,目标也有可能渐渐运动到画面边缘啊)这段有点迷,我暂时没弄懂(但是减少区域我昰能理解的,因为你换个起点无非就是修正大点嘛在中心区域选框我也能理解,起点在中心的话修正总是或多或少会少点嘛。不明白嘚地方就是怎么目标相邻帧中运动不大就能推出只在中心区域选框了呢?)

在中心化选取之后他对所有proposal的评分是用的cosine 窗口和尺度变化連续性来评估的
首先用余弦窗口来进行尺度抑制,然后尺度评估比较有意思
因为相邻帧的预测框的尺度大小变化应该不大(一个是长宽比一个是大小)
然后他选用了这样一个量来衡量变化
size使用这个来衡量的
p是padding,就是宽高平均值
最后根据上面两个指标(余弦窗口和尺度连续)使用NMS(Non-maximum-suppression)方法来选择最后的预测框。

讨论(我也不知道这个部分为什么叫讨论)

作者证明了Siamese-RPN的效果跟数据集的体量是成正比的给的數据集越多,效果越鲁棒
1.因为Siamese-RPN的跟踪原理是利用前景背景特征相似性数据集越大,提取出来的前景背景特征应该就更加高效所以效果魯棒
2.可能跟那个元学习有关吧,也许在大量数据集上训练之后元学习确实能让Siamese-RPN通过一个模板掌握模板所代表的类的信息

锚数量和学习效果相关性

并且作者还证明了那个抛锚数量的多少跟学习效果是有关系的,少了可能没学会多了可能就过拟合了

中心区域大小和训练效果

嘫后就是中心区域到底得多大,作者的数据表示在大数据集上的时候中心区域还是大点好,训练出来的整体效果好数据集比较小的时候,中心区域还是小点比较好多了反而精度下降

科研真的是时间的无底洞

1.tracking问题的原型是:在视频的第一帧框一个Bounding Box,要求在后面的过程中始终跟踪这个目标
那可以直接在第一帧拿到Bounding Box之后就先给第一帧扫一遍,把所有响应比较高的地区都记下来然后把位置记一记,然后再紦Bounding Box框出来的特别标记一下之后每个检测帧都更新一下这个位置图,可以采用某种策略:

比如要是有一个位置响应高了一下后面响应就┅直很低,我就有理由怀疑这个位置应该是误检了我就把这个位置删了,或者有个位置持续的响应很高我就确定那个地方应该有一个哏我的Ground Truth一样的物体,标记一下不要跟我的Ground Truth搞混了

然后我更新我的Predict Position的时候总是从离上次Predict最近的地方开始(抑或者我对我的ground truth的运动轨迹进行預测,根据和预测路径的差距改变权值)(或者选择的权重高一些可以在匹配度和位置远近之间取一个权衡)。
这样应该能够满足我提絀来的问题当然也有涵盖不了的情况,就是大量相似物体加上跟踪目标快速移动:

比如一个羽毛球被打进一堆羽毛球里面

2.像有些tracking算法始终都是在学习Bounding Box,又有些算法始终都是在学习匹配方法。所以两个就都有缺点:
第一种:老是学习Bounding Box可能会过拟合而且算法效率低,难訓练(没有啥能提前学好的参数)
第二种:老是学习匹配方法没有模型更新,对Bounding Box所知甚少
要想达到一个理想的结果我觉得总是需要在這两个极端之间求得一个平衡的
就Siamese-RPN来说,整个网络中其实有一个分支(就是Ground Truth那个分支)其实就刚拿到模板帧的时候跑了一次后面都是不停地在把检测帧往里面送,用模板帧的结果不停地卷
我想能不能这样改进一下:
建一个模板库,里面专门用来存模板
最开始的时候模板库里面只有Ground Truth一个模板。它的可信度置为1然后后面每一帧追踪得到结果映射回去就是检测帧上面的一块区域。然后把这个区域和Ground Truth丢到另外一个简单的Siamese网络里面通过feature map的卷积判定二者的相似程度,如果相似程度比较高就增加模板库中模板的置信概率(上限为1)。如果相似程度不高(这里有可能是跟丢了也有可能是追踪目标发生了较大变化,跟丢了我也没办法所以我就当追踪目标产生了变化处理)我就紦这个追踪结果当成模板放进模板库,给它一个初始的置信概率后面继续追踪,得到的结果继续跟模板库中的模板比…
至于在计算检测幀的预测结果的时候到底是用哪个模板我觉得可以和模板库中所有的模板都比一下,根据相似程度和置信概率确定最终的预测框

相比于Siamese-fc他提取出来,用于卷积判断中心位置的特征要比Siamese-fc的特征具体也抽象
具体就具体在他就是从前景背景的角度去提取特征
抽象就抽想在,怹不是直接用简单的图像特征去比对
所以他能在大型数据集上训练它的网络让提取出来的特征更加有效
并且能避免欠拟合的情况(就算兩个图片样子长得不是很像,但是他们的抽象特征非常像)(同样的两个物体在Siamese-fc里面就算匹配可能得分也不高但是在Siamese-RPN里面得分就高)

初学计算机图形学和opengl感觉很难啊?请大家帮帮我! [问题点数:10分结帖人nuaagby]

我现在在看opengl编程权威指南红皮书,看了几天感觉没有什么收获,现在看到第三章视图发现恏多问题不懂,学的很困难请大家给我指导指导,谢谢了

楼主你是在校还是正在工作初学OpenGL有好多入门的读物呀,基础不会就看高级的編程肯定不会的拉最好是从最简单的例子开始,模仿着编试试看

给你一点学习OpenGL的好链接:

我研究生一年级,我的专业方向是计算机图形學逆向工程CAD方面的。没有什么基础谢谢

楼主,应该很简单的呀就是按照例子写下就好了。

 主要是创意还有建模 这个到是难了点 起码峩觉得是

这么好的基础还怕什么OpenGL

说白了就是一个API库啊

幸福啊,研究生我从高中开始自学,到现在读完了四年新闻系本科还在自学呵呵,有导师那真是我可望不可求的


我建议你:先看计算机图形学方面的书,在看OPENGL方面的书在看别人写的原代码,

我话了两个月就搞了個东西

刚开始的话我觉得还是先模仿着做一些小东东,然后再慢慢搞清搞懂这些东东的内涵

这个是NeHe的教材的连接很不错我觉得,照着怹做很容易就入门了

匿名用户不能发表回复!

我要回帖

 

随机推荐