Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
一汁程序喵
ssd-pytorch
提交
5212adfa
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,体验更适合开发者的 AI 搜索 >>
未验证
提交
5212adfa
编写于
4月 10, 2020
作者:
J
JiaQi Xu
提交者:
GitHub
4月 10, 2020
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add files via upload
上级
6734a877
变更
4
展开全部
隐藏空白更改
内联
并排
Showing
4 changed file
with
1016 addition
and
0 deletion
+1016
-0
get_dr_txt.py
get_dr_txt.py
+80
-0
get_gt_txt.py
get_gt_txt.py
+24
-0
get_map.py
get_map.py
+880
-0
video.py
video.py
+32
-0
未找到文件。
get_dr_txt.py
0 → 100644
浏览文件 @
5212adfa
from
ssd
import
SSD
from
PIL
import
Image
from
utils.box_utils
import
letterbox_image
,
ssd_correct_boxes
from
torch.autograd
import
Variable
import
torch
import
numpy
as
np
import
os
MEANS
=
(
104
,
117
,
123
)
class
mAP_SSD
(
SSD
):
#---------------------------------------------------#
# 检测图片
#---------------------------------------------------#
def
detect_image
(
self
,
image_id
,
image
):
self
.
confidence
=
0.05
f
=
open
(
"./input/detection-results/"
+
image_id
+
".txt"
,
"w"
)
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
)
# 图片预处理,归一化
photo
=
Variable
(
torch
.
from_numpy
(
np
.
expand_dims
(
np
.
transpose
(
crop_img
-
MEANS
,(
2
,
0
,
1
)),
0
)).
cuda
().
type
(
torch
.
FloatTensor
))
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
:
return
image
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
)
for
i
,
c
in
enumerate
(
top_label
):
predicted_class
=
c
score
=
str
(
float
(
top_conf
[
i
]))
top
,
left
,
bottom
,
right
=
boxes
[
i
]
f
.
write
(
"%s %s %s %s %s %s
\n
"
%
(
predicted_class
,
score
[:
6
],
str
(
int
(
left
)),
str
(
int
(
top
)),
str
(
int
(
right
)),
str
(
int
(
bottom
))))
f
.
close
()
return
ssd
=
mAP_SSD
()
image_ids
=
open
(
'VOCdevkit/VOC2007/ImageSets/Main/test.txt'
).
read
().
strip
().
split
()
if
not
os
.
path
.
exists
(
"./input"
):
os
.
makedirs
(
"./input"
)
if
not
os
.
path
.
exists
(
"./input/detection-results"
):
os
.
makedirs
(
"./input/detection-results"
)
if
not
os
.
path
.
exists
(
"./input/images-optional"
):
os
.
makedirs
(
"./input/images-optional"
)
for
image_id
in
image_ids
:
image_path
=
"./VOCdevkit/VOC2007/JPEGImages/"
+
image_id
+
".jpg"
image
=
Image
.
open
(
image_path
)
image
.
save
(
"./input/images-optional/"
+
image_id
+
".jpg"
)
ssd
.
detect_image
(
image_id
,
image
)
print
(
image_id
,
" done!"
)
print
(
"Conversion completed!"
)
\ No newline at end of file
get_gt_txt.py
0 → 100644
浏览文件 @
5212adfa
import
sys
import
os
import
glob
import
xml.etree.ElementTree
as
ET
image_ids
=
open
(
'VOCdevkit/VOC2007/ImageSets/Main/test.txt'
).
read
().
strip
().
split
()
if
not
os
.
path
.
exists
(
"./input"
):
os
.
makedirs
(
"./input"
)
if
not
os
.
path
.
exists
(
"./input/ground-truth"
):
os
.
makedirs
(
"./input/ground-truth"
)
for
image_id
in
image_ids
:
with
open
(
"./input/ground-truth/"
+
image_id
+
".txt"
,
"w"
)
as
new_f
:
root
=
ET
.
parse
(
"VOCdevkit/VOC2007/Annotations/"
+
image_id
+
".xml"
).
getroot
()
for
obj
in
root
.
findall
(
'object'
):
obj_name
=
obj
.
find
(
'name'
).
text
bndbox
=
obj
.
find
(
'bndbox'
)
left
=
bndbox
.
find
(
'xmin'
).
text
top
=
bndbox
.
find
(
'ymin'
).
text
right
=
bndbox
.
find
(
'xmax'
).
text
bottom
=
bndbox
.
find
(
'ymax'
).
text
new_f
.
write
(
"%s %s %s %s %s
\n
"
%
(
obj_name
,
left
,
top
,
right
,
bottom
))
print
(
"Conversion completed!"
)
\ No newline at end of file
get_map.py
0 → 100644
浏览文件 @
5212adfa
此差异已折叠。
点击以展开。
video.py
0 → 100644
浏览文件 @
5212adfa
#-------------------------------------#
# 调用摄像头检测
#-------------------------------------#
from
ssd
import
SSD
from
PIL
import
Image
import
numpy
as
np
import
cv2
ssd
=
SSD
()
# 调用摄像头
capture
=
cv2
.
VideoCapture
(
0
)
# capture=cv2.VideoCapture("1.mp4")
while
(
True
):
# 读取某一帧
ref
,
frame
=
capture
.
read
()
# 格式转变,BGRtoRGB
frame
=
cv2
.
cvtColor
(
frame
,
cv2
.
COLOR_BGR2RGB
)
# 转变成Image
frame
=
Image
.
fromarray
(
np
.
uint8
(
frame
))
# 进行检测
frame
=
np
.
array
(
ssd
.
detect_image
(
frame
))
# RGBtoBGR满足opencv显示格式
frame
=
cv2
.
cvtColor
(
frame
,
cv2
.
COLOR_RGB2BGR
)
cv2
.
imshow
(
"video"
,
frame
)
c
=
cv2
.
waitKey
(
30
)
&
0xff
if
c
==
27
:
capture
.
release
()
break
yolo
.
close_session
()
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录