-
Notifications
You must be signed in to change notification settings - Fork 2
/
eval.py
101 lines (81 loc) · 2.16 KB
/
eval.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
import cv2
import numpy as np
import os
#预测结果路径
pred_path = "I:\lunwen\deep3/result_acc0.9704night"
#标签路径
lab_path = r"I:\lunwen\deep3\dataset2\datasets\night\png"
def tpcount(imgp,imgl):
n = 0
for i in range(WIDTH):
for j in range(HIGTH):
if imgp[i,j][0] == 255 and imgl[i,j] == 255:
n = n+1
return n
def fncount (imgp,imgl):
n = 0
for i in range(WIDTH):
for j in range(HIGTH):
if imgl[i,j] == 255 and imgp[i,j][0] == 0:
n = n+1
return n
def fpcount(imgp,imgl):
n = 0
for i in range(WIDTH):
for j in range(HIGTH):
if imgl[i,j] == 0 and imgp[i,j][0] == 255:
n+=1
return n
def tncount(imgp,imgl):
n=0
for i in range(WIDTH):
for j in range(HIGTH):
if imgl[i,j] == 0 and imgp[i,j][0] == 0:
n += 1
return n
imgs = os.listdir(pred_path)
a = len(imgs)
TP = 0
FN = 0
FP = 0
TN = 0
c = 0
for name in imgs:
imgp = cv2.imread(pred_path + '/' + name, -1)
imgp = np.array(imgp)
imgl = cv2.imread(lab_path + '/' + name, -1)
imgl = np.array(imgl)
WIDTH = imgl.shape[0]
HIGTH = imgl.shape[1]
TP += tpcount(imgp, imgl)
FN += fncount(imgp, imgl)
FP += fpcount(imgp, imgl)
TN += tncount(imgp, imgl)
c += 1
print('已经计算:'+str(c) + ',剩余数目:'+str(a-c))
print('TP:'+str(TP))
print('FN:'+str(FN))
print('FP:'+str(FP))
print('TN:'+str(TN))
#准确率 accuracy
zq = (int(TN)+int(TP))/(int(WIDTH)*int(HIGTH)*int(len(imgs)))
#精确率 precision
jq = int(TP)/(int(TP)+int(FP))
#召回率 recall
zh = int(TP)/(int(TP)+int(FN))
#F1 F-score
f1 = int(TP)*2/(int(TP)*2+int(FN)+int(FP))
# Miou
Miou = ((int(TP)/(int(TP)+int(FP)+int(FN)))+(int(TN)/(int(TN)+int(FP)+int(FN))))
# Error Rate
ER = (int(FP)+int(FN))/(int(TP)+int(FP)+int(TN)+int(FN))
# FPR
FPR = int(FP)/(int(FP)+int(TN))
# TPR
TPR = int(TP) / (int(TP) + int(FN))
print('准确率(accuracy):'+ str(zq))
print('精确率(precision):'+ str(jq))
print('召回率(recall):'+ str(zh))
print('F1值(F-score):'+ str(f1))
print('Miou:'+ str(0.5*(Miou)))
print('ER:'+ str(ER))