Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
FL1623863129
YOLOX
提交
6c874ce4
Y
YOLOX
项目概览
FL1623863129
/
YOLOX
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Y
YOLOX
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
6c874ce4
编写于
1月 12, 2022
作者:
Y
yyqgood
提交者:
GitHub
1月 12, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
chore(data): Adapt to COCO format dataset (#1052)
chore(data): Adapt to COCO format dataset
上级
d669fd38
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
31 addition
and
2 deletion
+31
-2
tools/eval.py
tools/eval.py
+1
-0
yolox/evaluators/coco_evaluator.py
yolox/evaluators/coco_evaluator.py
+28
-1
yolox/exp/yolox_base.py
yolox/exp/yolox_base.py
+2
-1
未找到文件。
tools/eval.py
浏览文件 @
6c874ce4
...
...
@@ -144,6 +144,7 @@ def main(exp, args, num_gpu):
evaluator
=
exp
.
get_evaluator
(
args
.
batch_size
,
is_distributed
,
args
.
test
,
args
.
legacy
)
evaluator
.
per_class_mAP
=
True
evaluator
.
per_class_AR
=
True
torch
.
cuda
.
set_device
(
rank
)
model
.
cuda
(
rank
)
...
...
yolox/evaluators/coco_evaluator.py
浏览文件 @
6c874ce4
...
...
@@ -27,9 +27,33 @@ from yolox.utils import (
)
def
per_class_AR_table
(
coco_eval
,
class_names
=
COCO_CLASSES
,
headers
=
[
"class"
,
"AR"
],
colums
=
6
):
per_class_AR
=
{}
recalls
=
coco_eval
.
eval
[
"recall"
]
# dimension of recalls: [TxKxAxM]
# recall has dims (iou, cls, area range, max dets)
assert
len
(
class_names
)
==
recalls
.
shape
[
1
]
for
idx
,
name
in
enumerate
(
class_names
):
recall
=
recalls
[:,
idx
,
0
,
-
1
]
recall
=
recall
[
recall
>
-
1
]
ar
=
np
.
mean
(
recall
)
if
recall
.
size
else
float
(
"nan"
)
per_class_AR
[
name
]
=
float
(
ar
*
100
)
num_cols
=
min
(
colums
,
len
(
per_class_AR
)
*
len
(
headers
))
result_pair
=
[
x
for
pair
in
per_class_AR
.
items
()
for
x
in
pair
]
row_pair
=
itertools
.
zip_longest
(
*
[
result_pair
[
i
::
num_cols
]
for
i
in
range
(
num_cols
)])
table_headers
=
headers
*
(
num_cols
//
len
(
headers
))
table
=
tabulate
(
row_pair
,
tablefmt
=
"pipe"
,
floatfmt
=
".3f"
,
headers
=
table_headers
,
numalign
=
"left"
,
)
return
table
def
per_class_mAP_table
(
coco_eval
,
class_names
=
COCO_CLASSES
,
headers
=
[
"class"
,
"AP"
],
colums
=
6
):
per_class_mAP
=
{}
precisions
=
coco_eval
.
eval
[
"precision"
]
# dimension of precisions: [TxRxKxAxM]
# precision has dims (iou, recall, cls, area range, max dets)
assert
len
(
class_names
)
==
precisions
.
shape
[
2
]
...
...
@@ -66,6 +90,7 @@ class COCOEvaluator:
num_classes
:
int
,
testdev
:
bool
=
False
,
per_class_mAP
:
bool
=
False
,
per_class_AR
:
bool
=
False
,
):
"""
Args:
...
...
@@ -254,7 +279,9 @@ class COCOEvaluator:
cocoEval
.
summarize
()
info
+=
redirect_string
.
getvalue
()
if
self
.
per_class_mAP
:
info
+=
"per class mAP:
\n
"
+
per_class_mAP_table
(
cocoEval
)
info
+=
"per class mAP:
\n
"
+
per_class_mAP_table
(
cocoEval
)
+
"
\n
"
if
self
.
per_class_AR
:
info
+=
"per class AR:
\n
"
+
per_class_AR_table
(
cocoEval
)
+
"
\n
"
return
cocoEval
.
stats
[
0
],
cocoEval
.
stats
[
1
],
info
else
:
return
0
,
0
,
info
yolox/exp/yolox_base.py
浏览文件 @
6c874ce4
...
...
@@ -35,6 +35,7 @@ class Exp(BaseExp):
self
.
data_dir
=
None
self
.
train_ann
=
"instances_train2017.json"
self
.
val_ann
=
"instances_val2017.json"
self
.
test_ann
=
"instances_test2017.json"
# --------------- transform config ----------------- #
self
.
mosaic_prob
=
1.0
...
...
@@ -242,7 +243,7 @@ class Exp(BaseExp):
valdataset
=
COCODataset
(
data_dir
=
self
.
data_dir
,
json_file
=
self
.
val_ann
if
not
testdev
else
"image_info_test-dev2017.json"
,
json_file
=
self
.
val_ann
if
not
testdev
else
self
.
test_ann
,
name
=
"val2017"
if
not
testdev
else
"test2017"
,
img_size
=
self
.
test_size
,
preproc
=
ValTransform
(
legacy
=
legacy
),
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录