Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
last_winter
yolov4-pytorch
提交
a863d1aa
Y
yolov4-pytorch
项目概览
last_winter
/
yolov4-pytorch
与 Fork 源项目一致
从无法访问的项目Fork
通知
7
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Y
yolov4-pytorch
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
a863d1aa
编写于
2月 07, 2021
作者:
B
Bubbliiiing
提交者:
GitHub
2月 07, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add files via upload
上级
131bc2c0
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
63 addition
and
13 deletion
+63
-13
FPS_test.py
FPS_test.py
+26
-5
get_dr_txt.py
get_dr_txt.py
+16
-4
yolo.py
yolo.py
+21
-4
未找到文件。
FPS_test.py
浏览文件 @
a863d1aa
...
...
@@ -30,8 +30,13 @@ class FPS_YOLO(YOLO):
#---------------------------------------------------------#
# 给图像增加灰条,实现不失真的resize
# 也可以直接resize进行识别
#---------------------------------------------------------#
crop_img
=
np
.
array
(
letterbox_image
(
image
,
(
self
.
model_image_size
[
1
],
self
.
model_image_size
[
0
])))
if
self
.
letterbox_image
:
crop_img
=
np
.
array
(
letterbox_image
(
image
,
(
self
.
model_image_size
[
1
],
self
.
model_image_size
[
0
])))
else
:
crop_img
=
image
.
convert
(
'RGB'
)
crop_img
=
crop_img
.
resize
((
self
.
model_image_size
[
1
],
self
.
model_image_size
[
0
]),
Image
.
BICUBIC
)
photo
=
np
.
array
(
crop_img
,
dtype
=
np
.
float32
)
/
255.0
photo
=
np
.
transpose
(
photo
,
(
2
,
0
,
1
))
#---------------------------------------------------------#
...
...
@@ -58,8 +63,16 @@ class FPS_YOLO(YOLO):
top_label
=
np
.
array
(
batch_detections
[
top_index
,
-
1
],
np
.
int32
)
top_bboxes
=
np
.
array
(
batch_detections
[
top_index
,:
4
])
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
=
yolo_correct_boxes
(
top_ymin
,
top_xmin
,
top_ymax
,
top_xmax
,
np
.
array
([
self
.
model_image_size
[
0
],
self
.
model_image_size
[
1
]]),
image_shape
)
if
self
.
letterbox_image
:
boxes
=
yolo_correct_boxes
(
top_ymin
,
top_xmin
,
top_ymax
,
top_xmax
,
np
.
array
([
self
.
model_image_size
[
0
],
self
.
model_image_size
[
1
]]),
image_shape
)
else
:
top_xmin
=
top_xmin
/
self
.
model_image_size
[
1
]
*
image_shape
[
1
]
top_ymin
=
top_ymin
/
self
.
model_image_size
[
0
]
*
image_shape
[
0
]
top_xmax
=
top_xmax
/
self
.
model_image_size
[
1
]
*
image_shape
[
1
]
top_ymax
=
top_ymax
/
self
.
model_image_size
[
0
]
*
image_shape
[
0
]
boxes
=
np
.
concatenate
([
top_ymin
,
top_xmin
,
top_ymax
,
top_xmax
],
axis
=-
1
)
except
:
pass
...
...
@@ -81,8 +94,16 @@ class FPS_YOLO(YOLO):
top_label
=
np
.
array
(
batch_detections
[
top_index
,
-
1
],
np
.
int32
)
top_bboxes
=
np
.
array
(
batch_detections
[
top_index
,:
4
])
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
=
yolo_correct_boxes
(
top_ymin
,
top_xmin
,
top_ymax
,
top_xmax
,
np
.
array
([
self
.
model_image_size
[
0
],
self
.
model_image_size
[
1
]]),
image_shape
)
if
self
.
letterbox_image
:
boxes
=
yolo_correct_boxes
(
top_ymin
,
top_xmin
,
top_ymax
,
top_xmax
,
np
.
array
([
self
.
model_image_size
[
0
],
self
.
model_image_size
[
1
]]),
image_shape
)
else
:
top_xmin
=
top_xmin
/
self
.
model_image_size
[
1
]
*
image_shape
[
1
]
top_ymin
=
top_ymin
/
self
.
model_image_size
[
0
]
*
image_shape
[
0
]
top_xmax
=
top_xmax
/
self
.
model_image_size
[
1
]
*
image_shape
[
1
]
top_ymax
=
top_ymax
/
self
.
model_image_size
[
0
]
*
image_shape
[
0
]
boxes
=
np
.
concatenate
([
top_ymin
,
top_xmin
,
top_ymax
,
top_xmax
],
axis
=-
1
)
except
:
pass
...
...
get_dr_txt.py
浏览文件 @
a863d1aa
...
...
@@ -33,8 +33,13 @@ class mAP_Yolo(YOLO):
#---------------------------------------------------------#
# 给图像增加灰条,实现不失真的resize
# 也可以直接resize进行识别
#---------------------------------------------------------#
crop_img
=
np
.
array
(
letterbox_image
(
image
,
(
self
.
model_image_size
[
1
],
self
.
model_image_size
[
0
])))
if
self
.
letterbox_image
:
crop_img
=
np
.
array
(
letterbox_image
(
image
,
(
self
.
model_image_size
[
1
],
self
.
model_image_size
[
0
])))
else
:
crop_img
=
image
.
convert
(
'RGB'
)
crop_img
=
crop_img
.
resize
((
self
.
model_image_size
[
1
],
self
.
model_image_size
[
0
]),
Image
.
BICUBIC
)
photo
=
np
.
array
(
crop_img
,
dtype
=
np
.
float32
)
/
255.0
photo
=
np
.
transpose
(
photo
,
(
2
,
0
,
1
))
#---------------------------------------------------------#
...
...
@@ -69,7 +74,7 @@ class mAP_Yolo(YOLO):
try
:
batch_detections
=
batch_detections
[
0
].
cpu
().
numpy
()
except
:
return
image
return
#---------------------------------------------------------#
# 对预测框进行得分筛选
...
...
@@ -85,8 +90,15 @@ class mAP_Yolo(YOLO):
# 因此生成的top_bboxes是相对于有灰条的图像的
# 我们需要对其进行修改,去除灰条的部分。
#-----------------------------------------------------------------#
boxes
=
yolo_correct_boxes
(
top_ymin
,
top_xmin
,
top_ymax
,
top_xmax
,
np
.
array
([
self
.
model_image_size
[
0
],
self
.
model_image_size
[
1
]]),
image_shape
)
if
self
.
letterbox_image
:
boxes
=
yolo_correct_boxes
(
top_ymin
,
top_xmin
,
top_ymax
,
top_xmax
,
np
.
array
([
self
.
model_image_size
[
0
],
self
.
model_image_size
[
1
]]),
image_shape
)
else
:
top_xmin
=
top_xmin
/
self
.
model_image_size
[
1
]
*
image_shape
[
1
]
top_ymin
=
top_ymin
/
self
.
model_image_size
[
0
]
*
image_shape
[
0
]
top_xmax
=
top_xmax
/
self
.
model_image_size
[
1
]
*
image_shape
[
1
]
top_ymax
=
top_ymax
/
self
.
model_image_size
[
0
]
*
image_shape
[
0
]
boxes
=
np
.
concatenate
([
top_ymin
,
top_xmin
,
top_ymax
,
top_xmax
],
axis
=-
1
)
for
i
,
c
in
enumerate
(
top_label
):
predicted_class
=
self
.
class_names
[
c
]
score
=
str
(
top_conf
[
i
])
...
...
yolo.py
浏览文件 @
a863d1aa
...
...
@@ -31,7 +31,12 @@ class YOLO(object):
"model_image_size"
:
(
416
,
416
,
3
),
"confidence"
:
0.5
,
"iou"
:
0.3
,
"cuda"
:
True
"cuda"
:
True
,
#---------------------------------------------------------------------#
# 该变量用于控制是否使用letterbox_image对输入图像进行不失真的resize,
# 在多次测试后,发现关闭letterbox_image直接resize的效果更好
#---------------------------------------------------------------------#
"letterbox_image"
:
False
,
}
@
classmethod
...
...
@@ -118,8 +123,13 @@ class YOLO(object):
#---------------------------------------------------------#
# 给图像增加灰条,实现不失真的resize
# 也可以直接resize进行识别
#---------------------------------------------------------#
crop_img
=
np
.
array
(
letterbox_image
(
image
,
(
self
.
model_image_size
[
1
],
self
.
model_image_size
[
0
])))
if
self
.
letterbox_image
:
crop_img
=
np
.
array
(
letterbox_image
(
image
,
(
self
.
model_image_size
[
1
],
self
.
model_image_size
[
0
])))
else
:
crop_img
=
image
.
convert
(
'RGB'
)
crop_img
=
crop_img
.
resize
((
self
.
model_image_size
[
1
],
self
.
model_image_size
[
0
]),
Image
.
BICUBIC
)
photo
=
np
.
array
(
crop_img
,
dtype
=
np
.
float32
)
/
255.0
photo
=
np
.
transpose
(
photo
,
(
2
,
0
,
1
))
#---------------------------------------------------------#
...
...
@@ -170,8 +180,15 @@ class YOLO(object):
# 因此生成的top_bboxes是相对于有灰条的图像的
# 我们需要对其进行修改,去除灰条的部分。
#-----------------------------------------------------------------#
boxes
=
yolo_correct_boxes
(
top_ymin
,
top_xmin
,
top_ymax
,
top_xmax
,
np
.
array
([
self
.
model_image_size
[
0
],
self
.
model_image_size
[
1
]]),
image_shape
)
if
self
.
letterbox_image
:
boxes
=
yolo_correct_boxes
(
top_ymin
,
top_xmin
,
top_ymax
,
top_xmax
,
np
.
array
([
self
.
model_image_size
[
0
],
self
.
model_image_size
[
1
]]),
image_shape
)
else
:
top_xmin
=
top_xmin
/
self
.
model_image_size
[
1
]
*
image_shape
[
1
]
top_ymin
=
top_ymin
/
self
.
model_image_size
[
0
]
*
image_shape
[
0
]
top_xmax
=
top_xmax
/
self
.
model_image_size
[
1
]
*
image_shape
[
1
]
top_ymax
=
top_ymax
/
self
.
model_image_size
[
0
]
*
image_shape
[
0
]
boxes
=
np
.
concatenate
([
top_ymin
,
top_xmin
,
top_ymax
,
top_xmax
],
axis
=-
1
)
font
=
ImageFont
.
truetype
(
font
=
'model_data/simhei.ttf'
,
size
=
np
.
floor
(
3e-2
*
np
.
shape
(
image
)[
1
]
+
0.5
).
astype
(
'int32'
))
thickness
=
max
((
np
.
shape
(
image
)[
0
]
+
np
.
shape
(
image
)[
1
])
//
self
.
model_image_size
[
0
],
1
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录