• 在目标检测中,基于滑动窗口的检测是一种常见的办法。 如下是该算法的主要思路: 首先该算法的实现需要预先训练卷积网络,将数据集(经过裁剪,使检测的物体尽量处于图像中心并占据图片较大位置)进行训练,然后通过...

    在目标检测中,基于滑动窗口的检测是一种常见的办法。
    如下是该算法的主要思路:
    首先该算法的实现需要预先训练卷积网络,将数据集(经过裁剪,使检测的物体尽量处于图像中心并占据图片较大位置)进行训练,然后通过固定大小的窗口以及固定步长扫描需要检测的图片,将图片中处于窗口中的图像送入训练好的卷积网络进行检测,判断有无物体输出,最终通过变换扫描窗口的大小,可以检测出有无物体以及物体的大致定位(该算法的定位不一定准确)
    在这里插入图片描述
    在这里插入图片描述
    下面是卷积滑动窗口算法的实现过程,参考了吴恩达教程,如下图所示
    1、全连接层转换为卷积层

    在这里插入图片描述
    如上图所示,输入图片大小为14×14×314\times{14}\times{3},通过16通道的5×55\times{5}的卷积核然后再通过2×22\times{2}的最大池化,变为5×5×165\times{5}\times{16}大小,然后通过2个400节点的全连接层,最后通过softmax层输出y的4个分类各自的概率。
    将上述的全连接层转化为卷积的办法则是用400个5×5×165\times{5}\times{16}大小的过滤器将图像大小转化为1×1×4001\times{1}\times{400},在数学上这和全连接层400个单元是等价的,同理后面用相同办法处理,实现了全连接层到卷积层的转化。
    2、卷积的滑动窗口实现
    在这里插入图片描述
    我们假设实际图像为16×1616\times{16},命令滑动窗口大小为14×1414\times14,步长为2,则测试图可以分为四个部分,如上图进行同样计算可以得到2×2×42\times 2\times 4的矩阵,如下图所示
    在这里插入图片描述
    其中2×22\times 2小矩阵的每个部分和大矩阵中窗口扫描的位置一一对应。
    在卷积运算中,可以观察到很多运算都是重复运算,所以没有必要将每个被框中的图像一一检测,而是将整个大图像进行卷积网络运算。
    如下图,整个图像被分为64块
    在这里插入图片描述
    将全连接层转化为卷积层的优点总结如下:
    1、不用限制输入图像大小
    2、前向传播效率更高,因为在卷积中很多计算是共享的

    展开全文
  • (1)滑动窗口不需要边缘扩展且可以直接对块图像进行操作 num1 = 3; num2 = 3; [m,n] = size(I); mm = m-num1; nn = n-num2; for i = 1:1:mm for j = 1:1:nn Block = I(i:i+num1,j:j+num2);%需要对Block...

    (1)滑动窗口不需要边缘扩展且可以直接对块图像进行操作

        num1 = 3;
        num2 = 3;
        
        [m,n] = size(I);
        mm = m-num1;
        nn = n-num2;
        for i = 1:1:mm
            for j = 1:1:nn
                Block = I(i:i+num1,j:j+num2);%需要对Block处理的下面可以操作
        
                if(((j+num2) >= n)||((j+num2) >= n))
                    break;
                end
            end
        end

    (2)滑动窗口遍历图像,算法主要针对中心像素,相邻像素的值可以通过已经计算好的整张图像的值直接取值,而不需要取出块后再计算,以求解中心点和相邻点的二阶包裹相位差为例。

        I=padarray(I,[1,1],'both'); 
        [m,n]=size(I);
        for i=2:m-2
            for j=2:n-2
                H(i,j)= wrapToPi(I(i,j-1)-I(i,j))-wrapToPi(I(i,j)-I(i,j+1));
                V(i,j)= wrapToPi(I(i-1,j)-I(i,j))-wrapToPi(I(i,j)-I(i+1,j));
                D1(i,j)= wrapToPi(I(i-1,j-1)-I(i,j))-wrapToPi(I(i,j)-I(i+1,j+1));
                D2(i,j)= wrapToPi(I(i-1,j+1)-I(i,j))-wrapToPi(I(i,j)-I(i+1,j-1));
            end
        end

     

    展开全文
  • 滑动窗口的原理

    2010-03-25 15:04:00
    仍然考虑链路的延迟与带宽的乘积为8 K B,帧尺寸为1 K B的情形。让发送方在收到第一帧的A C K的同时... 滑动窗口算法滑动窗口算法工作过程如下。首先,发送方为每1帧赋一个序号(sequence number),记作S e q N u m

    仍然考虑链路的延迟与带宽的乘积为8 K B,帧尺寸为1 K B的情形。让发送方在收到第一帧的A C K的同时准备发送第九帧。允许我们这样做的算法称为滑动窗口( sliding window),时间线如图2 - 2 1所示。


    1. 滑动窗口算法

    滑动窗口算法工作过程如下。首先,发送方为每1帧赋一个序号(sequence number),记作S e q N u m 。现在,让我们忽略S e q N u m是由有限大小的头部字段实现的事实,而假设它能无限增大。发送方维护3个变量:发送窗口大小(send window size),记作S W S ,给出发送方能够发 

    送但未确认的帧数的上界; L A R 表示最近收到的确认帧( last acknowledgement re c e i v e d)的序号;L F S 表示最近发送的帧(last frame sent)的序号,发送方还维持如下的不变式:
    LAR-LFR≤RWS  

     
    当一个确认到达时,发送方向右移动L A R,从而允许发送方发送另一帧。同时,发送方为所发的每个帧设置一个定时器,如果定时器在A C K到达之前超时,则重发此帧。注意:发送方必须存储最多S W S个帧,因为在它们得到确认之前必须准备重发。
    接收方维护下面3个变量:接收窗口大小(receive window size),记为RW S,给出接收方所能接收的无序帧数目的上界; L A F表示可接收帧(l a rgest acceptable frame)的序号;L F R表示最近收到的帧(last frame re c e i v e d)的序号。接收方也维持如下不变式:
    LFS-LAR≤SWS  

     
    当一个具有顺序号S e q N u m的帧到达时,接收方采取如下行动:如果S e q N u m≤L F R或S e q N u m > L A F,那么帧不在接收窗口内,于是被丢弃;如果L F R<Se q N u m≤L A F,那么帧在接收窗口内,于是被接收。现在接收方需要决定是否发送一个A C K。设S e q N u m To A C K表示未被确认帧的最大序号,则序号小于或等于S e q N u m To A c k的帧都已收到。即使已经收到更高序号的分组,接收方仍确认S e q N u m To A c k的接收。这种确认被称为是累积的(c u m u l a t i v e)。然后它设置L F R = S e q N u m To A c k,并调整L A F = L F R + RW S。例如,假设L F R= 5(即,上次接收方发送的A C K是为了确认顺序号5的),并且RWS = 4。这意味着L A F = 9。如果帧7和8到达,则存储它们,因为它们在接收窗口内。然而并不需要发送A C K,因为帧6还没有到达。帧7和8被称为是错序到达的。(从技术上讲,接收方可以在帧7和8到达时重发帧5的A C K。)如果帧6当时到达了(或许它在第一次丢失后又重发从而晚到,或许它只是被延迟了),接收方确认帧8,L F R置为8,L A F置为1 2。如果实际上帧6丢失了,则出现发送方超时,重发帧6。我们看到,当发生超时时,传输数据量减少,这是因为发送方在帧6确认之前不能向前移动窗口。这意味着分组丢失时,此方案将不再保证管道满载。注意:分组丢失时间越长,这个问题越严重。
    注意,在这个例子中,接收方可以在帧7刚一到达时就为帧6发送一个认帧N A K(negative acknowl edgment)。然而,由于发送方的超时机制足以发现这种情况,发送N A K反而为发送方增加了复杂性,因此不必这样做。正如我们已提到的,当帧7和8到达时为帧5发送一个额外的A C K是合理的;在某些情况下,发送方可以使用重复的A C K作为一个帧丢失的线索。这两种方法都允许早期的分组丢失检测,有助于改进性能。
    关于这个方案的另一个变种是使用选择确认(selective acknowledgements)。即,接收方能够准确地确认那些已收到的帧,而不只是确认按顺序收到最高序号的帧。因此,在上例中,接收方能够确认帧7、8的接收。如果给发送方更多的信息,就能使其较容易地保持管道满载,但增加了实现的复杂性。
    发送窗口大小是根据一段给定时间内链路上有多少待确认的帧来选择的;对于一个给定的延迟与带宽的乘积,S W S是容易计算的。另一方面,接收方可以将RW S设置为任何想要的值。通常的两种设置是:RW S= 1,表示接收方不存储任何错序到达的帧; RW S=S W S,表示接收方能够缓存发送方传输的任何帧。由于错序到达的帧的数目不可能超过S W S个,所以设置RWS >S W S没有意义。

    2. 有限顺序号和滑动窗口

    现在我们再来讨论算法中做过的一个简化,即假设序号是可以无限增大的。当然,实际上是在一个有限的头部字段中说明一个帧的序号。例如,一个3比特字段意味着有8个可用序号0 ~ 7。因此序号必须可重用,或者说序号能回绕。这就带来了一个问题:要能够区别同一序号的不同次发送实例,这意味着可用序号的数目必须大于所允许的待确认帧的数目。例如,停止等待算法允许一次有1个待确认帧,并有2个不同的序号。
    假设序号空间中的序号数比待确认的帧数大1,即S W S ≤ M A a x S e q N u m -1 ,其中M a x Seq N u m 是可用序号数。这就够了吗?答案取决于RW S 。如果RW S = 1,那么MaxSeqNum≥SWS+1是足够了。如果RW S等于S W S,那么有一个只比发送窗口尺寸大1的M a x S e q N u m是不够的。为看清这一点,考虑有8个序号0 ~ 7的情况,并且S W S = RW S = 7。假设发送方传输帧0 ~ 6,并且接收方成功接收,但A C K丢失。接收方现在希望接收帧7,0 ~ 5,但发送方超时,然后发送帧0 ~ 6。不幸的是,接收方期待的是第二次的帧0 ~ 5,得到的却是第一次的帧0 ~ 5。这正是我们想避免的情况。
    结果是,当RW S = S W S时,发送窗口的大小不能大于可用序号数的一半,或更准确地说,SWS<(Maxseqnum+1)/2直观地,这说明滑动窗口协议是在序号空间的两半之间变换,就像停止等待协议的序号是在0和1之间变换一样。唯一的区别是,它在序号空间的两半之间连续滑动而不是离散的变换。
    注意,这条规则是特别针对RW S = S W S的。我们把确定适用于RW S和S W S的任意值的更一般的规则留做一个练习。还要注意,窗口的大小和序号空间之间的关系依赖于一个很明显以至于容易被忽略的假设,即帧在传输中不重新排序。这在直连的点到点链路上不能发生,因为在传输过程中一个帧不可能赶上另一个帧。然而,我们将在第5章看到用在一个不同环境中的滑动窗口算法,并且需要设计另一条规则。
     
    3. 滑动窗口的实现

    下面的例程说明我们如何实现滑动窗口算法的发送和接收的两个方面。该例程取自一个正在使用的协议,称为滑动窗口协议S W P(Sliding Window Pro t o c o l)。为了不涉及协议图中的邻近协议,我们用H L P(高层协议)表示S W P上层的协议,用L I N K(链路层协议)表示S W P下层的协议。我们先定义一对数据结构。首先,帧头部非常简单:它包含一个序号( S e q N u m)和一个确认号( A c k N u m)。它还包含一个标志( F l a g s)字段,表明帧是一个A C K帧还是携带数据的帧。

    其次,滑动窗口算法的状态有如下结构。对于协议发送方,该状态包括如上所述的变量L A R和L F S,以及一个存放已发出但尚未确认的帧的队列( s e n d Q)。发送方状态还包含一个计数信号量( counting semaphore),称为s e n d Wi n d o w N o t F u l l。下面我们将会看到如何使用它,但一般来说,信号量是一个支持s e m Wa i t和s e m S i g n a l操作的同步原语。每次调用S e m S i g n a l,信号量加1,每次调用S e m Wa i t,信号量减1。如果信号量减小,导致它的值小于0,那么调用进程阻塞(挂起)。一旦执行了足够的s e m S i g n a l操作而使信号量的值增大到大于0,在调用s e m Wa i t的过程中阻塞的进程就允许被恢复。
    对于协议的接收方,如前所述,该状态包含变量L F R ,加上一个存放已收到的错序帧的队列(r e c v Q)。最后,虽然未显示,发送方和接收方的滑动窗口的大小分别由常量S W S和RW S表示。

    S W P的发送方是由s e n d S W P过程实现的。这个例程很简单。首先, s e m Wa i t使这个进程在一个信号量上阻塞,直到它可以发另一帧。一旦允许继续, s e n d S W P设置帧头部中的顺序号,将此帧的拷贝存储在发送队列( s e n d Q)中,调度一个超时事件以便处理帧未被确认的情况,并将帧发给低层协议。
    值得注意的一个细节是刚好在调用m s g A d d H d r之前调用s t o r e _ s w p _ h d r。该例程将存有S W P头部的C语言结构( s t a t e - > h d r)转化为能够安全放在消息前面的字节串( h b u f)。该例程(未给出)必须将头部中的每一个整数字段转化为网络字节顺序,并且去掉编译程序加入C语言结构中的任意填充。7 . 1节将详细讨论字节顺序的问题,但现在,假设该例程将多字整数中最高有效位放在最高地址字节就足够了。
    这个例程的另一个复杂性是使用s e m Wa i t 和s e n dW i n d o w N o t F u l l 信号量。S e n dWi n d o w N o t F u l l被初始化为发送方滑动窗口的大小S W S(未给出这一初始化)。发送方每传输一帧, s e m Wa i t操作将这个数减1,如果减小到0,则阻塞发送方进程。每收到一个A C K,在d e l i v e r S W P中调用s e m S i g n a l操作(见下面)将此数加1,从而激活正在等待的发送方进程。

    在继续介绍S W P的接收方之前,需要调整一个看上去不一致的地方。一方面,我们说过,高层协议通过调用s e n d操作来请求低层协议的服务,所以我们就希望通过S W P发送消息的协议能够调用s e n d(S W P, p a c k e t)。另一方面,用来实现S W P的发送操作的过程叫做s e n d S W P,并且它的第一个参数是一个状态变量( S w p S t a t e)。结果怎样呢?答案是,操作系统提供了粘结代码将对s e n d的一般调用转化为对s e n d S W P的特定协议调用的粘结代码。这个粘结代码将s e n d的第一个参数(协议变量S W P)映射为一个指向s e n d S W P的函数指针和一个指向S W P工作时所需的协议状态的指针。我们之所以通过一般函数调用使高层协议间接调用特定协议函数,是因为我们想限制高层协议中对低层协议编码的信息量。这使得将来能够比较容易地改变协议图的配置。现在来看d e l i v e r操作的S W P的特定协议实现,它在过程d e l i v e r S W P中实现。这个例程实际上处理两种不同类型的输入消息:本结点已发出帧的A C K和到达这个结点的数据帧。在某种意义上,这个例程的ACK部分是与send SWP中所给算法的发送方相对应的。通过检验头部的F l a g s字段可以确定输入的消息是ACK还是一个数据帧。注意,这种特殊的实现不支持数据帧中捎带A C K。当输入帧是一个ACK时,delive rSWP仅仅在发送队列(send Q)中找到与此ACK相应的位置(slot),取消超时事件,并且释放保存在那一位置的帧。由于A C K可能是累积的,所以这项工作实际上是在一个循环中进行的。对于这种情况值得注意的另一个问题是子例程swp In Wind o w的调用。这个子例程在下面给出,它确保被确认帧的序号是在发送方当前希望收到的A C K的范围之内。
    当输入帧包含数据时, d e l i v e r S W P首先调用m s g S t r i p H d r和l o a d _ s w p _ h d r以便从帧中提取头部。例程l o a d _ s w p _ h d r对应着前面讨论的s t o r e _ s w p _ h d r,它将一个字节串转化为容纳S W P头部的C语言数据结构。然后d e l i v e r S W P调用s w p I n Wi n d o w以确保帧序号在期望的序号范围内。如果是这样,例程在已收到的连续的帧的集合上循环,并通过调用d e l i v e r H L P例程将它们传给上层协议。它也要向发送方发送累积的A C K,但却是通过在接收队列上循环来实现的(它没有使用本节前面给出的s e q N u m To A c k变量)。

     

    最后,s w p I n Window 是一个简单的子例程,它检查一个给定的序号是否落在某个最大和最小顺序号之间。

     
    4. 帧顺序和流量控制

    滑动窗口协议可能是计算机网络中最著名的算法。然而,关于该算法易产生混淆的是,它可以有三个不同的功能,第一个功能是本节的重点,即在不可靠链路上可靠地传输帧。(一般来说,该算法被用于在一个不可靠的网络上可靠地传输消息。)这是该算法的核心功能。
    滑动窗口算法的第二个功能是用于保持帧的传输顺序。这在接收方比较容易实现,因为每个帧有一个序号,接收方要保证已经向上层协议传递了所有序号比当前帧小的帧,才向上传送该当前帧。即,接收方缓存了(即没有传送)错序的帧。本节描述的滑动窗口算法确实保持了帧的顺序,尽管我们可以想象一个变异,即接收方没有等待更早传送的帧都到达就将帧传给下一个协议。我们可以提出的一个问题是:我们是否确实需要滑动窗口协议来保持帧的顺序,或者,这样的功能在链路层是否是不必要的。不幸的是,我们还没有看到足够多的网络体系结构来回答这个问题我们首先需要理解的是,点到点链路序列如何由交换机连接而形成一条端到端的路径。
    滑动窗口算法的第三个功能是,它有时支持流量控制(f l o w c o n t ro l),它是一种接收方能够控制发送方使其降低速度的反馈机制。这种机制用于抑制发送方发送速度过快,即抑制传输比接收方所能处理的更多的数据。这通常通过扩展滑动窗口协议完成,使接收方不仅确认收到的帧,而且通知发送方它还可接收多少帧。可接收的帧数对应着接收方空闲的缓冲区数。在按序传递的情况下,在将流量控制并入滑动窗口协议之前,我们应该确信流量控制在链路层是必要的。
    尚未讨论的一个重要概念是系统设计原理,我们称其为相关性分离(separation of concerns)。即,你必须小心区别有时交织在一种机制中的不同功能,并且你必须确定每一个功能是必要的,而且是被最有效的方式支持的。在这种特定的情况下,可靠传输、按序传输和流量控制有时组合在一个滑动窗口协议里,我们应该问问自己,在链路层这样做是否正确。带着这样的疑问,我们将在第3章(说明X. 2 5网如何用它实现跳到跳的流量控制)和第5章(描述T C P如何用它实现可靠的字节流信道)重新考虑滑动窗口算法。
    展开全文
  • 后来才清楚其中道理,比如opencv中自带的行人检测模块,就是使用多尺度滑动窗口来提取n个检测窗口,并记录窗口的坐标,最后再将这些检测的子窗口送入分类器。 多尺度滑动窗口(以行人检测为例)主要包括两个部分一...

    在行人检测中总是需要将一张大的图像切分成和训练样本一样大小的图像,包括其他的识别和检测任务一样,也需要这一步。刚开始研究阶段不是很明白如何在一张大的图像中精准的找到行人检测的那个识别框。后来才清楚其中道理,比如opencv中自带的行人检测模块,就是使用多尺度滑动窗口来提取n个检测窗口,并记录窗口的坐标,最后再将这些检测的子窗口送入分类器。

    多尺度滑动窗口(以行人检测为例)主要包括两个部分一个是滑动窗口来提取大小为128*64窗口大小的图像,然后再对大图进行缩放,在进行滑动窗口,具体的算法如下

    1.首先输入一张待检测的图像I,然后用设在scale=x(x>1),在scale尺度下通过滑动提取的子窗口集合为Y=【img1、img2、、、】

    2.利用滑动窗口法在图像I上提取子图像,这是有两部分参数需要设置,首先是窗口的大小比如128*64,再者是滑动的步 长,比如每次滑动为K个像素,子窗口Yi=【img1、img2、、、】。

    3.对图像I进行缩放I=I*(1/scale)返回步骤二执行

    4,停止条件如果I<128*64的话,那么跳出循环


    随着图像的缩小,提取到的子图像数目也在减少,例如在第五次循环结束,那么m1层数量>m2m1层数量>m3m1层数量>m4m1层数量>m5m1层数量,其中img(pq),为第p层的第q个窗口。如下图,所示,是不是很想金字塔,这也是图像金字塔这个名字的由来。

    m5                                            img51 img52

    m4                                   img41 img42 img43 img44

    m3                     img31 img32 img33 img34 img35 img36

    m2        img21 img22 img23 img24 img25 img26 img27 img28

    m1  img11 img12 img13 img14 img15 img16 img17 img18 img19 img10 


    不足之处,欢迎指正


    展开全文
  • \qquad对于之前的图像问题多数是图像分类,首先将一个图片输入到神经网络中,然后通过多层卷积运算,最后经过几个全连接层,交给Softmax得到分类预测概率向量。 \qquad对于目标检测算法,输出标签需要增加边界框四...

    声明:本文引用吴恩达教授的DeepLearning课程内容。

    1.目标检测基本概念
    对于之前的图像问题多数是图像分类,首先将一个图片输入到神经网络中,然后通过多层卷积运算,最后经过几个全连接层,交给Softmax得到分类预测概率向量。
    对于目标检测算法,输出标签需要增加边界框四个参数(有一些不同的表示方法:1.中心点、长、宽;2.左下角坐标、右上角坐标;3.左下角坐标,长,宽;但是原理都是一样的)。

    2.基于滑动窗口的目标检测算法
    首先固定一个卷积区域,然后将卷积核在图像上按照指定步长进行滑动,对于每一次的滑动得到区域进行预测,判断该区域中存在目标的概率。
    这里写图片描述
    滑动窗口目标检测算法也有很明显的缺点,就是计算成本,因为你在图片中剪切出太多小方块,卷积网络要一个个地处理。如果你选用的步幅很大,显然会减少输入卷积网络的窗口个数,但是粗糙间隔尺寸可能会影响性能。反之,如果采用小粒度或小步幅,传递给卷积网络的小窗口会特别多,这意味着超高的计算成本。

    3.卷积的滑动窗口实现

    Andrew Ng在视频中使用的网络结构如图:

    这里写图片描述
    假设对象检测算法输入一个14×14×3的图像,假设对象检测算法输入一个14×14×3的图像。假设对象检测算法输入一个14×14×3的图像y。
    我们使用卷积层对全连接层进行替换。至于为什么需要使用卷积层对全连接层进行替换?因为本身在窗口滑动以及多尺度检测的时候运算量会大幅度上升,本身全连接层的运算量非常大,所以使用卷积操作进行替换,提升速度。
    对于全连接层,我们可以用5×5的过滤器来实现,数量是400个(编号1所示),输入图像大小为5×5×16,用5×5的过滤器对它进行卷积操作,过滤器实际上是5×5×16,因为在卷积过程中,过滤器会遍历这16个通道,所以这两处的通道数量必须保持一致,输出结果为1×1。假设应用400个这样的5×5×16过滤器,输出维度就是1×1×400,我们不再把它看作一个含有400个节点的集合,而是一个1×1×400的输出层。从数学角度看,它和全连接层是一样的,因为这400个节点中每个节点都有一个5×5×16维度的过滤器,所以每个值都是上一层这些5×5×16激活值经过某个任意线性函数的输出结果。我们再添加另外一个卷积层(编号2所示),这里用的是1×1卷积,假设有400个1×1的过滤器,在这400个过滤器的作用下,下一层的维度是1×1×400,它其实就是上个网络中的这一全连接层。最后经由1×1过滤器的处理,得到一个softmax激活值,通过卷积网络,我们最终得到这个1×1×4的输出层,而不是这4个数字(编号3所示)。
    这里写图片描述
    在训练阶段的输入是14×14×3的输入图像,然后经过一系列的卷积运算,得到1×1×4的输出。对于检测阶段,在这个16×16×3的小图像上滑动窗口,卷积网络运行了4次,于是输出了了4个标签。该卷积操作的原理是我们不需要把输入图像分割成四个子集,分别执行前向传播,而是把它们作为一张图片输入给卷积网络进行计算,其中的公共区域可以共享很多计算,就像这里我们看到的这个4个14×14的方块一样。

    展开全文
  • 假设你正在构建一个人脸识别应用,出于某种原因,你希望算法可以给出眼角的具体位置。眼角坐标为(x,y),你可以让神经网络的最后一层多输出两个数字lx和ly,作为眼角的坐标值。如果你想知道两只眼睛的四个眼角的...
  • 上节课,我们学习了如何通过卷积网络实现滑动窗口对象检测算法,但效率很低。这节课我们讲讲如何在卷积层上应用这个算法。 为了构建滑动窗口的卷积应用,首先要知道如何把神经网络的全连接层转化成卷积层。我们先...
  • 滑动窗口的卷积实现和减少计算成本
  • 1.利用opencv实现图像滑动窗口操作   功能:利用opencv实现图像滑动窗口操作(即利用已知尺寸的窗口遍历整幅图像,形成许多子图像)  vs2015+opencv3.1  2016.10 函数实现 #ifndef SLIDINGWND_H_ #define ...
  • 你要的答案或许都在这里:小鹏的博客目录 人脸检测:cascade cnn,mtcnn,都可以通过下面代码复现。但是下面的实现是比较low的,后面更新FCN的方法。 注意mtcnn的标签加了回归框,训练时候的输出层要作修改:(回归...
  • 事情的起源要从工程车说起,工程车识别弹药箱上的那个圆,然后将其圆心给下位机,但因为图像处理的关系,识别到的圆心是很不稳定的,所以师兄就让我写个队列,存五个数据求个平均值发给下位机。 然后我才大二上学期...
  • 图像处理——SURF算法

    2019-10-15 12:10:15
    首先感谢以下3位的渊博知识,帮助我理解SURF算法: (1)☆Ronny丶 https://www.cnblogs.com/ronny/p/4045979.html (2)-牧野- http://blog.csdn.net/dcrmg/article/details/52601010 (2)-牧野- ...
  • 滑动窗口图像中可能剪切出不同大小的图像块,但是很多分类器只取固定大小的图像,所以这些图像是经过变形转换的。但是这样做并不影响准确率,因为分类器可以处理变形后的图像。 变形图像被输入到CNN中,提取40...
  • 上节,我们学习了如何通过卷积网络实现滑动窗口对象检测算法,但效率很低。这节我们讲讲如何在卷积层上应用这个算法。 为了构建滑动窗口的卷积应用,首先要知道如何把神经网络的全连接层转化成卷积层。我们先讲解这...
  • 4.3目标检测 ...判断图像中的对象是不是汽车–Image classification 图像分类 不仅要判断图片中的物体还要在图片中标记出它的位置–Classification with localization定位分类 当图片中有 多个 对象时...
  • 1单匹配: 测试图片:   code: #include <opencv\cv.h>#include <opencv\highgui.h>#include <opencv\cxcore.h>... /*模板匹配法 --图片查找滑动窗口的原理 用等大小的模板窗口...
  • 最近采集压力传感器的电压信号,采集到的数据波动挺大的,所以采用滤波的方法进行处理一下。  因为在matlab中依靠matlab的画图函数很容易看到滤波后的数据图像,进而验证滤波效果。最后选择滤波效果好的滤波方法...
  • 原始素材 ...对于这种情况,做图像增强是不可能的,前景和背景都横跨了颜色空间的大部分。 方法1:使用全局阈值的方法 目标最明显的特征是颜色,所以使用hsv或者lab颜色空间,根据人为指定的前景区...
  • VINS理论与代码详解5——基于滑动窗口的单目视觉紧耦合后端优化模型  终于讲到了真正的视觉惯性紧耦合系统了,(在这里插一句,算是写博客和学习一个SLAM系统的心得吧,一开始我们可能抱着一个必胜的心态打算征服...
1 2 3 4 5 ... 20
收藏数 9,928
精华内容 3,971