Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
changzheng_mark
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
EvilCalf
changzheng_mark
Commits
c381f76c
Commit
c381f76c
authored
Jul 14, 2022
by
EvilCalf
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Upload New File
parent
1e6039fc
Pipeline
#309
canceled with stages
Changes
1
Pipelines
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
139 additions
and
0 deletions
+139
-0
comparison.py
comparison.py
+139
-0
No files found.
comparison.py
0 → 100644
View file @
c381f76c
import
os
from
unittest
import
result
import
pandas
as
pd
import
json
dirname
=
'人工标注'
outputname
=
'人工标注比对结果'
# dirname = 'AI辅助标注'
# outputname='AI辅助标注比对结果'
# dirname = '纯AI'
# outputname='纯AI比对结果'
studyID_out
=
[]
seriesID_out
=
[]
labelout
=
[]
gold_labelout
=
[]
posout
=
[]
gold_posout
=
[]
cnt
=
[]
cntid
=
[]
marker_out
=
[]
def
iou_3d
(
box1
,
box2
):
'''
box [x1,y1,z1,x2,y2,z2] 分别是两对角定点的坐标
'''
area1
=
(
box1
[
3
]
-
box1
[
0
])
*
(
box1
[
4
]
-
box1
[
1
])
*
(
box1
[
5
]
-
box1
[
2
])
area2
=
(
box2
[
3
]
-
box2
[
0
])
*
(
box2
[
4
]
-
box2
[
1
])
*
(
box2
[
5
]
-
box2
[
2
])
area_sum
=
area1
+
area2
# 计算重叠部分 设重叠box坐标为 [x1,y1,z1,x2,y2,z2]
x1
=
max
(
box1
[
0
],
box2
[
0
])
y1
=
max
(
box1
[
1
],
box2
[
1
])
z1
=
max
(
box1
[
2
],
box2
[
2
])
x2
=
min
(
box1
[
3
],
box2
[
3
])
y2
=
min
(
box1
[
4
],
box2
[
4
])
z2
=
min
(
box1
[
5
],
box2
[
5
])
if
x1
>=
x2
or
y1
>=
y2
or
z1
>=
z2
:
return
0
else
:
inter_area
=
(
x2
-
x1
)
*
(
y2
-
y1
)
*
(
z2
-
z1
)
return
inter_area
/
(
area_sum
-
inter_area
)
gold
=
pd
.
read_excel
(
"原始数据/金标准.xlsx"
,
encoding
=
'gbk'
,
header
=
0
)
num
=
0
for
root
,
dirs
,
files
in
os
.
walk
(
dirname
):
for
file
in
files
:
num
=
num
+
1
print
(
str
(
num
)
+
"/"
+
str
(
len
(
files
)))
filename
=
root
+
"/"
+
file
df
=
pd
.
read_csv
(
filename
,
encoding
=
'gbk'
,
header
=
0
)
for
indexs
in
df
.
index
:
data
=
df
.
loc
[
indexs
]
.
values
marker
=
data
[
1
]
studyID
=
data
[
2
]
seriesID
=
data
[
3
]
startTime
=
data
[
4
]
endTime
=
data
[
5
]
label
=
data
[
6
]
label
=
json
.
loads
(
label
)
# posAI=label['position']
leftTopPoint
=
label
[
'rectangle'
][
"leftTopPoint"
]
rightBottomPoint
=
label
[
'rectangle'
][
"rightBottomPoint"
]
pos
=
[
leftTopPoint
[
'x'
],
leftTopPoint
[
'y'
],
leftTopPoint
[
'z'
],
rightBottomPoint
[
'x'
],
rightBottomPoint
[
'y'
],
rightBottomPoint
[
'z'
]]
# pos=[posAI[0],posAI[1],posAI[2],posAI[3],posAI[4],posAI[5]]
typeID
=
data
[
7
]
typeNmae
=
data
[
8
]
flag
=
0
try
:
gold_place
=
gold
.
loc
[
gold
[
'序列号'
]
==
seriesID
]
.
index
[
0
]
except
:
print
(
"没有找到金标准病例"
)
break
for
gold_indexs
in
range
(
gold_place
,
gold
.
shape
[
0
]):
gold_data
=
gold
.
loc
[
gold_indexs
]
.
values
if
gold_data
[
1
]
==
seriesID
:
flag
=
1
gold_label
=
gold_data
[
2
]
gold_label
=
json
.
loads
(
gold_label
)
gold_leftTopPoint
=
gold_label
[
'rectangle'
][
"leftTopPoint"
]
gold_rightBottomPoint
=
gold_label
[
'rectangle'
][
"rightBottomPoint"
]
gold_pos
=
[
gold_leftTopPoint
[
'x'
],
gold_leftTopPoint
[
'y'
],
gold_leftTopPoint
[
'z'
],
gold_rightBottomPoint
[
'x'
],
gold_rightBottomPoint
[
'y'
],
gold_rightBottomPoint
[
'z'
]]
# gold_pos=[gold_label['position'][0],gold_label['position'][1],gold_label['position'][2],gold_label['position'][3],gold_label['position'][4],gold_label['position'][5]]
iou
=
iou_3d
(
pos
,
gold_pos
)
gold_type
=
gold_data
[
3
]
gold_typename
=
gold_data
[
4
]
if
iou
==
1
and
typeID
==
gold_type
:
marker_out
.
append
(
marker
)
studyID_out
.
append
(
studyID
)
seriesID_out
.
append
(
seriesID
)
labelout
.
append
(
label
)
gold_labelout
.
append
(
gold_label
)
posout
.
append
(
typeNmae
)
gold_posout
.
append
(
gold_typename
)
cnt
.
append
(
"完全正确"
)
cntid
.
append
(
1
)
break
if
iou
==
1
and
typeID
!=
gold_type
:
marker_out
.
append
(
marker
)
studyID_out
.
append
(
studyID
)
seriesID_out
.
append
(
seriesID
)
labelout
.
append
(
label
)
gold_labelout
.
append
(
gold_label
)
posout
.
append
(
typeNmae
)
gold_posout
.
append
(
gold_typename
)
cnt
.
append
(
"位置正确,分类错误"
)
cntid
.
append
(
1
)
break
elif
iou
<
1
and
typeID
!=
gold_type
and
iou
>
0.5
:
marker_out
.
append
(
marker
)
studyID_out
.
append
(
studyID
)
seriesID_out
.
append
(
seriesID
)
labelout
.
append
(
label
)
gold_labelout
.
append
(
gold_label
)
posout
.
append
(
typeNmae
)
gold_posout
.
append
(
gold_typename
)
cnt
.
append
(
"位置调整"
)
cntid
.
append
(
0
)
break
elif
gold_data
[
1
]
!=
seriesID
and
flag
==
1
:
marker_out
.
append
(
marker
)
studyID_out
.
append
(
studyID
)
seriesID_out
.
append
(
seriesID
)
labelout
.
append
(
label
)
gold_labelout
.
append
(
""
)
posout
.
append
(
typeNmae
)
gold_posout
.
append
(
""
)
cnt
.
append
(
"位置错误"
)
cntid
.
append
(
0
)
break
output
=
pd
.
DataFrame
({
"检查号"
:
studyID_out
,
"序列号"
:
seriesID_out
,
"标注医生"
:
marker_out
,
"标注位置"
:
labelout
,
"金标准位置"
:
gold_labelout
,
"标注分类"
:
posout
,
"金标准分类"
:
gold_posout
,
"比对结果"
:
cnt
})
output
.
to_csv
(
outputname
+
".csv"
,
encoding
=
'gbk'
)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment