Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
要开心的学习
Mask_RCNN
提交
4ec44c0f
M
Mask_RCNN
项目概览
要开心的学习
/
Mask_RCNN
与 Fork 源项目一致
从无法访问的项目Fork
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
M
Mask_RCNN
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
4ec44c0f
编写于
1月 28, 2018
作者:
S
Shenoy
提交者:
Cory Pruce
1月 28, 2018
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
minor changes & more cleanup
上级
f98c6a74
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
5 addition
and
11 deletion
+5
-11
model.py
model.py
+5
-11
未找到文件。
model.py
浏览文件 @
4ec44c0f
...
...
@@ -715,7 +715,7 @@ def refine_detections_graph(rois, probs, deltas, window, config):
conf_keep
=
tf
.
where
(
class_scores
>=
config
.
DETECTION_MIN_CONFIDENCE
)[:,
0
]
if
config
.
DETECTION_MIN_CONFIDENCE
:
keep
=
tf
.
sparse_tensor_to_dense
(
tf
.
sets
.
set_intersection
(
keep
=
tf
.
sparse_tensor_to_dense
(
tf
.
sets
.
set_intersection
(
tf
.
expand_dims
(
keep
,
0
),
tf
.
expand_dims
(
conf_keep
,
0
)))[
0
]
# Apply per-class NMS
...
...
@@ -744,7 +744,7 @@ def refine_detections_graph(rois, probs, deltas, window, config):
iou_threshold
=
config
.
DETECTION_NMS_THRESHOLD
)
# Map indicies
cur_keep_indexes
=
tf
.
gather
(
keep
,
tf
.
gather
(
ixs
,
class_keep
))
cur_keep_indexes
=
tf
.
gather
(
tf
.
cast
(
keep
,
tf
.
int32
)
,
tf
.
gather
(
ixs
,
class_keep
))
return
i
+
1
,
tf
.
concat
([
ret
,
cur_keep_indexes
],
axis
=
0
)
nums_iters
=
tf
.
shape
(
uniq_pre_nms_class_ids
)[
0
]
# unique class ids
...
...
@@ -759,9 +759,9 @@ def refine_detections_graph(rois, probs, deltas, window, config):
# remove initial_value background
nms_keep
=
tf
.
gather
(
nms_keep
,
tf
.
where
(
nms_keep
>=
0
)[:,
0
])
keep
=
tf
.
sparse_tensor_to_dense
(
tf
.
sets
.
set_intersection
(
tf
.
expand_dims
(
keep
,
0
),
tf
.
expand_dims
(
nms_keep
,
0
)))[
0
]
keep
=
tf
.
cast
(
keep
,
tf
.
int32
)
keep
=
tf
.
sparse_tensor_to_dense
(
tf
.
sets
.
set_intersection
(
tf
.
expand_dims
(
keep
,
0
),
tf
.
expand_dims
(
nms_keep
,
0
)))[
0
]
# Keep top detections
roi_count
=
tf
.
convert_to_tensor
(
config
.
DETECTION_MAX_INSTANCES
)
...
...
@@ -775,7 +775,6 @@ def refine_detections_graph(rois, probs, deltas, window, config):
refined_rois_keep
=
tf
.
gather
(
tf
.
to_float
(
refined_rois
),
keep
)
class_ids_keep
=
tf
.
gather
(
tf
.
to_float
(
class_ids
),
keep
)[...,
tf
.
newaxis
]
class_scores_keep
=
tf
.
gather
(
class_scores
,
keep
)[...,
tf
.
newaxis
]
# Arrange output as [N, (y1, x1, y2, x2, class_id, score)]
# Coordinates are in image domain.
detections
=
tf
.
concat
((
refined_rois_keep
,
class_ids_keep
,
...
...
@@ -784,14 +783,12 @@ def refine_detections_graph(rois, probs, deltas, window, config):
# Pad with zeros if detections < DETECTION_MAX_INSTANCES
num_detections
=
tf
.
shape
(
detections
)[
0
]
gap
=
roi_count
-
num_detections
print
(
gap
,
roi_count
,
num_detections
)
pred
=
tf
.
less
(
tf
.
constant
(
0
),
gap
)
#assert gap >= 0
#if gap > 0:
# paddings = tf.constant([[0, gap], [0, 0]])
# detections = tf.pad(detections, paddings, "CONSTANT")
def
pad_detections
():
print
(
detections
.
shape
)
return
tf
.
pad
(
detections
,
[(
0
,
gap
),
(
0
,
0
)],
"CONSTANT"
)
detections
=
tf
.
cond
(
pred
,
pad_detections
,
lambda
:
detections
)
...
...
@@ -816,11 +813,9 @@ class DetectionLayer(KE.Layer):
mrcnn_class
=
inputs
[
1
]
mrcnn_bbox
=
inputs
[
2
]
image_meta
=
inputs
[
3
]
print
(
rois
.
shape
,
mrcnn_class
.
shape
,
mrcnn_bbox
.
shape
,
image_meta
.
shape
)
#parse_image_meta can be reused as slicing works same way in TF & numpy
_
,
_
,
window
,
_
=
parse_image_meta
(
image_meta
)
print
(
'window after: '
,
window
.
shape
)
_
,
_
,
window
,
_
=
parse_image_meta_graph
(
image_meta
)
detections_batch
=
utils
.
batch_slice
(
[
rois
,
mrcnn_class
,
mrcnn_bbox
,
window
],
lambda
x
,
y
,
w
,
z
:
refine_detections_graph
(
x
,
y
,
w
,
z
,
self
.
config
),
...
...
@@ -832,7 +827,6 @@ class DetectionLayer(KE.Layer):
#detections_batch = np.array(detections_batch).astype(np.float32)
# Reshape output
# [batch, num_detections, (y1, x1, y2, x2, class_score)] in pixels
return
tf
.
reshape
(
detections_batch
,
[
self
.
config
.
BATCH_SIZE
,
self
.
config
.
DETECTION_MAX_INSTANCES
,
6
])
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录