上下文

论文翻译之Enriched Feature Guided Refinement Network for Object Detection

可紊 提交于 2019-12-18 06:33:34
摘要 我们提出了一个单阶段检测框架,该框架解决了多尺度目标检测和类不平衡的问题。我们没有设计更深层的网络,而是引入了一种简单而有效的特征丰富化方案来生成多尺度的上下文特征。我们进一步引入了一种级联的优化(精炼)方案,该方案首先将多尺度的上下文特征注入到一阶段检测器的预测层中,以增强其进行多尺度检测的判别能力。 其次,级联精炼方案通过细化锚(anchors)和丰富的特征以改善分类和回归来解决类不平衡问题。 实验在两个基准上执行:PASCAL VOC和MSCOCO。 对于MS COCO测试上的320×320输入,我们的检测器在单尺度推理的情况下以33.2的COCO AP达到了最先进的一阶段检测精度,操作是在一个Titan XP GPU上以21毫秒运行的 。 对于MS COCO测试上的512×512输入,与最佳报告的单阶段结果相比,就COCO AP而言,我们的方法获得了一个明显的增加(增加了1.6%)[5]。源代码和模型可在以下位置获得:https://github.com/Ranchentx/EFGRNet. 1. 介绍 目标检测是众多现实应用中的一个活跃的研究问题。 基于卷积神经网络(CNN)的现代目标检测方法可分为两类:(1)两阶段方法[33,23],以及(2)一阶段方法[27,32]。两阶段方法首先生成目标建议,然后对这些建议进行分类和回归

js中generator函数的原理和使用

非 Y 不嫁゛ 提交于 2019-12-18 05:02:29
generator又名生成器函数,它是一个崭新的函数类型,它和标准的普通函数完全不同。通过显式的调用生成器函数,能对应的产生一个新的值。通过多次调用后,产生一组值的序列,直到生成器告诉我们无法在产生新的值了。每当生成器函数产生一个新值后,它的执行状态会被保留,直到下次请求到来,它就会从上次离开的位置恢复执行。 1、如何定义generator函数 下面我们来看一个简单的例子: // 通过在function后面添加星号*来定义生成器函数 function* myGenerator() { // 使用关键字yield产生值 yield "first"; yield "second"; yield "third"; } // 生成迭代器gen let gen = myGenerator(); console.log(gen.next()); console.log(gen.next()); console.log(gen.next()); console.log(gen.next()); 上述例子首先定义了一个生成器函数,它能够产生一系列的值。创建生成器函数非常简单,只要在function后面加上一个星号(*)。然后只要在函数体内部使用关键字yield,就能产生值了。 要使用生成器函数,需要先对它进行调用,并生成迭代器gen。 let gen = myGenerator();

flask请求上下文源码分析

拜拜、爱过 提交于 2019-12-18 04:16:41
一、什么是上下文 每一段程序都有很多外部变量,只有像add这种简单的函数才是没有外部变量的,一旦你的一段程序有了外部变量,这段程序就不完整了,不能独立运行,你为了使他们能运行,就要给所有的外部变量一个一个写一些值进去,这些值的集合就叫上下文 比如:在flask中,视图函数需要知道它执行情况的请求信息(请求的url,参数,方法等),以及应用信息,(应用中初始化的数据库等),才能够正确运行。 最直观地做法是把这些信息封装成一个对象,作为参数传递给视图函数。但是这样的话,所有的视图函数都需要添加对应的参数,即使该函数内部并没有使用到它。 flask 的做法是把这些信息作为 类似全局变量的东西 ,视图函数需要的时候,可以使用 from flask import request 获取。但是这些对象和全局变量不同的是——它们必须是动态的,因为在多线程或者多协程的情况下,每个线程或者协程获取的都是自己独特的对象,不会互相干扰。 那么如何实现这种效果呢?如果对 python 多线程比较熟悉的话,应该知道多线程中有个非常类似的概念 threading.local ,可以实现多线程访问某个变量的时候只看到自己的数据。内部的原理说起来也很简单,这个对象有一个字典,保存了线程 id 对应的数据,读取该对象的时候,它动态地查询当前线程 id 对应的数据。flask 上下文的实现也类似。 二

如何一步一步用DDD设计一个电商网站(一)—— 先理解核心概念

試著忘記壹切 提交于 2019-12-17 20:07:58
本系列所有文章 如何一步一步用DDD设计一个电商网站(一)—— 先理解核心概念 如何一步一步用DDD设计一个电商网站(二)—— 项目架构 如何一步一步用DDD设计一个电商网站(三)—— 初涉核心域 如何一步一步用DDD设计一个电商网站(四)—— 把商品卖给用户 如何一步一步用DDD设计一个电商网站(五)—— 停下脚步,重新出发 如何一步一步用DDD设计一个电商网站(六)—— 给购物车加点料,集成售价上下文 如何一步一步用DDD设计一个电商网站(七)—— 实现售价上下文 如何一步一步用DDD设计一个电商网站(八)—— 会员价的集成 如何一步一步用DDD设计一个电商网站(九)—— 小心陷入值对象持久化的坑 如何一步一步用DDD设计一个电商网站(十)—— 一个完整的购物车 如何一步一步用DDD设计一个电商网站(十一)—— 最后的准备 如何一步一步用DDD设计一个电商网站(十二)—— 提交并生成订单 如何一步一步用DDD设计一个电商网站(十三)—— 领域事件扩展 阅读目录 前言 名词解释 实施DDD的关键 如何构建一个领域的上下文映射图 构建我们的上下文映射图 结语 一、前言 DDD(领域驱动设计)的一些介绍网上资料很多,这里就不继续描述了。自己使用领域驱动设计摸滚打爬也有2年多的时间,出于对知识的总结和分享,也是对自我理解的一个公开检验

作用域链

断了今生、忘了曾经 提交于 2019-12-17 08:42:44
在 《JavaScript深入之执行上下文栈》 中讲到,当JavaScript代码执行一段可执行代码(executable code)时,会创建对应的执行上下文(execution context)。 对于每个执行上下文,都有三个重要属性: 变量对象(Variable object,VO) 作用域链(Scope chain) this 今天重点讲讲作用域链。 作用域链 在 《JavaScript深入之变量对象》 中讲到,当查找变量的时候,会先从当前上下文的变量对象中查找,如果没有找到,就会从父级(词法层面上的父级)执行上下文的变量对象中查找,一直找到全局上下文的变量对象,也就是全局对象。这样由多个执行上下文的变量对象构成的链表就叫做作用域链。 下面,让我们以一个函数的创建和激活两个时期来讲解作用域链是如何创建和变化的。 函数创建 在 《JavaScript深入之词法作用域和动态作用域》 中讲到,函数的作用域在函数定义的时候就决定了。 这是因为函数有一个内部属性 [[scope]],当函数创建的时候,就会保存所有父变量对象到其中,你可以理解 [[scope]] 就是所有父变量对象的层级链,但是注意:[[scope]] 并不代表完整的作用域链! 举个例子: function foo() { function bar() { ... } } 函数创建时,各自的[[scope]]为:

HTML 学习笔记 (canvas 基础)

我的未来我决定 提交于 2019-12-16 22:33:36
1.什么是Canvas canvas就是一个画布,可以进行画任何的线,图形,填充等一系列操作。这一切都是用Js操作的,另外Canvas不仅仅提供简单的二维矢量绘图,也提供了三维的绘图,以及图片处理等一系列的api支持。 创建canvas标签 <!--创建canvas元素--> <canvas id="myCanvas"></canvas> 上面的标签只是一个画布,Id属性是必须的,后面要用Id来拿到当前的Canvas的Dom对象。通过此Canvase的Dom对象就可以获取他的上下文了,Canvas绘制图形都是靠着Canvas对象的上下文对象. var myCanvas; window.onload = function() { myCanvas = document.getElementById("myCanvas"); //获取上下文 var context = myCanvas.getContext("2d"); } Context默认的有两种绘制模式:第一种绘制线(stroke) 第二种填充(fill) 使用canvas 画一个 Canvas绘制的总体的步骤 创建HTML页面,设置画布标签 编写js,获取画布dom对象 通过Canvas标签的Dom对象获取上下文 设置绘制线样式、颜色 绘制矩形,或者填充矩形 使用canvas绘制矩形 <body> <!--创建canvas元素

微服务 SpringBoot 2.0(四):启动剖析之SpringApplication.run

喜你入骨 提交于 2019-12-16 21:12:40
我以为只是运行了个main方法,可却启动了服务 —— Java面试必修 引言 前一章我们讲解了启动原理的 @SpringBootApplication 部分,仔细跟着看代码还是很好理解,若需观看 @SpringBootApplication 注解部分请点击,接下来这章主要讲解run方法运行部分,run方法运行这里很枯燥乏味,所以请带好你的精气神,准备好水,因为实在是太干了。 运行启动 工具 SpringBoot版本:2.0.4 开发工具:IDEA 2018 Maven:3.3 9 JDK:1.8 我们继续看这段启动代码 @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } } SpringApplication.run分析 分析该方法主要分两部分,一是 SpringApplication 实例化,二是run方法的执行。 #该方法返回一个ConfigurableApplicationContext对象 SpringApplication.run(MySpringConfigurationApp.class, args);//参数1-应用入口的类

TypeScript Type Innference(类型推断)

夙愿已清 提交于 2019-12-16 19:31:56
在这一节,我们将介绍TypeScript中的类型推断。我们将会讨论类型推断需要在何处用到以及如何推断。 基础 在TypeScript中,在几个没有明确指定类型注释的地方将会使用类型推断来提供类型信息。 var x = 3; 变量"x"的值被推断为number。这种推断发生在变量或者成员初始化、设置参数默认值、决定函数返回类型的时候。 最佳公共类型 当需要从多个表达式中进行类型推断的时候,这些表达式的类型将会用来推断出一个"最佳公共类型"。例如: var x = [0, 1, null]; 要想推断出什么例子中"x"的类型,我们需要考虑每个数组元素的类型。这里,我们给出了两个数组类型的选择:number和null。最佳公共类型算法要求考虑到所有候选的类型,并选择出与所有候选类型兼容的类型。(这里的类型可为Array<number>) 由于最佳公共类型是从提供的候选类型中选择的,有些情况下,候选类型共享一个共同类型,但没有任何一个类型是所有候选类型的父类型。例如: class Animal { name:string; constructor(theName: string) { this.name = theName; } } class Snake extends Animal{ constructor(name: string) { super(name); } } class

Dockerfile 中的 COPY 与 ADD 命令

老子叫甜甜 提交于 2019-12-16 14:03:48
Dockerfile 中提供了两个非常相似的命令 COPY 和 ADD,本文尝试解释这两个命令的基本功能,以及其异同点,然后总结其各自适合的应用场景。 Build 上下文的概念 在使用 docker build 命令通过 Dockerfile 创建镜像时,会产生一个 build 上下文(context)。所谓的 build 上下文就是 docker build 命令的 PATH 或 URL 指定的路径中的文件的集合。在镜像 build 过程中可以引用上下文中的任何文件,比如我们要介绍的 COPY 和 ADD 命令,就可以引用上下文中的文件。 默认情况下 docker build -t testx . 命令中的 . 表示 build 上下文为当前目录。当然我们可以指定一个目录作为上下文,比如下面的命令: $ docker build -t testx /home/nick/hc 我们指定 /home/nick/hc 目录为 build 上下文,默认情况下 docker 会使用在上下文的根目录下找到的 Dockerfile 文件。 COPY 和 ADD 命令不能拷贝上下文之外的本地文件 对于 COPY 和 ADD 命令来说,如果要把本地的文件拷贝到镜像中,那么本地的文件必须是在上下文目录中的文件。其实这一点很好解释,因为在执行 build 命令时, docker

Linux性能优化系列---CPU 上下文切换(下)

故事扮演 提交于 2019-12-16 00:36:36
怎么查看系统的上下文切换情况 通过前面学习我们知道,过多的上下文切换,会把 CPU 时间消耗在寄存器、内核栈以及虚拟内存等数据的保存和恢复上,缩短进程真正运行的时间,成了系统性能大幅下降的一个元凶。 既然上下文切换对系统性能影响那么大,你肯定迫不及待想知道,到底要怎么查看上下文切换呢?在这里,我们可以使用 vmstat 这个工具,来查询系统的上下文切换情况。 vmstat 是一个常用的系统性能分析工具,主要用来分析系统的内存使用情况,也常用来分析 CPU 上下文切换和中断的次数。 比如,下面就是一个 vmstat 的使用示例: # 每隔 5 秒输出 1 组数据 [root@node2 ~]# vmstat 5 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 0 7113928 2108 562564 0 0 0 65 133 203 0 0 100 0 0 我们一起来看这个结果,你可以先试着自己解读每列的含义。在这里,我重点强调下,需要特别关注的四列内容: cs(context switch)是每秒上下文切换的次数。 in(interrupt