From 856eb969d7ec547e467a0ce085f7fb17c8c09529 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 1 Nov 2022 15:40:48 +0100 Subject: [PATCH 1/2] Improved check_online() robustness YOLOv5-wide improvement, not just in check_requirements() Signed-off-by: Glenn Jocher --- utils/general.py | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/utils/general.py b/utils/general.py index cdf4f502fc9c..41a4d10b64ea 100644 --- a/utils/general.py +++ b/utils/general.py @@ -283,11 +283,16 @@ def file_size(path): def check_online(): # Check internet connectivity import socket - try: - socket.create_connection(("1.1.1.1", 443), 5) # check host accessibility - return True - except OSError: - return False + + def run_once(): + # Check once + try: + socket.create_connection(("1.1.1.1", 443), 5) # check host accessibility + return True + except OSError: + return False + + return run_once() or run_once() # check twice to increase robustness to intermittent connectivity issues def git_describe(path=ROOT): # path must be a directory @@ -369,7 +374,7 @@ def check_requirements(requirements=ROOT / 'requirements.txt', exclude=(), insta if s and install and AUTOINSTALL: # check environment variable LOGGER.info(f"{prefix} YOLOv5 requirement{'s' * (n > 1)} {s}not found, attempting AutoUpdate...") try: - assert check_online() or check_online(), "AutoUpdate skipped (offline)" + assert check_online(), "AutoUpdate skipped (offline)" LOGGER.info(check_output(f'pip install {s} {cmds}', shell=True).decode()) source = file if 'file' in locals() else requirements s = f"{prefix} {n} package{'s' * (n > 1)} updated per {source}\n" \ @@ -863,6 +868,8 @@ def non_max_suppression( if isinstance(prediction, (list, tuple)): # YOLOv5 model in validation model, output = (inference_out, loss_out) prediction = prediction[0] # select only inference output + prediction = prediction.permute((0, 2, 1)).contiguous() # TODO: Remove and update function for channels dim 1 + device = prediction.device mps = 'mps' in device.type # Apple MPS if mps: # MPS not fully supported yet, convert tensors to CPU before NMS From 90fa49e8963434a083e20aea6c9b3cbd995553ac Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 1 Nov 2022 15:41:26 +0100 Subject: [PATCH 2/2] Update general.py Signed-off-by: Glenn Jocher --- utils/general.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/utils/general.py b/utils/general.py index 41a4d10b64ea..aae466ba5c90 100644 --- a/utils/general.py +++ b/utils/general.py @@ -868,8 +868,6 @@ def non_max_suppression( if isinstance(prediction, (list, tuple)): # YOLOv5 model in validation model, output = (inference_out, loss_out) prediction = prediction[0] # select only inference output - prediction = prediction.permute((0, 2, 1)).contiguous() # TODO: Remove and update function for channels dim 1 - device = prediction.device mps = 'mps' in device.type # Apple MPS if mps: # MPS not fully supported yet, convert tensors to CPU before NMS