Simple-Faster-RCNN源码学习笔记

Simple-Faster-RCNN 源码学习

项目github地址: https://github.com/chenyuntc/simple-faster-rcnn-pytorch

源码


源文件: model/utils/bbox_tools.py

方法: loc2bbox(src_bbox, loc)

参数含义:

  1. src_bbox描述的是bbox的坐标.
  2. loc表示的偏移(offsets)和缩放尺度(scales).

给出边界框的偏移及缩放尺寸,该函数将表示转换为2D的图像坐标.
即通过对原边界框src_bbox附加上loc对应的变换,从而得到新的边界框.

先将坐标表示法src_bbox转换成中心表示法px,py,pw,php_x,p_y,p_w,p_hpx,py,pw,ph
再结合loc数组中的偏移和缩放dx,dy,dw,dhd_x,d_y,d_w,d_hdx,dy,dw,dh
根据如下公式,做转换并得到gx,gy,gh,gwg_x,g_y,g_h,g_wgx,gy,gh,gw:
gy=dyph+pyg_y = d_yp_h+p_ygy=dyph+py
gx=dxpw+pxg_x = d_xp_w+p_xgx=dxpw+px
gh=dhexp(ph)g_h = d_hexp({p_h})gh=dhexp(ph)
gw=dwexp(pw)g_w = d_wexp({p_w})gw=dwexp(pw)
得到中心表示法gx,gy,gh,gwg_x,g_y,g_h,g_wgx,gy,gh,gw,以后,再经过一步转换得到坐标表示法dst_bbox.
dstx1=gx−0.5gwdst_{x1} = g_x-0.5g_wdstx1=gx0.5gw
dstx2=gx+0.5gwdst_{x2} = g_x+0.5g_wdstx2=gx+0.5gw
dsty1=gy−0.5ghdst_{y1} = g_y-0.5g_hdsty1=gy0.5gh
dsty2=gy+0.5ghdst_{y2} = g_y+0.5g_hdsty2=gy+0.5gh

方法: bbox2loc(src_bbox, dst_bbox)

参数含义:

  1. src_bbox描述的是第一个bbox的坐标.
  2. dst_bbox描述的是第二个bbox的坐标.

返回值: 返回从src_bbox变换到dst_bbox所需要的偏移和缩放信息.

方法: bbox_iou(bbox_a, bbox_b)

计算二者的IoU的值,即Area(A∩B)Area(A∪B)\frac{Area(A∩B)}{Area(A∪B)}Area(AB)Area(AB).
如果参数aaa的维度是(N,4)(N,4)(N,4),参数bbb的维度是(K,4)(K,4)(K,4),那么返回值的维度就是(N,K)(N,K)(N,K)

方法: generate_anchor_base(base_size=16, ratios=[0.5, 1, 2],anchor_scales=[8, 16, 32])

生成多种(样例是3种)不同面积(面积即为base_size*anchor_scales)的Anchor, 每一种Anchor又会生成多种(样例中是3种)具有不同长宽比的Anchor.(样例中总Anchors数目是9种)

最后将生成的Anchor全部都统一到图像坐标表示法返回.


源文件: model/region_proposal_network.py

方法: _enumerate_shifted_anchor(anchor_base, feat_stride, height, width)

用于生成所有的Anchors,传入anchor_base,对于特征图的每一个像素点位置,都生成A个Anchors,总共就是K∗AK*AKA个Anchors,其中K是像素点的数量.

返回值的形状是(K∗A,4)(K*A,4)(KA,4)

方法:RegionProposalNetwork.forward(self, x, img_size, scale=1.)

经过1层3∗33*333的卷积层,做一下语义变换,从而得到hhh作为特征响应图.
在这里插入图片描述
再后面特征响应图hhh经过2个分支,分别产生Anchor的前景得分以及中心表示法坐标.
在这里插入图片描述
其中rpn_fg_scores即Anchor的前景得分,rpn_scores是同时包含前景背景的得分,rpn_locs表示的是Anchor的中心表示法的坐标.
在这里插入图片描述
上述代码的意思是:对于Batch中的每一个样本,把用RPN预测的Anchor坐标,前景得分,图像大小,以及所有Anchor坐标,图片大小等信息传入proposal_layer中去,可以得到一些Anchor.
最后,该方法返回:rpn_locs,rpn_scores,rois,roi_indices,anchor等信息.
值得注意的是,训练时仅返回2000个roi,测试时仅返回300个.


源文件: creator_tool.py

类: ProposalCreator

该类是可调用的,它接收RPN预测的一些Anchor的坐标,前景分数,以及特征图所生成的所有Anchor等信息,并且用于生成RoIs.
在这里插入图片描述
为了生成Proposal,先将anchor的中心表示法转换为图像坐标表示法.
为了防止生成的Proposal越界,我们需做一个clip操作,使得最小值为0,最大值为对应维度的最大值.
在这里插入图片描述
随后将宽度和高度小于阈值的proposal丢掉.
在这里插入图片描述
对所有proposal,按照其前景分进行排序,并且一开始只取前n_pre_nms个.
随后再进行non_maximum_supression非最大值抑制,就是说交叉度大的几个Anchors只保留前景分最大的,返回的时候,只返回n_post_nms个框,训练时这个值为2000,测试时这个值为300…

类: ProposalTargetCreator

在这里插入图片描述
对于给定的RoIs,对于每一个RoI,将其与所有的GT(Ground Truth)进行比对,求其IoUIoUIoU,随后选择最大的IoUIoUIoU的索引作为gt_assigment,这个值设置为max_iou.并且计算出前景框的索引pos_index,从中随机选取大概64个正样本.

同理,从中选取相等数量的作为负样本.
在这里插入图片描述
将正负样本叠加在一起,返回与之对应的样本roi,gt框,gt框索引.


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/320923.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

API网关模式

什么是网关网关一词来源于计算机网络中的定义,网关(Gateway)又称网间连接器、协议转换器。网关的准确定义是: 两个计算机程序或系统之间的连接,网关作为两个程序之间的门户,允许它们通过不同计算机之间的协议通信来共享信息。顾名…

楼层

楼层 题目大意: 有两个数m和t,问1~m之间去掉有数字t的数之后还有多少个数 原题: 题目描述 mxy 感觉新世界的大门打开了。 ta 决定要在新世界的旅馆中找间房住。已知新世界每天都有一个高能的数字 t,这个数字在楼层中是不会出…

P3825-[NOI2017]游戏【2-SAT】

正题 题目链接:https://www.luogu.com.cn/problem/P3825 题目大意 nnn场比赛,对于场地aaa不能用赛车AAA(b,cb,cb,c以此类推),对于场地xxx可以用任何赛车。然后给定mmm条条件形如iIjJi\ I\ j\ Ji I j J表示在第iii场比赛使用赛车I…

CVPR19 基于图卷积网络的多标签图像识别模型 论文笔记

笔记 旷视研究院的研究员提出了如下模型,用于图像的多标签分类. 该模型与一般模型不一样的一点是,它的分类器是生成的,因此它有一个专门生成分类器的子网络. 网络主要由两部分构成 特征表示子网络,该网络由ResNet-101构成,即蓝色框圈出的部分.分类器生成子网络,该网络由3个…

日行千里,全凭“车”况,为什么我们要升级平台

历经一个半月的时间,不管是叫工业互联网平台还是叫工业大数据平台,从1.0版本升级到2.0版本,升级部分包括:客户端(网关)、服务端(数据接收、数据处理、计算服务)、底层数据库结构、WE…

朋友

朋友 题目大意: 有两堆数,只有第一堆数会和第二堆数中比自己小的数交“朋友”,问有多少对朋友 原题: 题目描述 mxy 即将前往新世界。 在前往新世界的过程中,ta 遇见了两种人。一种是只和 lowb 做朋友,…

好代码是管出来的——.Net Core中的单元测试与代码覆盖率

测试对于软件来说,是保证其质量的一个重要过程,而测试又分为很多种,单元测试、集成测试、系统测试、压力测试等等,不同的测试的测试粒度和测试目标也不同,如单元测试关注每一行代码,集成测试关注的是多个模…

P3694-邦邦的大合唱站队【状压dp】

正题 题目链接:https://www.luogu.com.cn/problem/P3694 题目大意 nnn个人,有mmm个队伍,每个人都属于一个队伍。要求叫出一些人来,然后任意插入出来的空隙中使得同一队的人在一起。求最少出列人数。 解题思路 如果知道最终的队列就可以十分…

数字图像处理作业

图像处理作业 1 取sT(r)11(mr)EsT(r)\frac{1}{1(\frac{m}{r})^E}sT(r)1(rm​)E1​ 其中rrr为原始亮度,mmm为输入区间的中点,EEE描述曲线的陡峭程度 2 一幅8灰度级图像具有如下所示的直方图,求直方图均衡后的灰度级和对应概率,…

【差分】侦察兵

侦察兵 题目大意: 给出一个图,再给一些点,求出这些点左上角和右下角的数之和 原题: 题目描述 mxy 沉迷于一个辣鸡游戏不可自拔。 游戏地图是一个 n*n 的矩形,在每个单位格子上有一个数字,代表当前位置…

深港澳大湾区(深圳).NET技术交流会圆满成功

2018年7月7日一场以.NET Core微服务和机器学习为主题的交流会成功在深圳职业技术学院落下帷幕。这次活动在短短的一周时间内,报名人数超过了170人,除了一些同学临时有事,基本都到现场了,特别感谢深职院的软创工作室对这次活动的支…

P5322-[BJOI2019]排兵布阵【背包】

正题 题目链接:https://www.luogu.com.cnp/problem/P1768 题目大意 nnn个城池,有sss个玩家对于每个城池有一定的兵。对于所有玩家的每个城池都有派兵一个人数,要求派兵人数之和为mmm。如果你的派兵数列每大于一个玩家派兵数量的两倍那么就可以获得该城池…

图像处理作业二

作业信息 1、证明3.44和3.45的正确性 g(x,y)1K∑i1Kgi(x,y)g(x,y)\frac{1}{K}\sum_{i1}^K g_i(x,y)g(x,y)K1​∑i1K​gi​(x,y) E[g(x,y)]f(x,y)E[n(x,y)]f(x,y)E[g(x,y)]f(x,y)E[n(x,y)]f(x,y)E[g(x,y)]f(x,y)E[n(x,y)]f(x,y) D[g]E[(g−E[g])2]E[g2]−E[g]2E[f22f(n1n2...nK…

【模拟】遭遇战

遭遇战 题目大意: 在一个nn的范围内两个人在跑(san)步,问他们在哪里相遇 原题 题目描述 mxy 沉迷于一个辣鸡游戏不可自拔。 游戏地图是一个 n*n 的矩形,左上角为(0,0),右下角为…

.Net Core开发日志——Peachpie

.Net Core的生态圈随着开源社区的力量不断注入至其中,正在变得越来越强盛,并且不时得就出现些有意思的项目,比如Peachpie,它使得PHP的代码迁移到.Net Core项目变得可能。从创建简单的入门程序开始可以更容易地体会其特性。首先安装…

P5268-[SNOI2017]一个简单的询问【莫队】

正题 题目链接:https://www.luogu.com.cn/problem/P5268 题目大意 nnn个数的一个序列,定义get(l1,r1,x)get(l_1,r_1,x)get(l1​,r1​,x)表示区间[l1,r1][l_1,r_1][l1​,r1​]中有多少个xxx。 每次询问(l1,r1,l2,r2)(l_1,r_1,l_2,r_2)(l1​,r1​,l2​,r2​)求∑x∞…

图像处理作业第三次

图像处理作业第三次 1.根据书中对傅立叶变换的定义,证明课本165页上有关傅立叶变换的平移性质。 F(u−u0,v−v0)F(u-u_0,v-v_0)F(u−u0​,v−v0​) ∑x0M−1∑y0N−1f(x,y)e−j2π((u−u0)x/M(v−v0)y/N)\sum_{x0}^{M-1}\sum_{y0}^{N-1}f(x,y)e^{-j2\pi((u-u_0)x/M…

初一模拟赛(4.20)

成绩: rankrankranknamenamenamescorescorescoreT1T1T1T2T2T2T3T3T3T4T4T4111lyflyflyf400400400100100100100100100100100100100100100222wjjwjjwjj310310310100100100100100100100100100101010333hkyhkyhky300300300100100100100100100100100100000333cyzcyzcyz30…

.NET Core开发日志——Middleware

熟悉ASP.NET架构的开发者一定对于HTTP Modules与HTTP Handlers不陌生。两者的作用主要是对网络请求执行特定的处理工作。而在.NET Core中,它们都被Middleware(中件间)取代了。之前的Http Modules和HTTP Handlers是如下图般处理请求的:现在变成了这样&…

P3850-[TJOI2007]书架【Splay】

正题 题目链接:https://www.luogu.com.cn/problem/P3850 题目大意 一个书架上有nnn本书&#xff0c;进行mmm次插入操作&#xff0c;然后qqq次询问一个位置上的书。 解题思路 用SplaySplaySplay进行插入操作&#xff0c;然后直接查询即可 codecodecode #include<cstdio&g…