Support dense full-AOI building evaluation
This commit is contained in:
@@ -82,6 +82,12 @@ def main() -> int:
|
||||
parser.add_argument("--split", default="val")
|
||||
parser.add_argument("--augment", action="store_true", help="Enable deterministic YOLO test-time augmentation.")
|
||||
parser.add_argument("--imgsz", type=int, default=640)
|
||||
parser.add_argument(
|
||||
"--max-det",
|
||||
type=int,
|
||||
default=1000,
|
||||
help="Maximum detections retained per tile; dense Belgian urban tiles exceed YOLO's default 300.",
|
||||
)
|
||||
args = parser.parse_args()
|
||||
|
||||
from ultralytics import YOLO
|
||||
@@ -106,6 +112,7 @@ def main() -> int:
|
||||
device=args.device,
|
||||
augment=args.augment,
|
||||
imgsz=args.imgsz,
|
||||
max_det=args.max_det,
|
||||
verbose=False,
|
||||
)
|
||||
observations: list[dict[str, Any]] = []
|
||||
@@ -155,6 +162,7 @@ def main() -> int:
|
||||
"match_iou": args.match_iou,
|
||||
"test_time_augmentation": args.augment,
|
||||
"inference_imgsz": args.imgsz,
|
||||
"max_detections_per_tile": args.max_det,
|
||||
"tile_count": len(tiles),
|
||||
"sweeps": sweeps,
|
||||
}
|
||||
|
||||
@@ -40,6 +40,8 @@ def training_command(
|
||||
seed: int,
|
||||
batch: int,
|
||||
workers: int,
|
||||
max_det: int = 1000,
|
||||
imgsz: int = 640,
|
||||
) -> list[str]:
|
||||
return [
|
||||
yolo,
|
||||
@@ -47,13 +49,14 @@ def training_command(
|
||||
f"model={model}",
|
||||
f"data={data}",
|
||||
f"epochs={epochs}",
|
||||
"imgsz=640",
|
||||
f"imgsz={imgsz}",
|
||||
f"batch={batch}",
|
||||
"device=0",
|
||||
f"workers={workers}",
|
||||
"patience=35",
|
||||
"cache=disk",
|
||||
"close_mosaic=20",
|
||||
f"max_det={max_det}",
|
||||
f"seed={seed}",
|
||||
"deterministic=True",
|
||||
f"project={project}",
|
||||
@@ -88,6 +91,8 @@ def main() -> int:
|
||||
parser.add_argument("--epochs", type=int, default=160)
|
||||
parser.add_argument("--batch", type=int, default=2)
|
||||
parser.add_argument("--workers", type=int, default=4)
|
||||
parser.add_argument("--max-det", type=int, default=1000)
|
||||
parser.add_argument("--imgsz", type=int, default=640)
|
||||
parser.add_argument("--seed", type=int, default=20260731)
|
||||
parser.add_argument("--yolo", default="yolo")
|
||||
parser.add_argument("--dry-run", action="store_true")
|
||||
@@ -133,6 +138,8 @@ def main() -> int:
|
||||
seed=args.seed + index,
|
||||
batch=args.batch,
|
||||
workers=args.workers,
|
||||
max_det=args.max_det,
|
||||
imgsz=args.imgsz,
|
||||
)
|
||||
if args.dry_run:
|
||||
print(json.dumps({"training_command": command}, indent=2))
|
||||
@@ -166,6 +173,10 @@ def main() -> int:
|
||||
str(report),
|
||||
"--device",
|
||||
"cuda:0",
|
||||
"--max-det",
|
||||
str(args.max_det),
|
||||
"--imgsz",
|
||||
str(args.imgsz),
|
||||
],
|
||||
iteration_dir / f"{role}.log",
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user