fast

Rcnn/Faster Rcnn/Faster Rcnn的理解

混江龙づ霸主 提交于 2020-02-06 14:29:48
基于候选区域的目标检测器 1. 滑动窗口检测器 根据滑动窗口从图像中剪切图像块-->将剪切的图像块warp成固定大小-->cnn网络提取特征-->SVM和regressor进行分类和回归定位 选择性搜索 2. R-CNN R-CNN 利用候选区域方法创建了约 2000 个 ROI --> 将每个ROI区域warp成固定大小的图像--> CNN网络提取特征- -> SVM和regressor进行分类和回归定位; 3. Fast R-CNN Fast R-CNN 使用 特征提取器(CNN) 先提取整个图像的特征( 而不是从头开始对每个图像块提取多次 )--> 在特征图上,利用候选区域方法得到ROI区域,并在对应的特征图上裁剪以得到特征图块--> 将这些特征图块warp成固定大小--> 输入CNN网络提取特征--> svm/regressor 进行分类和回归; 4. Faster R-CNN Faster R-CNN 采用与 Fast R-CNN 相同的设计,只是它用 内部深层网络 代替了 候选区域方法 。新的候选区域网络(RPN)在生成 ROI 时效率更高,并且以每幅图像 10 毫秒的速度运行。 参考:https://baijiahao.baidu.com/s?id=1598999301741831102&wfr=spider&for=pc 来源: https://www

sort()&sorted()

懵懂的女人 提交于 2020-02-06 07:17:09
列表的sort()和sorted()方法 sort()与sorted()的不同在于,sort是在原位重新排列列表,而sorted()是产生一个新的列表。 sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。 注:sorted不是列表方法。 1. sort ( ) 方法 sort函数的原型   sort ( key = None , reverse = False )   key 可指定一些规则,可以是k = int , k = len , k = function函数   reverse 默认值是 False   可以给它赋值成 True ,那就是反向排序   简单的列表排序 l = [ 1 , 7 , 4 , 9 , 2 , 3 , 5 , 0 , 8 , 6 ] l . sort ( ) print ( l ) 结果: [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ] #类表中嵌套其他数据类型,如字典 # a = [{'id':1,'name':'小明'},{'id':3,'name':'小红'},{'id':2,'name':'老王'}] # 根据字典的key值id进行降序排序并输出排序后的列表。 def function ( date ) : print ( date ) print ( date [

LeetCode高频题:链表(四)

别来无恙 提交于 2020-02-06 03:35:33
我们讲解的题目都是leetcode上经典的题目,而且我们的解答一定也是最简单最经典的 。今天带来两道关于链表的经典题。本期所用的链表的数据结构均如下: public class ListNode { int val ; ListNode next ; ListNode ( int x ) { val = x ; } } 143. 重排链表 题意:给定一个单链表 L:L0→L1→…→Ln-1→Ln , 将其重新排列后变为: L0→Ln→L1→Ln-1→L2→Ln-2→… 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。如图: 这道题是leetcode经典的绕来绕去的题目,我们来看一下粉丝投稿的代码是怎么样的: ListNode tailNode = null ; public void reorderList ( ListNode head ) { if ( head == null ) return ; ListNode firstNode = head ; ListNode lastNode = head ; while ( lastNode . next != tailNode ) lastNode = lastNode . next ; tailNode = lastNode ; if ( firstNode == lastNode ) { firstNode

leetcode解题之环形链表

允我心安 提交于 2020-02-05 10:36:33
给定一个链表,判断链表中是否有环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。 示例 1: 输入:head = [3,2,0,-4], pos = 1 输出:true 解释:链表中有一个环,其尾部连接到第二个节点。 示例 2: 输入:head = [1,2], pos = 0 输出:true 解释:链表中有一个环,其尾部连接到第一个节点。 示例 3: 输入:head = [1], pos = -1 输出:false 解释:链表中没有环。 进阶: 你能用 O(1)(即,常量)内存解决此问题吗? 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/linked-list-cycle 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 想的比较简单,使用Object对象作为键保存链表中的节点,然后查找节点在map中是否存在,如果存在链表中就存在环 /** * Definition for singly-linked list. * class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * }

《剑指Offer》22. 链表中倒数第 K 个结点

爱⌒轻易说出口 提交于 2020-02-03 07:26:24
题目链接 牛客网 题目描述 输入一个链表,输出该链表中倒数第k个结点。 解题思路 快慢指针,相隔k个ListNode,fast==null时,返回slow public class Solution { public ListNode FindKthToTail ( ListNode head , int k ) { ListNode slow = head , fast = slow ; for ( int i = 0 ; i < k ; i ++ ) { if ( fast == null ) return null ; fast = fast . next ; } while ( fast != null ) { slow = slow . next ; fast = fast . next ; } return slow ; } } 来源: CSDN 作者: Melo丶 链接: https://blog.csdn.net/weixin_38611497/article/details/104147920

Fast R-CNN

∥☆過路亽.° 提交于 2020-02-01 17:19:13
  Fast R-CNN是对R-CNN、SPPnet的一个改进,主要是提高了训练和测试的速度,也提高了测试的精度。下面讲一讲这篇文章怎么实现速度和精度的提升的。 1.介绍 1.1 R-CNN网络的缺点 多阶段的训练。R-CNN的训练有三大步:用log损失微调CNN得到特征提取器;使用候选框的特征图训练SVMs分类器,这里抛弃的softmax分类器;训练bounding-box regressor精修候选框。 训练消耗大量的时间和空间。在训练SVMs和bounding-box regressor时候,需要保存每个候选框的特征图,这个特征图要几百G的空间。 目标检测很慢。测试的时候,是先提取候选框,再分别进行特征提取,这个过程有大量的冗余计算。 1.2 Fast R-CNN的工作 更高的mAP。 一次性训练参数(single-stage training),用multi-task loss实现一次性训练。 训练中可以更新所有的网络参数。 不需要额外保存特征图。 2. Fast R-CNN的结构、训练   Fast-RCNN的输入是:完整的图片、候选框集合;输出是K+1类别的概率分布、K个类别的refined参数。过程如下:   1)把原始图片送入CNN进行特征提取,得到特征图。   2)对于每个候选框对应的特征子图,RoI Pooling从中提取出固定长度的特征向量。   3

【CV】ckpt文件转为pb文件(fasterrcnn)

落爺英雄遲暮 提交于 2020-01-31 03:04:00
import tensorflow as tf from tensorflow . python . framework import graph_util from tensorflow . python import pywrap_tensorflow def freeze_graph ( input_checkpoint , output_graph ) : #指定输出的节点名称,该节点名称必须是原模型中存在的节点。直接用最后输出的节点,可以在tensorboard中查找到,tensorboard只能在linux中使用 output_node_names = "SCORE/resnet_v1_101_5/cls_prob/cls_prob/scores,SCORE/resnet_v1_101_5/bbox_pred/BiasAdd/bbox_pred/scores,SCORE/resnet_v1_101_5/cls_pred/cls_pred/scores" saver = tf . train . import_meta_graph ( input_checkpoint + '.meta' , clear_devices = True ) #通过 import_meta_graph 导入模型中的图----1 graph = tf . get_default_graph (

leetcode_142. 环形链表 II

蓝咒 提交于 2020-01-29 06:04:09
给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。 说明:不允许修改给定的链表。 示例 1: 输入:head = [3,2,0,-4], pos = 1 输出:tail connects to node index 1 解释:链表中有一个环,其尾部连接到第二个节点。 示例 2: 输入:head = [1,2], pos = 0 输出:tail connects to node index 0 解释:链表中有一个环,其尾部连接到第一个节点。 示例 3: 输入:head = [1], pos = -1 输出:no cycle 解释:链表中没有环。 进阶: 你是否可以不用额外空间解决此题? 解析:本题在 上一题 的基础上要求返回环的入口,而上一题的代码仅能够证明是否存在环。 以下是不怎么严谨的数学证明。 设快指针移动步数为f,慢指针移动步数为s 设链表从头节点到链表入口的距离为a,链表环的长度为b,则整个链表的长度为a+b 首先快指针每次移动两步,慢指针每次移动一步. f = 2 * s 当发生上一题的情况,即快指针与慢指针相遇时,必然发生了“套圈”现象。即快指针比满指针多绕环移动了n圈 f = s + n * b

LeetCode 876 Middle of the Llinked List(快慢指针)

落爺英雄遲暮 提交于 2020-01-28 16:24:05
题目链接: 点击这里 不带空的头结点。 思路:快指针一次前进两步,慢指针一次前进一步,当快指针到达链表尽头时,慢指针就处于链表的中间位置。 当链表的长度是奇数时,slow 恰巧停在中点位置;如果长度是偶数,slow 最终的位置是中间偏右。 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public : ListNode * middleNode ( ListNode * head ) { ListNode * fast = head , * slow = head ; while ( fast != NULL && fast - > next != NULL ) { fast = fast - > next - > next ; slow = slow - > next ; } return slow ; } } ; 来源: CSDN 作者: 菜是原罪QAQ 链接: https://blog.csdn.net/qq_42815188/article/details/104099708

55-链表中环的入口节点

你。 提交于 2020-01-28 12:50:50
给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。 假设x为环前面的路程(黑色路程),a为环入口到相遇点的路程(蓝色路程,假设顺时针走), c为环的长度(蓝色+橙色路程) 当快慢指针相遇的时候: 此时慢指针走的路程为Sslow = x + m * c + a 快指针走的路程为Sfast = x + n * c + a 2 Sslow = Sfast 2 * ( x + m*c + a ) = (x + n *c + a) 从而可以推导出: x = (n - 2 * m )*c - a = (n - 2 *m -1 )*c + c - a 即环前面的路程 = 数个环的长度(为可能为0) + c - a 什么是c - a?这是相遇点后,环后面部分的路程。(橙色路程) 所以,我们可以让一个指针从起点A开始走,让一个指针从相遇点B开始继续往后走, 2个指针速度一样,那么,当从原点的指针走到环入口点的时候(此时刚好走了x) 从相遇点开始走的那个指针也一定刚好到达环入口点。 所以2者会相遇,且恰好相遇在环的入口点。 最后,判断是否有环,且找环的算法复杂度为: 时间复杂度:O(n) 空间复杂度:O(1) /*function ListNode(x){ this.val = x; this.next = null; }*/ function EntryNodeOfLoop