From 67ae86f0068aac5a2e738c74c16216982273e159 Mon Sep 17 00:00:00 2001
From: Laughing <61612323+Laughing-q@users.noreply.github.com>
Date: Wed, 24 Jan 2024 01:50:01 +0800
Subject: [PATCH] Clean up unused `imgsz` (#7771)

---
 ultralytics/data/build.py       | 11 +++++------
 ultralytics/data/loaders.py     | 16 ++++------------
 ultralytics/engine/predictor.py |  2 +-
 3 files changed, 10 insertions(+), 19 deletions(-)

diff --git a/ultralytics/data/build.py b/ultralytics/data/build.py
index f5c4219f..c441ee76 100644
--- a/ultralytics/data/build.py
+++ b/ultralytics/data/build.py
@@ -150,13 +150,12 @@ def check_source(source):
     return source, webcam, screenshot, from_img, in_memory, tensor
 
 
-def load_inference_source(source=None, imgsz=640, vid_stride=1, buffer=False):
+def load_inference_source(source=None, vid_stride=1, buffer=False):
     """
     Loads an inference source for object detection and applies necessary transformations.
 
     Args:
         source (str, Path, Tensor, PIL.Image, np.ndarray): The input source for inference.
-        imgsz (int, optional): The size of the image for inference. Default is 640.
         vid_stride (int, optional): The frame interval for video sources. Default is 1.
         buffer (bool, optional): Determined whether stream frames will be buffered. Default is False.
 
@@ -172,13 +171,13 @@ def load_inference_source(source=None, imgsz=640, vid_stride=1, buffer=False):
     elif in_memory:
         dataset = source
     elif webcam:
-        dataset = LoadStreams(source, imgsz=imgsz, vid_stride=vid_stride, buffer=buffer)
+        dataset = LoadStreams(source, vid_stride=vid_stride, buffer=buffer)
     elif screenshot:
-        dataset = LoadScreenshots(source, imgsz=imgsz)
+        dataset = LoadScreenshots(source)
     elif from_img:
-        dataset = LoadPilAndNumpy(source, imgsz=imgsz)
+        dataset = LoadPilAndNumpy(source)
     else:
-        dataset = LoadImages(source, imgsz=imgsz, vid_stride=vid_stride)
+        dataset = LoadImages(source, vid_stride=vid_stride)
 
     # Attach source types to the dataset
     setattr(dataset, "source_type", source_type)
diff --git a/ultralytics/data/loaders.py b/ultralytics/data/loaders.py
index a2cc2be7..6faf90c3 100644
--- a/ultralytics/data/loaders.py
+++ b/ultralytics/data/loaders.py
@@ -38,7 +38,6 @@ class LoadStreams:
 
     Attributes:
         sources (str): The source input paths or URLs for the video streams.
-        imgsz (int): The image size for processing, defaults to 640.
         vid_stride (int): Video frame-rate stride, defaults to 1.
         buffer (bool): Whether to buffer input streams, defaults to False.
         running (bool): Flag to indicate if the streaming thread is running.
@@ -60,13 +59,12 @@ class LoadStreams:
         __len__: Return the length of the sources object.
     """
 
-    def __init__(self, sources="file.streams", imgsz=640, vid_stride=1, buffer=False):
+    def __init__(self, sources="file.streams", vid_stride=1, buffer=False):
         """Initialize instance variables and check for consistent input stream shapes."""
         torch.backends.cudnn.benchmark = True  # faster for fixed-size inference
         self.buffer = buffer  # buffer input streams
         self.running = True  # running flag for Thread
         self.mode = "stream"
-        self.imgsz = imgsz
         self.vid_stride = vid_stride  # video frame-rate stride
 
         sources = Path(sources).read_text().rsplit() if os.path.isfile(sources) else [sources]
@@ -193,7 +191,6 @@ class LoadScreenshots:
 
     Attributes:
         source (str): The source input indicating which screen to capture.
-        imgsz (int): The image size for processing, defaults to 640.
         screen (int): The screen number to capture.
         left (int): The left coordinate for screen capture area.
         top (int): The top coordinate for screen capture area.
@@ -210,7 +207,7 @@ class LoadScreenshots:
         __next__: Captures the next screenshot and returns it.
     """
 
-    def __init__(self, source, imgsz=640):
+    def __init__(self, source):
         """Source = [screen_number left top width height] (pixels)."""
         check_requirements("mss")
         import mss  # noqa
@@ -223,7 +220,6 @@ class LoadScreenshots:
             left, top, width, height = (int(x) for x in params)
         elif len(params) == 5:
             self.screen, left, top, width, height = (int(x) for x in params)
-        self.imgsz = imgsz
         self.mode = "stream"
         self.frame = 0
         self.sct = mss.mss()
@@ -258,7 +254,6 @@ class LoadImages:
     various formats, including single image files, video files, and lists of image and video paths.
 
     Attributes:
-        imgsz (int): Image size, defaults to 640.
         files (list): List of image and video file paths.
         nf (int): Total number of files (images and videos).
         video_flag (list): Flags indicating whether a file is a video (True) or an image (False).
@@ -274,7 +269,7 @@ class LoadImages:
         _new_video(path): Create a new cv2.VideoCapture object for a given video path.
     """
 
-    def __init__(self, path, imgsz=640, vid_stride=1):
+    def __init__(self, path, vid_stride=1):
         """Initialize the Dataloader and raise FileNotFoundError if file not found."""
         parent = None
         if isinstance(path, str) and Path(path).suffix == ".txt":  # *.txt file with img/vid/dir on each line
@@ -298,7 +293,6 @@ class LoadImages:
         videos = [x for x in files if x.split(".")[-1].lower() in VID_FORMATS]
         ni, nv = len(images), len(videos)
 
-        self.imgsz = imgsz
         self.files = images + videos
         self.nf = ni + nv  # number of files
         self.video_flag = [False] * ni + [True] * nv
@@ -377,7 +371,6 @@ class LoadPilAndNumpy:
     Attributes:
         paths (list): List of image paths or autogenerated filenames.
         im0 (list): List of images stored as Numpy arrays.
-        imgsz (int): Image size, defaults to 640.
         mode (str): Type of data being processed, defaults to 'image'.
         bs (int): Batch size, equivalent to the length of `im0`.
         count (int): Counter for iteration, initialized at 0 during `__iter__()`.
@@ -386,13 +379,12 @@ class LoadPilAndNumpy:
         _single_check(im): Validate and format a single image to a Numpy array.
     """
 
-    def __init__(self, im0, imgsz=640):
+    def __init__(self, im0):
         """Initialize PIL and Numpy Dataloader."""
         if not isinstance(im0, list):
             im0 = [im0]
         self.paths = [getattr(im, "filename", f"image{i}.jpg") for i, im in enumerate(im0)]
         self.im0 = [self._single_check(im) for im in im0]
-        self.imgsz = imgsz
         self.mode = "image"
         # Generate fake paths
         self.bs = len(self.im0)
diff --git a/ultralytics/engine/predictor.py b/ultralytics/engine/predictor.py
index e7ebc505..28b15c2f 100644
--- a/ultralytics/engine/predictor.py
+++ b/ultralytics/engine/predictor.py
@@ -226,7 +226,7 @@ class BasePredictor:
             else None
         )
         self.dataset = load_inference_source(
-            source=source, imgsz=self.imgsz, vid_stride=self.args.vid_stride, buffer=self.args.stream_buffer
+            source=source, vid_stride=self.args.vid_stride, buffer=self.args.stream_buffer
         )
         self.source_type = self.dataset.source_type
         if not getattr(self, "stream", True) and (