Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
一汁程序喵
ssd-pytorch
提交
cb8d4a10
S
ssd-pytorch
项目概览
一汁程序喵
/
ssd-pytorch
与 Fork 源项目一致
从无法访问的项目Fork
通知
8
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
ssd-pytorch
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
cb8d4a10
编写于
12月 31, 2020
作者:
B
Bubbliiiing
提交者:
GitHub
12月 31, 2020
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add files via upload
上级
ee3b5b7e
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
90 addition
and
0 deletion
+90
-0
FPS_test.py
FPS_test.py
+90
-0
未找到文件。
FPS_test.py
0 → 100644
浏览文件 @
cb8d4a10
import
os
import
numpy
as
np
import
torch
from
PIL
import
Image
from
torch.autograd
import
Variable
from
tqdm
import
tqdm
from
ssd
import
SSD
from
utils.box_utils
import
letterbox_image
,
ssd_correct_boxes
'''
该FPS测试不包括前处理(归一化与resize部分)、绘图。
包括的内容为:网络推理、得分门限筛选、非极大抑制。
使用'img/street.jpg'图片进行测试,该测试方法参考库https://github.com/zylo117/Yet-Another-EfficientDet-Pytorch
video.py里面测试的FPS会低于该FPS,因为摄像头的读取频率有限,而且处理过程包含了前处理和绘图部分。
'''
class
FPS_SSD
(
SSD
):
def
get_FPS
(
self
,
image
,
test_interval
):
# 调整图片使其符合输入要求
image_shape
=
np
.
array
(
np
.
shape
(
image
)[
0
:
2
])
crop_img
=
np
.
array
(
letterbox_image
(
image
,
(
self
.
model_image_size
[
0
],
self
.
model_image_size
[
1
])))
photo
=
np
.
array
(
crop_img
,
dtype
=
np
.
float64
)
# 图片预处理,归一化
with
torch
.
no_grad
():
photo
=
Variable
(
torch
.
from_numpy
(
np
.
expand_dims
(
np
.
transpose
(
crop_img
-
MEANS
,(
2
,
0
,
1
)),
0
)).
type
(
torch
.
FloatTensor
))
if
self
.
cuda
:
photo
=
photo
.
cuda
()
preds
=
self
.
net
(
photo
)
top_conf
=
[]
top_label
=
[]
top_bboxes
=
[]
for
i
in
range
(
preds
.
size
(
1
)):
j
=
0
while
preds
[
0
,
i
,
j
,
0
]
>=
self
.
confidence
:
score
=
preds
[
0
,
i
,
j
,
0
]
label_name
=
self
.
class_names
[
i
-
1
]
pt
=
(
preds
[
0
,
i
,
j
,
1
:]).
detach
().
numpy
()
coords
=
[
pt
[
0
],
pt
[
1
],
pt
[
2
],
pt
[
3
]]
top_conf
.
append
(
score
)
top_label
.
append
(
label_name
)
top_bboxes
.
append
(
coords
)
j
=
j
+
1
# 将预测结果进行解码
if
len
(
top_conf
)
>
0
:
top_conf
=
np
.
array
(
top_conf
)
top_label
=
np
.
array
(
top_label
)
top_bboxes
=
np
.
array
(
top_bboxes
)
top_xmin
,
top_ymin
,
top_xmax
,
top_ymax
=
np
.
expand_dims
(
top_bboxes
[:,
0
],
-
1
),
np
.
expand_dims
(
top_bboxes
[:,
1
],
-
1
),
np
.
expand_dims
(
top_bboxes
[:,
2
],
-
1
),
np
.
expand_dims
(
top_bboxes
[:,
3
],
-
1
)
# 去掉灰条
boxes
=
ssd_correct_boxes
(
top_ymin
,
top_xmin
,
top_ymax
,
top_xmax
,
np
.
array
([
self
.
model_image_size
[
0
],
self
.
model_image_size
[
1
]]),
image_shape
)
t1
=
time
.
time
()
for
_
in
range
(
test_interval
):
# 图片预处理,归一化
with
torch
.
no_grad
():
preds
=
self
.
net
(
photo
)
top_conf
=
[]
top_label
=
[]
top_bboxes
=
[]
for
i
in
range
(
preds
.
size
(
1
)):
j
=
0
while
preds
[
0
,
i
,
j
,
0
]
>=
self
.
confidence
:
score
=
preds
[
0
,
i
,
j
,
0
]
label_name
=
self
.
class_names
[
i
-
1
]
pt
=
(
preds
[
0
,
i
,
j
,
1
:]).
detach
().
numpy
()
coords
=
[
pt
[
0
],
pt
[
1
],
pt
[
2
],
pt
[
3
]]
top_conf
.
append
(
score
)
top_label
.
append
(
label_name
)
top_bboxes
.
append
(
coords
)
j
=
j
+
1
# 将预测结果进行解码
if
len
(
top_conf
)
>
0
:
top_conf
=
np
.
array
(
top_conf
)
top_label
=
np
.
array
(
top_label
)
top_bboxes
=
np
.
array
(
top_bboxes
)
top_xmin
,
top_ymin
,
top_xmax
,
top_ymax
=
np
.
expand_dims
(
top_bboxes
[:,
0
],
-
1
),
np
.
expand_dims
(
top_bboxes
[:,
1
],
-
1
),
np
.
expand_dims
(
top_bboxes
[:,
2
],
-
1
),
np
.
expand_dims
(
top_bboxes
[:,
3
],
-
1
)
# 去掉灰条
boxes
=
ssd_correct_boxes
(
top_ymin
,
top_xmin
,
top_ymax
,
top_xmax
,
np
.
array
([
self
.
model_image_size
[
0
],
self
.
model_image_size
[
1
]]),
image_shape
)
t2
=
time
.
time
()
tact_time
=
(
t2
-
t1
)
/
test_interval
return
tact_time
ssd
=
FPS_SSD
()
test_interval
=
100
img
=
Image
.
open
(
'img/street.jpg'
)
tact_time
=
ssd
.
get_FPS
(
img
,
test_interval
)
print
(
str
(
tact_time
)
+
' seconds, '
+
str
(
1
/
tact_time
)
+
'FPS, @batch_size 1'
)
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录