精华内容
下载资源
问答
  • bounding box regression
  • dosbox汇编环境的安装和使用

    千次阅读 2019-04-21 18:47:40
    dosbox汇编环境的安装和使用 一,下载dosbox,尽量不要装在c dosbox下载地址:链接:https://pan.baidu.com/s/1VdDMkR5newJSci-UgNSSOg 提取码:it9f 二,下载masm文件, masm文件下载地址:链接:...

    dosbox汇编环境的安装和使用
    一,下载dosbox,尽量不要装在c
    dosbox下载地址:链接:https://pan.baidu.com/s/1EifPL-f5XpEItPF-40Zz3w
    提取码:4eja
    二,在d盘下创建一个dos文件,dos下创建一个masm和asm,下载下面给出masm文件,把link,edit,debug,masm,exe2bin里面放。asm里面放自己写的文件

    G9nLmNzZG4ubmV0L1RJQU5KSUFZVVVVVQ==,size_16,color_FFFFFF,t_70)在这里插入图片描述
    masm文件下载地址:链接:https://pan.baidu.com/s/1Kukr6IEyyVbHn65NPzi7mQ
    提取码:bjbk

    三, 将dos挂载到dosbox的驱动器下。例如挂载到dosbox的d驱动器下,即虚拟存在的d盘。有两种方法:

    1. 运行dosbox,输入Z:> mount d d:\dos。d是指dosbox的d盘,d:\dos是本机上工作目录dos的位置。

    2. 在dosbox的安装文件夹中找到Dosbox 0.74 Options.bat文件,在末尾增加:

    mount D D:\dos ;

    path=%path%;\masm ;

    D: ;

    cd \asm ;

    四,用笔记本打开一个文件,以.asm后缀保存到d:\dos\asm中(注意一定要是asm文件形式),然后看图。。。
    在这里插入图片描述在这里插入图片描述

    展开全文
  • Debug.exe和DOSBox合辑

    热门讨论 2014-06-26 23:21:10
    主要解决win8.1 64为环境下不能使用debug的问题
  • 汇编工具(DEBUG+MASM+EDIT+LINK+DOSBOX)

    热门讨论 2014-07-27 04:51:06
    包含汇编学习需要用到的基本工具,同时还包含了在WIN7(包含64位)环境下模拟DOS运行的工具-DOSBox。以下为包含的工具:debug.exe,edit.exe,link.exe,masm.exe,dosbox.exe,
  • Box2dWeb-2.1a.3

    热门讨论 2012-12-06 22:34:55
    重力框架Box2d的javascript版本2.1a.3。由box2dfalash改编成javascript 参考文档可以看:http://www.box2dflash.org/docs/2.1a/reference/和box2dflash的官方教程
  • dosbox使用教程创建masm5

    千次阅读 2019-10-22 14:48:42
    dosbox使用教程创建masm5安装dosbox配置挂载路径运行 安装dosbox 我安装的是老师上课用的dosbox-0.74,使用的masm是MASM5 百度网盘下载地址https://pan.baidu.com/s/1qDWuJOqcfHRIhlfChtXVIQ&shfl=sharepset 我...

    dosbox使用教程创建masm5

    安装dosbox

    我安装的是老师上课用的dosbox-0.74,使用的masm是MASM5
    百度网盘下载地址https://pan.baidu.com/s/1qDWuJOqcfHRIhlfChtXVIQ&shfl=sharepset

    我的安装目录是:D:\dosbox\DOSBox-0.74-3
    dosbox安装完成之后将MASM5复制放在D:\dosbox\DOSBox-0.74-3下,如图:
    在这里插入图片描述

    配置挂载路径

    在DOSBox 0.74 Options.bat的最后输入

    MOUNT C D:\dosbox\DOSBox-0.74-3\MASM5  # 将目录D:\dosbox\DOSBox-0.74-3\MASM5 挂载为DOSBOX下的C:
    set PATH=$PATH$;D:\dosbox\DOSBox-0.74-3\MASM5  # 将D:\dosbox\DOSBox-0.74-3\MASM5 写入环境变量PATH中
    

    这样就不用每次使用都需要挂载到相应的路径中

    运行

    双击桌面图标打开dosbox如图所示,若没有进行上一步,每次使用之前按下图格式挂载真实机器的路径
    在这里插入图片描述
    在D:\dosbox\DOSBox-0.74-3\MASM5下新建hello.txt文本文档,重命名为hello.asm;hello.asm用记事本打开,输入汇编程序保存。

    输入c:转C盘,然后可以直接用命令语句运行
    masm hello 汇编——产生OBJ二进制代码
    link hello连接——产生EXE可执行文件
    hello 运行hello文件

    在这里插入图片描述
    在这里插入图片描述
    到D:\dosbox\DOSBox-0.74-3\MASM5下可看见此过程中产生的文件在这里插入图片描述

    展开全文
  • box-sizing:border-box属性入手,来了解盒模型

    万次阅读 多人点赞 2018-06-20 14:02:00
    从最开始学习CSS的时候,就了解了盒模型的概念,今天,我们从其中的box-sizing:border-box;的属性入手,来重新认识一下盒模型在实际项目中的运用。 背景:先声明一下运用的场景,假如项目布局使用的是自适应的布局...

        从最开始学习CSS的时候,就了解了盒模型的概念,今天,我们从其中的box-sizing:border-box;的属性入手,来重新认识一下盒模型在实际项目中的运用。

        背景:先声明一下运用的场景,假如项目布局使用的是自适应的布局方式,div给出的宽度是百分比的形式,即框占窗口宽度的50%,但边界和内边距是用像素来表示的怎么办?为了避免这种问题,可以使用属性box-sizing来调整框模型。使用border-box,来将框模型更改成这个新的模型。

        注意:回顾一下,框的总宽度是width,padding-right,padding-left,border-right以及border-left属性之和,这就是造成上述背景下,样式不好调整的原因。

                box-sizing属性用于更改用于计算元素的宽度和高度默认的CSS盒子模型,可以使用此属性来模拟不正确支持CSS盒子模型规范的游览器行为。

    一、回顾基础

            (1)框属性的基本规范:

                文档的每个元素被构造成文档布局内的一个矩形框,框每层的大小都可以使用一些特定的CSS属性调整。相关属性如下:

    即width=content

                ①widthheight设置内容框(content box)的宽度和高度。内容框是框内容显示的区域--包括框内的文本内容,以及表示镶嵌子元素的其他框;

                ②padding表示一个CSS框内边距--这一层位于内容框的外边缘与边界的内边缘之间;

                ③border即CSS框的边界是一个分割层,位于内边距的外边缘以及外边距的内边缘之间;

                ④margin外边距代表CSS框周围的外部区域。

                (2)运用box-sizing:border-box属性下,框模型的变化

                

    width=content+padding+border(此时,当div的宽度为50%时,而border和padding为px时,那么content会随着实际的宽度进行自动缩放;)

             (3)来看看实际的例子:   

                ①设计稿如下所示:

                ②实际代码:

                本例子中,采用的是flex布局的方式,为了自适应,宽度width采用的是百分比%的形式,border,padding,margin采用的是px尺寸,所有外层的盒子运用了box-sizing:border-box;属性来改变盒子的结构,从而实现需求。

    <body>
    	<div class="clear_float">
    	     <div class="goods_cell">
    		  <div>
    		       <img class="img_goods" src="../images/img_goods.png" alt="">
    		  </div>
    		  <div class="text_goods">
    		       双宫茧桑蚕丝被
    		  </div>
    		  <div class="goods_price">
    		       <div class="price_span">活动秒杀价:</div>
    		       <div class="price_num">¥  499.00</div>
    		  </div>
    		  <div class="goods_seckill">
    		       <div class="seckill_left">仅剩<span>23:59:00</span></div>
    		       <div class="seckill_right">秒杀</div>
    		  </div>
    	      </div>
    	      <div class="goods_cell">
    	          <div>
    		      <img class="img_goods" src="../images/img_goods.png" alt="">
    	          </div>
    	          <div class="text_goods">
    		  双宫茧桑蚕丝被
    	          </div>
    	          <div class="goods_price">
    		       <div class="price_span">活动秒杀价:</div>
    		       <div class="price_num">¥  499.00</div>
    	          </div>
    	          <div class="goods_seckill">
    		       <div class="seckill_left">仅剩<span>23:59:00</span></div>
    		       <div class="seckill_right">秒杀</div>
    	          </div>
    	      </div>
    	      <div class="goods_cell">
    		   <div>
    			<img class="img_goods" src="../images/img_goods.png" alt="">
    		   </div>
    		   <div class="text_goods">
    			双宫茧桑蚕丝被
    		   </div>
    		   <div class="goods_price">
    			<div class="price_span">活动秒杀价:</div>
    			<div class="price_num">¥  499.00</div>
    		   </div>
    		   <div class="goods_seckill">
    			<div class="seckill_left">仅剩<span>23:59:00</span></div>
    			<div class="seckill_right">秒杀</div>
    		   </div>
    	       </div>
    	       <div class="goods_cell">
    		    <div>
    			<img class="img_goods" src="../images/img_goods.png" alt="">
    		    </div>
    		    <div class="text_goods">
    			双宫茧桑蚕丝被
    		    </div>
    		    <div class="goods_price">
    			 <div class="price_span">活动秒杀价:</div>
    			 <div class="price_num">¥  499.00</div>
    		    </div>
    		    <div class="goods_seckill">
    			 <div class="seckill_left">仅剩<span>23:59:00</span></div>
    			 <div class="seckill_right">秒杀</div>
    		    </div>
    		</div>
    	</div>
    </body>
    <style>
    .clear_float{
    	margin-bottom:20px;
    }
    .goods_cell{
    	width: 47%;
    	box-sizing: border-box;
    	padding: 10px;
    	float: left;
    	box-shadow: 0 0 6px 0 rgba(0,0,0,0.20);
    	border-radius: 10px;
    	font-size:13px;
    	color: #333333;
    	margin-left:15px;
    	margin-bottom:20px;
    }
    .clear_float>.goods_cell:nth-of-type(2n+1){
    	margin-left: 0;
    }
    .img_goods{
    	width:78.5px;
    	height:96px;
    	display: block;
    	margin: 0 auto;
    }
    .text_goods{
    	margin:10px 0;
    	color:#333333;
    	font-size:13px;
    }
    .goods_price{
    	font-size:18px;
    	color: #FF0845;
    	display: flex;
    	align-items: center;
    	justify-content: space-between;
    	margin-bottom:1px;
    }
    .goods_price .price_span{
    	font-size:8px;
    	color:#fa5754;
    	line-height:8px;
    }
    .goods_price .price_num{
    	font-size:16px;
    	color:#fa5754;
    	line-height:18px;	
    }
    .goods_seckill{
    	display: flex;
    	align-items: center;
    	justify-content: space-between;
    	box-sizing:border-box;
    	line-height:15px;
    	width:100%;
    	height:15px;
    }
    .goods_seckill .seckill_left{
    	width:70%;
    	padding:2.5px 0px;
    	font-size:10px;
    	color:#2d2d2d;
    	line-height:10px;
    	border:1px solid #999999;
    	border-right:1px solid #ff0845;
    	text-align:center;
    }
    .goods_seckill .seckill_right{
    	width:30%;
    	color:#ffffff;
    	background-color:#ff0845;
    	border:1px solid #ff0845;
    	font-size:10px;
    	line-height:10px;
    	padding:2.5px 8px;
    	text-align:center;
    }
    </style>

            ③在游览器上模拟的320px,375px和414px尺寸下,显示的效果图:

    二、盒模型的其他属性

            (1)margin,padding设置为百分比形式:

               <main>元素的内边距和外边距的各个边设置为5%,意味着“包含元素宽度的5%”,因此,随着示例输出窗口的大小增加,内边距和外边距也增加了。

            (2)margin可以接受负数,可以用来引起元素框的重叠:

              (3)背景裁剪(Background clip)属性:

                background-clip:border-box;背景被裁剪到边框盒;

                background-cilp:padding-box;背景被裁剪到内边距框;

                background-clip:content-box;背景被裁剪到内容框。

                可以看看以下效果图比较一下:

            (4)轮廓(Outline):

                一个框的outline是一个看起来像是边界但又不属于框模型的东西。它的行为和边界差不多,但是并不改变框的尺寸(更准确的说,轮廓被勾画于在框边界之外,外边距区域之内)。

                相关实例:在引入bootstrap框架时,input在360游览器(兼容模式)下显示,在获得焦点时外边框变蓝,这就是outline造成的影响,去掉只需要添加一个CSS样式即可,input:focus{outline:none;}

                详情介绍可以查看之前的文章:实现输入框input在获得焦点时外边框不变蓝  点击打开链接

            (5)CSS框类型,通过display属性来设定元素的框类型:

                最常见的display类型是:block,inline,inline-block,即块框(block box),行内框(inline box),行内块状框(inline-block box).

                    注意:默认状态下display属性值,块级元素display:block,行内元素display:inline。

                    不常见的类型display类型是:table,flex,grid.

                   display:table--允许你像处理table布局那样处理非table元素,而不是滥用HTML的<table>标签来达到同样的目的;

                     ②display:flex--允许你处理一些困扰CSS已久的一些传统布局问题,如布置一系列弹性等宽容器或者垂直居中内容(目前,flex布局在移动端使用较为广泛);

                      ③display:grid--给出一种简单实现CSS网络系统的方式,而在传统上它依赖于一些棘手难以处理的CSS网络框架。

               (6)框的高度    

                框的高度不遵守百分比的长度;框的高度总是采用框内容的高度,除非指定一个绝对的高度(如:px或者em),它会比在页面上默认是100%高度更实用。

                (7)盒的高级属性--设置宽和高的约束

                    ①通过min-width,max-width,min-height,max-height 属性,来设置大小约束,以更灵活的方式控制内容盒的大小:

                        这类情况通常用于响应式网页设计,将一个布局的外层容器的宽度设置为百分比形式。

    width:70%;
    max-width:1280px;
    min-width:480px;

                    然后,添加下句CSS使该容器在它的父容器内居中显示:

    margin:0 auto;

                    那么最终呈现的效果是:当父容器在最小和最大宽度限制内时,它将填满整个视口宽度;当父容器超过1280px宽度时,布局将保持在1280px宽,并开始在可用空间内居中。当宽度低于480px时,视口将小于容器,您必须滚动才能看到完全的内容。

                ②max-width属性的另一个好处是可以将容器内的媒体(如图像和视频)控制在容器内(响应式图片):

                在上述例子中,图像会引起一个问题--起初它的显示正常,但当容器变得比图像更窄时,图像开始溢流容器(因为它是一个固定的宽度)。解决这类问题,可以用以下CSS:

    display:block;
    margin:0 auto;
    max-width:100%;

                前两条属性display:block,margin:0 auto,使它的展示行为像一个块元素并且在父容器内居中。而max-width:100%限制了图像的宽度使它的最大宽度与父容器的宽度相等。因此,当父容器宽度缩小到小于图像的宽度时,图像会一起缩小。(这样,可以让图片最大只能是自己的宽度,成为响应式的图片)

                而这类运用最好的实例就是bootstrap框架中,图像的img-responsive类名的属性,在框架下,图像添加了img-responsive类名,就能达到在视口宽度不断变化的情况下,图像都可以达到响应式的缩放形式,这也是图像响应式的秘诀所在。

            三、总结

                   关于盒模型的总结,是从运用实例的角度来引入的,并未按照常规的顺序来进行梳理,如果大家想了解盒模型的完整知识,推荐查看MDN的盒模型讲解完整篇,点击打开链接,以及MDN再述盒模型篇,点击打开链接

                   如文章哪里有问题,欢迎大家留言进行指正,谢谢!

                    参考博客:框模型--学习WEB开发  点击打开链接

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

    展开全文
  • ssd网络详解之priorbox layer

    千次阅读 2018-08-09 10:30:15
    ssd 网络详解之priorbox layer ssd网络一大特点是,为了提高检测准确率,在不同尺度的特征图上进行预测,这种预测就需要prior box layer。 prior box 是干嘛的呢?其实非常类似于Faster R-CNN中的Anchors,就是...

    ssd 网络详解之priorbox layer

    本文原创,转载请注明出处:https://blog.csdn.net/dan_teng/article/details/81532013

    ssd网络一大特点是,为了提高检测准确率,在不同尺度的特征图上进行预测,这种预测就需要prior box layer。
    prior box 是干嘛的呢?其实非常类似于Faster R-CNN中的Anchors,就是候选框,这种候选框的选取不需要像R-CNN那样通过复杂处理产生。在ssd中,priorbox层只需要bottom层feature map的大小,就可以给出候选框。假设输入的feature map大小是W×H,生成的prior box中心就有W×H个,均匀分布在整张图上。在每个中心上,可以生成多个不同长宽比的prior box,如[1/3, 1/2, 1, 2, 3],每个点就可以生成length_of_aspect_ratio个框,所以在一个feature map上可以生成的prior box总数是W×H×length_of_aspect_ratio。
    这里写图片描述
    如上图b)所示,在8x8的feature map上,每个中心点生成了4个预选框。(c)是4x4的feature map,假设(c)是(b)后面的层,prior box参数相同,那么显然,从(b)中提取的预选框更有利于小尺度对象的检出,而从(c)中提取的预选框更有利于大尺度对象的检出(4x4的feature map 只有8x8 feature map长宽的1/2,相同参数的prior box圈出的面积相同,但是两个feature map对应于相同的原图,因此4x4 feature map上相同面积映射回原图相当于圈出了更大的面积,是8x8面积的4倍)。
    如上所述,SSD提取了不同尺度的feature map来做检测,大尺度特征图(较靠前的特征图)可以用来检测小物体,而小尺度特征图(较靠后的特征图)用来检测大物体。从下图可以看出,ssd网络会从6层feature map中提取特征,priorbox相应也会跟在这6层后面。
    这里写图片描述
    计算思路:以feature map上每个点的中点为中心(offset=0.5),生成一些列同心的prior box(然后中心点的坐标会乘以step,相当于从feature map位置映射回原图位置),最后会归一化处理
    正方形prior box最小边长为min_size,最大边长为

    minsizemaxsize m i n s i z e ∗ m a x s i z e

    每在prototxt设置一个aspect ratio,会生成2个长方形,长宽为:
    aspect_ratiominsize a s p e c t _ r a t i o ∗ m i n s i z e
    1/aspect_ratiominsize 1 / a s p e c t _ r a t i o ∗ m i n s i z e

    这里写图片描述
    之前看过别人博客中对源码的注释,有一些含糊之处。由于本人采用不同的架构重新实现了一遍,对每个细节都要理解透,因此在下面的代码中,尽量给出详细的注释。对于默认值的解释,在代码之后放上了caffe中的定义,感兴趣的可以到文末参阅。

    #include <algorithm>
    #include <functional>
    #include <utility>
    #include <vector>
    
    #include "caffe/layers/prior_box_layer.hpp"
    
    namespace caffe {
    
    template <typename Dtype>
    void PriorBoxLayer<Dtype>::LayerSetUp(const vector<Blob<Dtype>*>& bottom,
          const vector<Blob<Dtype>*>& top) {
      const PriorBoxParameter& prior_box_param =
          this->layer_param_.prior_box_param();
      CHECK_GT(prior_box_param.min_size_size(), 0) << "must provide min_size.";
      // 取min_size数据
      for (int i = 0; i < prior_box_param.min_size_size(); ++i) {
        min_sizes_.push_back(prior_box_param.min_size(i));
        CHECK_GT(min_sizes_.back(), 0) << "min_size must be positive.";
      }
      aspect_ratios_.clear();
      aspect_ratios_.push_back(1.);//1是默认比例
      flip_ = prior_box_param.flip();
      //存放aspect_ratios数据
      for (int i = 0; i < prior_box_param.aspect_ratio_size(); ++i) {
        float ar = prior_box_param.aspect_ratio(i);
        bool already_exist = false;
        for (int j = 0; j < aspect_ratios_.size(); ++j) {
          if (fabs(ar - aspect_ratios_[j]) < 1e-6) {
            already_exist = true;
            break;
          }
        }
        if (!already_exist) {
          aspect_ratios_.push_back(ar);
          if (flip_) {//是否取倒数
            aspect_ratios_.push_back(1./ar);
          }
        }
      }
      // prior box 数量。注意:还需加上max_size数量才是最终数量
      num_priors_ = aspect_ratios_.size() * min_sizes_.size();
      if (prior_box_param.max_size_size() > 0) {
        CHECK_EQ(prior_box_param.min_size_size(), prior_box_param.max_size_size());
        for (int i = 0; i < prior_box_param.max_size_size(); ++i) {
          max_sizes_.push_back(prior_box_param.max_size(i));
          CHECK_GT(max_sizes_[i], min_sizes_[i])
              << "max_size must be greater than min_size.";
          num_priors_ += 1;// 这里增加num_priors数量
        }
      }
      clip_ = prior_box_param.clip();
      // variance与后期真实框计算有关,要么给1个值,要么给4个值
      if (prior_box_param.variance_size() > 1) {
        // Must and only provide 4 variance.
        CHECK_EQ(prior_box_param.variance_size(), 4);
        for (int i = 0; i < prior_box_param.variance_size(); ++i) {
          CHECK_GT(prior_box_param.variance(i), 0);
          variance_.push_back(prior_box_param.variance(i));
        }
      } else if (prior_box_param.variance_size() == 1) {
        CHECK_GT(prior_box_param.variance(0), 0);
        variance_.push_back(prior_box_param.variance(0));
      } else {
        // Set default to 0.1.
        variance_.push_back(0.1);
      }
    
      if (prior_box_param.has_img_h() || prior_box_param.has_img_w()) {
        CHECK(!prior_box_param.has_img_size())
            << "Either img_size or img_h/img_w should be specified; not both.";
        img_h_ = prior_box_param.img_h();
        CHECK_GT(img_h_, 0) << "img_h should be larger than 0.";
        img_w_ = prior_box_param.img_w();
        CHECK_GT(img_w_, 0) << "img_w should be larger than 0.";
      } else if (prior_box_param.has_img_size()) {
        const int img_size = prior_box_param.img_size();
        CHECK_GT(img_size, 0) << "img_size should be larger than 0.";
        img_h_ = img_size;
        img_w_ = img_size;
      } else {
        img_h_ = 0;
        img_w_ = 0;
      }
    
      if (prior_box_param.has_step_h() || prior_box_param.has_step_w()) {
        CHECK(!prior_box_param.has_step())
            << "Either step or step_h/step_w should be specified; not both.";
        step_h_ = prior_box_param.step_h();
        CHECK_GT(step_h_, 0.) << "step_h should be larger than 0.";
        step_w_ = prior_box_param.step_w();
        CHECK_GT(step_w_, 0.) << "step_w should be larger than 0.";
      } else if (prior_box_param.has_step()) {
        const float step = prior_box_param.step();
        CHECK_GT(step, 0) << "step should be larger than 0.";
        step_h_ = step;
        step_w_ = step;
      } else {
        step_h_ = 0;
        step_w_ = 0;
      }
    
      offset_ = prior_box_param.offset();
      reduce_boxes_ = prior_box_param.reduce_boxes();
    }
    //该层输出大小为【1,2,layer_width * layer_height * num_priors_ * 4】
    // c的第一维,存放每个框的四个点
    // c的第二维,存放variance(每个框都一样)
    template <typename Dtype>
    void PriorBoxLayer<Dtype>::Reshape(const vector<Blob<Dtype>*>& bottom,
          const vector<Blob<Dtype>*>& top) {
      // 取feature map大小
      const int layer_width = bottom[0]->width();
      const int layer_height = bottom[0]->height();
      vector<int> top_shape(3, 1);
      // Since all images in a batch has same height and width, we only need to
      // generate one set of priors which can be shared across all images.
      top_shape[0] = 1;
      // 2 channels. First channel stores the mean of each prior coordinate.
      // Second channel stores the variance of each prior coordinate.
      top_shape[1] = 2;
      top_shape[2] = layer_width * layer_height * num_priors_ * 4;
      CHECK_GT(top_shape[2], 0);
      top[0]->Reshape(top_shape);
    }
    
    template <typename Dtype>
    void PriorBoxLayer<Dtype>::Forward_cpu(const vector<Blob<Dtype>*>& bottom,
        const vector<Blob<Dtype>*>& top) {
      // 取feature map大小
      const int layer_width = bottom[0]->width();
      const int layer_height = bottom[0]->height();
      int img_width, img_height;
      if (img_h_ == 0 || img_w_ == 0) {
        img_width = bottom[1]->width();// 输入图像的宽高
        img_height = bottom[1]->height();
      } else {
        img_width = img_w_;
        img_height = img_h_;
      }
      float step_w, step_h;
      if (step_w_ == 0 || step_h_ == 0) {
        step_w = static_cast<float>(img_width) / layer_width;// 缩放比例
        step_h = static_cast<float>(img_height) / layer_height;
      } else {
        step_w = step_w_;
        step_h = step_h_;
      }
      Dtype* top_data = top[0]->mutable_cpu_data();
      // 最后一维输出大小
      int dim = layer_height * layer_width * num_priors_ * 4;
      int idx = 0;
      for (int h = 0; h < layer_height; ++h) {
        for (int w = 0; w < layer_width; ++w) {
          // 取feature map 每个点为中心点,进行处理
          // offset默认值是0.5,可理解为一个小的偏移量
          // 这里将中心点映射回了原图
          float center_x = (w + offset_) * step_w;
          float center_y = (h + offset_) * step_h;
          float box_width, box_height;
          for (int s = 0; s < min_sizes_.size(); ++s) {
            int min_size_ = min_sizes_[s];
            // first prior: aspect_ratio = 1, size = min_size
    
            if (reduce_boxes_) {
              box_width = box_height = min_size_ / 2.0;// for mobilenet, conv11 featuremap
            }
            else{
              box_width = box_height = min_size_;
            }
            // min_size确定的正方形框,大小进行了归一化
            // xmin
            top_data[idx++] = (center_x - box_width / 2.) / img_width;
            // ymin
            top_data[idx++] = (center_y - box_height / 2.) / img_height;
            // xmax
            top_data[idx++] = (center_x + box_width / 2.) / img_width;
            // ymax
            top_data[idx++] = (center_y + box_height / 2.) / img_height;
    
            if (max_sizes_.size() > 0) {
              CHECK_EQ(min_sizes_.size(), max_sizes_.size());
              int max_size_ = max_sizes_[s];
              // second prior: aspect_ratio = 1, size = sqrt(min_size * max_size)
              box_width = box_height = sqrt(min_size_ * max_size_);
              // max_size确定的正方形框
              // xmin
              top_data[idx++] = (center_x - box_width / 2.) / img_width;
              // ymin
              top_data[idx++] = (center_y - box_height / 2.) / img_height;
              // xmax
              top_data[idx++] = (center_x + box_width / 2.) / img_width;
              // ymax
              top_data[idx++] = (center_y + box_height / 2.) / img_height;
            }
    
            // rest of priors
            for (int r = 0; r < aspect_ratios_.size(); ++r) {
              float ar = aspect_ratios_[r];
              if (fabs(ar - 1.) < 1e-6) {
                continue;
              }
              // 根据定义,由aspect_ratio和min_size共同确定的矩形框
              box_width = min_size_ * sqrt(ar);
              box_height = min_size_ / sqrt(ar);
              // xmin
              top_data[idx++] = (center_x - box_width / 2.) / img_width;
              // ymin
              top_data[idx++] = (center_y - box_height / 2.) / img_height;
              // xmax
              top_data[idx++] = (center_x + box_width / 2.) / img_width;
              // ymax
              top_data[idx++] = (center_y + box_height / 2.) / img_height;
            }
          }
        }
      }
      // clip默认值是false,是否进行越界处理
      // clip the prior's coordidate such that it is within [0, 1]
      if (clip_) {
        for (int d = 0; d < dim; ++d) {
          top_data[d] = std::min<Dtype>(std::max<Dtype>(top_data[d], 0.), 1.);
        }
      }
      // 前面提到过,输出c维大小是2,第一部分存放预选框数据,第二部分存放variance
      // set the variance.
      top_data += top[0]->offset(0, 1);// 通过偏移拿到第二部分的地址
      if (variance_.size() == 1) {
        caffe_set<Dtype>(dim, Dtype(variance_[0]), top_data);
      } else {
        int count = 0;
        for (int h = 0; h < layer_height; ++h) {
          for (int w = 0; w < layer_width; ++w) {
            for (int i = 0; i < num_priors_; ++i) {
              for (int j = 0; j < 4; ++j) {
                top_data[count] = variance_[j];
                ++count;
              }
            }
          }
        }
      }
    }
    
    INSTANTIATE_CLASS(PriorBoxLayer);
    REGISTER_LAYER_CLASS(PriorBox);
    
    }  // namespace caffe

    caffe中的定义:

    // Message that store parameters used by PriorBoxLayer
    message PriorBoxParameter {
      // Encode/decode type.
      enum CodeType {// 编码方式,与训练有关,且与最后一层detection out解码有关
        CORNER = 1;
        CENTER_SIZE = 2;
        CORNER_SIZE = 3;
      }
      // Minimum box size (in pixels). Required!
      repeated float min_size = 1;// 最小尺寸
      // Maximum box size (in pixels). Required!
      repeated float max_size = 2;// 最大尺寸
      // Various of aspect ratios. Duplicate ratios will be ignored.
      // If none is provided, we use default ratio 1.
      repeated float aspect_ratio = 3;// 变换比例
      // If true, will flip each aspect ratio.
      // For example, if there is aspect ratio "r",
      // we will generate aspect ratio "1.0/r" as well.
      optional bool flip = 4 [default = true]; // 对每个变换比例是否再加上他们的倒数
      // If true, will clip the prior so that it is within [0, 1]
      optional bool clip = 5 [default = false]; // 是否裁剪到[0,1]
      // Variance for adjusting the prior bboxes.
      repeated float variance = 6;
      // By default, we calculate img_height, img_width, step_x, step_y based on
      // bottom[0] (feat) and bottom[1] (img). Unless these values are explicitely
      // provided.
      // Explicitly provide the img_size.
      optional uint32 img_size = 7;
      // Either img_size or img_h/img_w should be specified; not both.
      optional uint32 img_h = 8;
      optional uint32 img_w = 9;
    
      // Explicitly provide the step size.
      optional float step = 10;
      // Either step or step_h/step_w should be specified; not both.
      optional float step_h = 11;
      optional float step_w = 12;
    
      // Offset to the top left corner of each cell.
      optional float offset = 13 [default = 0.5]; // 偏移量
    
      optional bool reduce_boxes = 14 [default = false];
    }
    
    展开全文
  • 使用scipy.stats.boxcox完成BoxCox变换

    千次阅读 2019-09-09 16:19:42
    为何要使用box-cox变换?原因如下: 在做线性回归的过程中,一般线性模型假定有:Y=Xβ+ϵ,ϵ∼N(0,δ2I)Y=X\beta+\epsilon,\epsilon \sim N(0,\delta^2I)Y=Xβ+ϵ,ϵ∼N(0,δ2I) 线性性:E(Y)是X中各变量的线性...
  • Prometheus监控 Blackbox_exporter黑盒监测

    千次阅读 2020-04-07 16:31:37
    Prometheus 监控之 Blackbox_exporter黑盒监测1、blackbox_exporter概述1.1 Blackbox_exporter 应用场景2、blackbox_exporter安装2.1 Docker方式安装2.2 宿主机安装3、blackbox_exporter配置四、prometheus配置4.1 ...
  • 什么是Bounding Box、anchor box?

    千次阅读 多人点赞 2020-10-30 17:47:28
    由于最近在看YOLOv3算法,感觉老是不清楚bounding box和anchor box的概念,看完吴恩达的视频后准备写一篇博客记下笔记。em...所以也会用吴恩达视频中的例子来讲。 在视频中,有一张图片,假设要检测的目标类别有...
  • ObjectBox的探究

    千次阅读 2019-03-05 16:13:04
    ObjectBox的介绍 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ObjectBox是一个专门为物联网和移动设备打造出的非常快速的面向对象的数据库,它有一下几个特点 ObjectBox是小于1MB的,所以非常适用于...
  • 【APICloud系列|29】dialogBox模块(对话框)的实现

    千次阅读 多人点赞 2020-12-31 16:56:36
    导读:dialogBox 封装了十一种款式的对话框,每一种款式都提供一个接口来调用,开发者可按照各个接口的样式来自定义对话框上的文字、图片、图文等 把 dialogBox 模块的 11 个样式分别实现个简单的效果,其中将 ...
  • DOSBox 的安装及使用 详细教程

    万次阅读 多人点赞 2020-07-30 20:56:30
    创作日志: 去年学了计组与汇编,用的是 masm 集成版,今年做汇编课设的时候,发现那个 masm 集成版不支持打开文件的操作,然后我就重拾 DOSBox,发现自己不会用 = = ,忘得干干净净,而且网上都是啥乱七八糟的呀,...
  • Android数据库ObjectBox使用说明

    千次阅读 2020-11-24 17:13:05
    集成GreenDao查询官网可以看到一则通告:对于新应用程序,我们建议使用ObjectBox,这是一个新的面向对象的数据库,它比SQLite快得多并且易于使用。对于基于greenDAO的现有应用程序,我们提供了DaoCompat,可轻松切换...
  • Prometheus学习之Blackbox

    千次阅读 2020-02-16 18:33:19
    简介 ... 这里就看看怎样使用 Prometheus 的 Blackbox Exporter 来实现这个功能。 Prometheus 的 Blackbox Exporter 允许通过 HTTP/HTTPS,TCP 和 ICMP 等来探测端点。 安装 首先从 https://prome...
  • DOSBox 是学习汇编语言是用到的一款工具,在win xp 和 win7 中可能很少遇见不能全屏的问题,在win10中可能由于兼容性问题(DOSBox 是32位的), 会出现不能全屏,或者一按 alt +enter全屏就退出. 解决方案 我看网上...
  • CSS3box-shadow属性详解

    万次阅读 多人点赞 2019-04-27 19:18:37
    CSS3 --添加阴影(盒子阴影的使用) CSS3 - 给div或者文字添加阴影(盒子阴影、文本阴影的使用) CSS3定义了两种阴影:盒子阴影和文本阴影。...box-shadow属性向box添加一个或多个阴影。 语法: box-shadow: of...
  • SSD算法详解default box

    万次阅读 多人点赞 2017-10-08 18:11:48
    SSD算法详解default box
  • 目标检测之AnchorBox详解

    千次阅读 2020-11-04 11:36:00
    Anchor在计算机视觉中称为描点或者描框,在目标检测中,作为描框anchor box应用于各个目标检测的网络模型中,也成为先验框。 来历,及应用场景: Anchor最新在Faster rcnn被提出及应用,后被YOLOV2借鉴,及...
  • 关于ancher box 和bounding box的区别

    千次阅读 2020-07-02 17:38:43
    那么,在这里,ancher box(以下称为abox)的种类为2,而bounding box(以下称为bbox)的种类为3。 为什么要这么设计呢? 假如现在有一个任务,需要预测男人,女人,汽车,那么根据他们的形状,你会想到两种框来...
  • SSD网络解析之PriorBox

    万次阅读 2018-08-19 12:07:19
    SSD网络中的PriorBox层用于部署特征图中每个位置(像素点)处的默认框(即计算每个默认框相对于网络输入层输入图像的归一化左上角和右下角坐标以及设置的坐标variance值) 默认框的具体设置,我们需要先看一下原...
  • box-cox变换

    千次阅读 2021-03-22 17:06:59
    Box-Cox变换是Box和Cox在1964年提出的一种广义幂变换方法,是统计建模中常用的一种数据变换,用于连续的响应变量不满足正态分布的情况。 Box-Cox变换之后,可以一定程度上减小不可观测的误差和预测变量的相关性。 ...
  • 在初次使用DOSBox模拟Intel 8086(16位)处理器运行16位程序时,我遇到了点击DOSBox快捷方式会打开两个窗口、DOSBox分辨率太低、频繁使用DOSBox手动挂载指定目录太繁琐等麻烦。
  • Windows7_64bit_DosBox

    热门讨论 2014-01-28 22:36:01
    64位的Windows7的学习汇编的不二软件,DosBox。 首先,安装DOSBox0.74-installer.exe。 将DEBUG.EXE,LINK.EXE,MASM.EXE放在某一文件夹下 (比如,D:\dosbox,F:\assembly\dosbox...),然后在命令行输入 mount C D:\...
  • CSS解读之box-sizing属性

    千次阅读 多人点赞 2017-11-27 19:33:48
    box-sizing属性是CSS3中引入的,有人解释为它可以指定用width属性与height属性分别指定的宽度值与高度值是否包含元素内部的补白区域,以及边框的宽度与高度。这句话有点绕,我理解为它是一种容器高宽的计算方法,...
  • 自适应布局webkit-box的用法

    万次阅读 2019-05-15 17:10:11
    自适应布局webkit-box的用法 Flexible Box Model(灵活盒子模型) 在平常的web横排布局中,会经常用到float或display:inline-block,但是在多种不同宽度的移动设备的自适应布局中用的话,还得设置百分比宽度和考虑...
  • CSS3 Box-sizing属性以及解决兼容性的一些做法。 转载地址:http://blog.sina.com.cn/s/blog_877284510101kt87.html   box-sizing是CSS3的box属性之一。一说到CSS的盒模型(Box model)...
  • WhiteBox学习

    千次阅读 2019-12-02 00:57:03
    WhiteBox学习 String myPrivateString = Whitebox.<String> getInternalState(instanceOfA, "myPrivateString", B.class); String myPrivateString = Whitebox.getInternalState...
  • css盒模型content-box和border-box

    千次阅读 2019-06-16 12:53:56
    1、简述 css盒模型分为两种,一种是ie老版本的怪异模式后来被css3接受,另一种是w3c的标准盒模型,我们在使用中可以根据...当box-sizing:content-box时,我们使用的是标准盒模型,这时候css定义的width宽度只包含元...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 758,285
精华内容 303,314
关键字:

box