CTPN中anchors代码
import numpy as np
def generate_basic_anchors(sizes, base_size=16):
#base_anchor([0,0,15,15])
base_anchor = np.array([0, 0, base_size - 1, base_size - 1], np.int32)
anchors = np.zeros((len(sizes), 4), np.int32)
index = 0
for h, w in sizes:
anchors[index] = scale_anchor(base_anchor, h, w)
index += 1
return anchors
def scale_anchor(anchor, h, w):
#anchor为[0,0,15,15]
x_ctr = (anchor[0] + anchor[2]) * 0.5
y_ctr = (anchor[1] + anchor[3]) * 0.5
scaled_anchor = anchor.copy()
scaled_anchor[0] = x_ctr - w / 2 # xmin
scaled_anchor[2] = x_ctr + w / 2 # xmax
scaled_anchor[1] = y_ctr - h / 2 # ymin
scaled_anchor[3] = y_ctr + h / 2 # ymax
return scaled_anchor
def generate_anchors():
heights = [11, 16, 23, 33, 48, 68, 97, 139, 198, 283]
widths = [16]
sizes = []
for h in heights:
for w in widths:
sizes.append((h, w))
return generate_basic_anchors(sizes)
if __name__ == '__main__':
import time
t = time.time()
a = generate_anchors()
print(a)
a:
[[ 0 2 15 13]
[ 0 0 15 15]
[ 0 -4 15 19]
[ 0 -9 15 24]
[ 0 -16 15 31]
[ 0 -26 15 41]
[ 0 -41 15 56]
[ 0 -62 15 77]
[ 0 -91 15 106]
[ 0 -134 15 149]] shift_x = np.arange(0, 2) * 16#本来应该是特征图的宽高,为了方便演示,设置为2,3
shift_y = np.arange(0, 3) * 16
print("shift_x:", shift_x)
print("shift_y:",shift_y)
shift_x: [ 0 16]
shift_y: [ 0 16 32]
shift_x, shift_y = np.meshgrid(shift_x, shift_y) # in W H order
shift_x1:
[[ 0 16]
[ 0 16]
[ 0 16]]
shift_y1:
[[ 0 0]
[16 16]
[32 32]]
shifts = np.vstack((shift_x.ravel(), shift_y.ravel(),
shift_x.ravel(), shift_y.ravel())).transpose() # 生成feature-map和真实image上anchor之间的偏移量
print("shifts:",shifts)
shifts:
[[ 0 0 0 0]
[16 0 16 0]
[ 0 16 0 16]
[16 16 16 16]
[ 0 32 0 32]
[16 32 16 32]]
A = a.shape[0] # 10个anchor
K = shifts.shape[0] # 50*38,feature-map的宽乘高的大小
all_anchors = (a.reshape((1, A, 4)) +
shifts.reshape((1, K, 4)).transpose((1, 0, 2))) # 相当于复制宽高的维度,然后相加shape(1938,10,4)
all_anchors = all_anchors.reshape((K * A, 4)) # shape(19380,4)
all_anchors:(特征图上每个点产生10个框,与原图的偏移相加即原图行列每隔16个点产生10个坐标) [[ 0 2 15 13]
[ 0 0 15 15]
[ 0 -4 15 19]
[ 0 -9 15 24]
[ 0 -16 15 31]
[ 0 -26 15 41]
[ 0 -41 15 56]
[ 0 -62 15 77]
[ 0 -91 15 106]
[ 0 -134 15 149]
[ 16 2 31 13]
[ 16 0 31 15]
[ 16 -4 31 19]
[ 16 -9 31 24]
[ 16 -16 31 31]
[ 16 -26 31 41]
[ 16 -41 31 56]
[ 16 -62 31 77]
[ 16 -91 31 106]
[ 16 -134 31 149]
[ 0 18 15 29]
[ 0 16 15 31]
[ 0 12 15 35]
[ 0 7 15 40]
[ 0 0 15 47]
[ 0 -10 15 57]
[ 0 -25 15 72]
[ 0 -46 15 93]
[ 0 -75 15 122]
[ 0 -118 15 165]
[ 16 18 31 29]
[ 16 16 31 31]
[ 16 12 31 35]
[ 16 7 31 40]
[ 16 0 31 47]
[ 16 -10 31 57]
[ 16 -25 31 72]
[ 16 -46 31 93]
[ 16 -75 31 122]
[ 16 -118 31 165]
[ 0 34 15 45]
[ 0 32 15 47]
[ 0 28 15 51]
[ 0 23 15 56]
[ 0 16 15 63]
[ 0 6 15 73]
[ 0 -9 15 88]
[ 0 -30 15 109]
[ 0 -59 15 138]
[ 0 -102 15 181]
[ 16 34 31 45]
[ 16 32 31 47]
[ 16 28 31 51]
[ 16 23 31 56]
[ 16 16 31 63]
[ 16 6 31 73]
[ 16 -9 31 88]
[ 16 -30 31 109]
[ 16 -59 31 138]
[ 16 -102 31 181]]
CTPN中anchors代码的更多相关文章
- CTPN项目部分代码学习
上次拜读了CTPN论文,趁热打铁,今天就从网上找到CTPN 的tensorflow代码实现一下,这里放出大佬的github项目地址:https://github.com/eragonruan/text ...
- 第二十二篇:在SOUI中使用代码向窗口中插入子窗口
使用SOUI开发客户端UI程序,通常也推荐使用XML代码来创建窗口,这样创建的窗口使用方便,当窗口大小改变时,内部的子窗口也更容易协同变化. 但是最近不断有网友咨询如何使用代码来创建SOUI子窗口,特 ...
- VS2010/VS2013中ashx代码折叠的问题
Tools->Options->TextEditor->File Extension Add ashx Microsoft Visual C# Apply OK 重启VS就可以了,效 ...
- 用 highlight.js 为文章中的代码添加语法高亮
来源:http://www.ghostchina.com/adding-syntax-highlighting-to-ghost-using-highlight-js/ --------------- ...
- VS中的代码段功能
1.前言 开发人员不喜欢打字.如果你希望提高开发人员的生产力,减少键入的数量,这也同时减少打字稿的数量以及因此产生的编译器错误,这些都极大分散了开发人员的注意力.代码重用是开发人员收集代码的另一个原因 ...
- PHP中PSR-[0-4]代码规范
PHP-FIG 在说啥是PSR-[0-4]规范的之前,我觉得我们有必要说下它的发明者和规范者:PHP-FIG,它的网站是:www.php-fig.org.就是这个联盟组织发明和创造了PSR-[0-4] ...
- java eclipse中的代码联动提示功能
eclipse中的代码联动提示设置:window--->preferences--->java--->editor----> content assist的auto activ ...
- demo工程的清单文件及activity中api代码简单示例
第一步注册一个账户,并创建一个应用.获取app ID与 app Key. 第二步下载sdk 第三步新建工程,修改清单文件,导入相关的sdk文件及调用相应的api搞定. 3.1 修改清单文件,主要是加入 ...
- Bootstrap css栅格 + 网页中插入代码+css表格
设计达人 http://www.shejidaren.com/30-minimal-app-icons.html CSS栅格: <!DOCTYPE html> <html lang= ...
随机推荐
- mysql聚合函数和分组
文章实例的数据表,来自上一篇博客<mysql简单查询>:http://blog.csdn.net/zuiwuyuan/article/details/39349611 一. 聚合函数 聚合 ...
- springmvc url处理映射的三种方式:
一.SpringMVC简介 SpringMVC是一种基于Spring实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,使用了MVC架构模式的思想,将web层进行职责解耦,并管理应用所需对象 ...
- JavaScript:4个常见的内存泄露
什么是内存泄漏 内存泄漏基本上就是不再被应用需要的内存,由于某种原因,没有被归还给操作系统或者进入可用内存池. 编程语言喜欢不同的管理内存方式.然而,一段确定的内存是否被使用是一个不可判断的问题.换句 ...
- Vue 各个阶段生命周期函数
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- redis常用指令总结以及功能介绍
第一部分 redis的常用指令 一.针对key的操作 1.1 del key [key .. ] , 删除指定的一个或者多个key;1.2 dump key ...
- H3C 路由表的构成
- 【39.68%】【CF 714 C】Filya and Homework
time limit per test 1 second memory limit per test 256 megabytes input standard input output standar ...
- Apache工具集
commons-collections-3.2.jar 转自:http://www.open-open.com/lib/view/open1384437456993.html
- 2019牛客多校第二场 A Eddy Walker(概率推公式)
2019牛客多校第二场 A Eddy Walker(概率推公式) 传送门:https://ac.nowcoder.com/acm/contest/882/A 题意: 给你一个长度为n的环,标号从0~n ...
- [转]SIMD、MMX、SSE、AVX、3D Now!、NEON
转载来源<[整理]SIMD.MMX.SSE.AVX.3D Now!.neon> 本文摘取部分内容,详细请看原文. SIMD NEON是通用的SIMD(单指令多数据)引擎. 对于SISD,每 ...