From 51213e31753db9f3e06d9b0d8be78e0c7d784e52 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 14 Jun 2022 14:21:59 +0200 Subject: [PATCH 1/3] Reject webcam inference on Colab/Kaggle Improve user error understanding for https://github.com/ultralytics/yolov5/issues/8180 --- utils/dataloaders.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/utils/dataloaders.py b/utils/dataloaders.py index 4690f0c2e81e..b65f66e3bec4 100755 --- a/utils/dataloaders.py +++ b/utils/dataloaders.py @@ -28,7 +28,7 @@ from utils.augmentations import Albumentations, augment_hsv, copy_paste, letterbox, mixup, random_perspective from utils.general import (DATASETS_DIR, LOGGER, NUM_THREADS, check_dataset, check_requirements, check_yaml, clean_str, - cv2, segments2boxes, xyn2xy, xywh2xyxy, xywhn2xyxy, xyxy2xywhn) + cv2, is_colab, is_kaggle, segments2boxes, xyn2xy, xywh2xyxy, xywhn2xyxy, xyxy2xywhn) from utils.torch_utils import torch_distributed_zero_first # Parameters @@ -83,7 +83,7 @@ def exif_transpose(image): 5: Image.TRANSPOSE, 6: Image.ROTATE_270, 7: Image.TRANSVERSE, - 8: Image.ROTATE_90,}.get(orientation) + 8: Image.ROTATE_90, }.get(orientation) if method is not None: image = image.transpose(method) del exif[0x0112] @@ -321,6 +321,9 @@ def __init__(self, sources='streams.txt', img_size=640, stride=32, auto=True): import pafy s = pafy.new(s).getbest(preftype="mp4").url # YouTube URL s = eval(s) if s.isnumeric() else s # i.e. s = '0' local webcam + if s == 0: + assert not is_colab(), '--source 0 webcam inference is not supported on Colab notebooks' + assert not is_kaggle(), '--source 0 webcam inference is not supported on Kaggle notebooks' cap = cv2.VideoCapture(s) assert cap.isOpened(), f'{st}Failed to open {s}' w = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) From 1207b24685754acd710c1736721cad0951e470ce Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 14 Jun 2022 12:22:46 +0000 Subject: [PATCH 2/3] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- utils/dataloaders.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/dataloaders.py b/utils/dataloaders.py index b65f66e3bec4..68a56f13fce7 100755 --- a/utils/dataloaders.py +++ b/utils/dataloaders.py @@ -83,7 +83,7 @@ def exif_transpose(image): 5: Image.TRANSPOSE, 6: Image.ROTATE_270, 7: Image.TRANSVERSE, - 8: Image.ROTATE_90, }.get(orientation) + 8: Image.ROTATE_90,}.get(orientation) if method is not None: image = image.transpose(method) del exif[0x0112] From d752c4cece8d871c55232f612eecf1d247175c02 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 14 Jun 2022 14:27:48 +0200 Subject: [PATCH 3/3] cleanup --- utils/dataloaders.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/dataloaders.py b/utils/dataloaders.py index 68a56f13fce7..8f32c301b772 100755 --- a/utils/dataloaders.py +++ b/utils/dataloaders.py @@ -322,8 +322,8 @@ def __init__(self, sources='streams.txt', img_size=640, stride=32, auto=True): s = pafy.new(s).getbest(preftype="mp4").url # YouTube URL s = eval(s) if s.isnumeric() else s # i.e. s = '0' local webcam if s == 0: - assert not is_colab(), '--source 0 webcam inference is not supported on Colab notebooks' - assert not is_kaggle(), '--source 0 webcam inference is not supported on Kaggle notebooks' + assert not is_colab(), '--source 0 webcam unsupported on Colab. Rerun command in a local environment.' + assert not is_kaggle(), '--source 0 webcam unsupported on Kaggle. Rerun command in a local environment.' cap = cv2.VideoCapture(s) assert cap.isOpened(), f'{st}Failed to open {s}' w = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))