Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
谢爱卿
yolov4-pytorch
提交
d4b3142e
Y
yolov4-pytorch
项目概览
谢爱卿
/
yolov4-pytorch
与 Fork 源项目一致
从无法访问的项目Fork
通知
3
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,发现更多精彩内容 >>
未验证
提交
d4b3142e
编写于
12月 30, 2020
作者:
B
Bubbliiiing
提交者:
GitHub
12月 30, 2020
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add files via upload
上级
941f84f0
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
61 addition
and
14 deletion
+61
-14
get_gt_txt.py
get_gt_txt.py
+25
-0
get_map.py
get_map.py
+36
-14
未找到文件。
get_gt_txt.py
浏览文件 @
d4b3142e
...
...
@@ -8,6 +8,20 @@ import os
import
glob
import
xml.etree.ElementTree
as
ET
'''
!!!!!!!!!!!!!注意事项!!!!!!!!!!!!!
# 这一部分是当xml有无关的类的时候,下方有代码可以进行筛选!
'''
#---------------------------------------------------#
# 获得类
#---------------------------------------------------#
def
get_classes
(
classes_path
):
'''loads the classes'''
with
open
(
classes_path
)
as
f
:
class_names
=
f
.
readlines
()
class_names
=
[
c
.
strip
()
for
c
in
class_names
]
return
class_names
image_ids
=
open
(
'VOCdevkit/VOC2007/ImageSets/Main/test.txt'
).
read
().
strip
().
split
()
if
not
os
.
path
.
exists
(
"./input"
):
...
...
@@ -25,11 +39,22 @@ for image_id in image_ids:
if
int
(
difficult
)
==
1
:
difficult_flag
=
True
obj_name
=
obj
.
find
(
'name'
).
text
'''
!!!!!!!!!!!!注意事项!!!!!!!!!!!!
# 这一部分是当xml有无关的类的时候,可以取消下面代码的注释
# 利用对应的classes.txt来进行筛选!!!!!!!!!!!!
'''
# classes_path = 'model_data/voc_classes.txt'
# class_names = get_classes(classes_path)
# if obj_name not in class_names:
# continue
bndbox
=
obj
.
find
(
'bndbox'
)
left
=
bndbox
.
find
(
'xmin'
).
text
top
=
bndbox
.
find
(
'ymin'
).
text
right
=
bndbox
.
find
(
'xmax'
).
text
bottom
=
bndbox
.
find
(
'ymax'
).
text
if
difficult_flag
:
new_f
.
write
(
"%s %s %s %s %s difficult
\n
"
%
(
obj_name
,
left
,
top
,
right
,
bottom
))
else
:
...
...
get_map.py
浏览文件 @
d4b3142e
...
...
@@ -389,13 +389,28 @@ for txt_file in ground_truth_files_list:
is_difficult
=
True
else
:
class_name
,
left
,
top
,
right
,
bottom
=
line
.
split
()
except
ValueError
:
error_msg
=
"Error: File "
+
txt_file
+
" in the wrong format.
\n
"
error_msg
+=
" Expected: <class_name> <left> <top> <right> <bottom> ['difficult']
\n
"
error_msg
+=
" Received: "
+
line
error_msg
+=
"
\n\n
If you have a <class_name> with spaces between words you should remove them
\n
"
error_msg
+=
"by running the script
\"
remove_space.py
\"
or
\"
rename_class.py
\"
in the
\"
extra/
\"
folder."
error
(
error_msg
)
except
:
if
"difficult"
in
line
:
line_split
=
line
.
split
()
_difficult
=
line_split
[
-
1
]
bottom
=
line_split
[
-
2
]
right
=
line_split
[
-
3
]
top
=
line_split
[
-
4
]
left
=
line_split
[
-
5
]
class_name
=
""
for
name
in
line_split
[:
-
5
]:
class_name
+=
name
is_difficult
=
True
else
:
line_split
=
line
.
split
()
bottom
=
line_split
[
-
1
]
right
=
line_split
[
-
2
]
top
=
line_split
[
-
3
]
left
=
line_split
[
-
4
]
class_name
=
""
for
name
in
line_split
[:
-
4
]:
class_name
+=
name
# check if class is in the ignore list, if yes skip
if
class_name
in
args
.
ignore
:
continue
...
...
@@ -481,11 +496,17 @@ for class_index, class_name in enumerate(gt_classes):
for
line
in
lines
:
try
:
tmp_class_name
,
confidence
,
left
,
top
,
right
,
bottom
=
line
.
split
()
except
ValueError
:
error_msg
=
"Error: File "
+
txt_file
+
" in the wrong format.
\n
"
error_msg
+=
" Expected: <class_name> <confidence> <left> <top> <right> <bottom>
\n
"
error_msg
+=
" Received: "
+
line
error
(
error_msg
)
except
:
line_split
=
line
.
split
()
bottom
=
line_split
[
-
1
]
right
=
line_split
[
-
2
]
top
=
line_split
[
-
3
]
left
=
line_split
[
-
4
]
confidence
=
line_split
[
-
5
]
tmp_class_name
=
""
for
name
in
line_split
[:
-
5
]:
tmp_class_name
+=
name
if
tmp_class_name
==
class_name
:
#print("match")
bbox
=
left
+
" "
+
top
+
" "
+
right
+
" "
+
bottom
...
...
@@ -702,8 +723,9 @@ with open(results_files_path + "/results.txt", 'w') as results_file:
rounded_rec
=
[
'%.2f'
%
elem
for
elem
in
rec
]
results_file
.
write
(
text
+
"
\n
Precision: "
+
str
(
rounded_prec
)
+
"
\n
Recall :"
+
str
(
rounded_rec
)
+
"
\n\n
"
)
if
not
args
.
quiet
:
print
(
text
+
"
\t
||
\t
score_threhold=0.5 : "
+
"F1="
+
"{0:.2f}"
.
format
(
F1
[
score05_idx
])
\
+
" ; Recall="
+
"{0:.2f}%"
.
format
(
rec
[
score05_idx
]
*
100
)
+
" ; Precision="
+
"{0:.2f}%"
.
format
(
prec
[
score05_idx
]
*
100
))
if
(
len
(
rec
)
!=
0
):
print
(
text
+
"
\t
||
\t
score_threhold=0.5 : "
+
"F1="
+
"{0:.2f}"
.
format
(
F1
[
score05_idx
])
\
+
" ; Recall="
+
"{0:.2f}%"
.
format
(
rec
[
score05_idx
]
*
100
)
+
" ; Precision="
+
"{0:.2f}%"
.
format
(
prec
[
score05_idx
]
*
100
))
ap_dictionary
[
class_name
]
=
ap
n_images
=
counter_images_per_class
[
class_name
]
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录