From ed9e5c23002bc8612972b41dfafbab7bb88de3ad Mon Sep 17 00:00:00 2001 From: madelson <1269046+madelson@users.noreply.github.com> Date: Sat, 15 Jul 2023 07:33:50 -0400 Subject: [PATCH] Remove enumerable re-enumeration Avoids quadratic re-enumeration of the file system and the bounding box extraction if the user runs the program with a longer list of images. --- .../ObjectDetectionConsoleApp/Program.cs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/samples/csharp/getting-started/DeepLearning_ObjectDetection_Onnx/ObjectDetectionConsoleApp/Program.cs b/samples/csharp/getting-started/DeepLearning_ObjectDetection_Onnx/ObjectDetectionConsoleApp/Program.cs index cf637ae79..88994fe98 100644 --- a/samples/csharp/getting-started/DeepLearning_ObjectDetection_Onnx/ObjectDetectionConsoleApp/Program.cs +++ b/samples/csharp/getting-started/DeepLearning_ObjectDetection_Onnx/ObjectDetectionConsoleApp/Program.cs @@ -17,7 +17,7 @@ try { // Load Data - IEnumerable images = ImageNetData.ReadFromFile(imagesFolder); + ImageNetData[] images = ImageNetData.ReadFromFile(imagesFolder).ToArray(); IDataView imageDataView = mlContext.Data.LoadFromEnumerable(images); // Create instance of model scorer @@ -32,13 +32,14 @@ var boundingBoxes = probabilities .Select(probability => parser.ParseOutputs(probability)) - .Select(boxes => parser.FilterBoundingBoxes(boxes, 5, .5F)); + .Select(boxes => parser.FilterBoundingBoxes(boxes, 5, .5F)) + .ToArray(); // Draw bounding boxes for detected objects in each of the images - for (var i = 0; i < images.Count(); i++) + for (var i = 0; i < images.Length; i++) { - string imageFileName = images.ElementAt(i).Label; - IList detectedObjects = boundingBoxes.ElementAt(i); + string imageFileName = images[i].Label; + IList detectedObjects = boundingBoxes[i]; DrawBoundingBox(imagesFolder, outputFolder, imageFileName, detectedObjects);