-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathevaluate.py
More file actions
40 lines (31 loc) · 1.11 KB
/
Copy pathevaluate.py
File metadata and controls
40 lines (31 loc) · 1.11 KB
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
import argparse
import json
from ultralytics import YOLO
def evaluate(model_path, data_yaml, img_size, conf_threshold):
model = YOLO(model_path)
metrics = model.val(
data=data_yaml,
imgsz=img_size,
conf=conf_threshold,
plots=True,
)
results = {
"mAP@0.5": round(metrics.box.map50, 4),
"mAP@0.5:0.95": round(metrics.box.map, 4),
"precision": round(metrics.box.mp, 4),
"recall": round(metrics.box.mr, 4),
}
print("\n=== Evaluation Results ===")
for k, v in results.items():
print(f" {k}: {v}")
with open("eval_results.json", "w") as f:
json.dump(results, f, indent=2)
print("\nSaved to eval_results.json")
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("--model", default="models/best.pt")
parser.add_argument("--data", default="data/defects.yaml")
parser.add_argument("--imgsz", type=int, default=640)
parser.add_argument("--conf", type=float, default=0.4)
args = parser.parse_args()
evaluate(args.model, args.data, args.imgsz, args.conf)