title: YOLOv3 resolution and execution time per image inference
body: <p>I would like to get more insight into why the execution time per inference changes when the image size changes. Here is what I think I know and why I'm confused: </p>
  
  <p>The standard YOLOv3 implementations are provided in 3 different resolutions (Yolov3-320, YOLOv3-416, YOLOv3-608). This means the Yolo architecture may accept any image size but internally it is up or downscaled to the target resolution so there aren't any shape issues. </p>
  
  <p>For me that means when looking at execution time it doesn't make much difference whether I provide an input image of size 1024x1024 or 800x800 when using for example the YOLOv3-416 architecture. </p>
  
  <p>But when I do image inference it actually does make a huge difference whether I choose the lower resolution image over the higher resolution image. And also the quality of the detections changes slightly too. With the same image downscaled before the model the detections are sometimes not as good.</p>
  
  <p>For inference I use the opencv integration with:</p>
  
  <pre><code>net = cv2.dnn.readNetFromDarknet(model_cfg, model_weights)
  net.setPreferableBackend(cv2.dnn.DNN_BACKEND_OPENCV)
  net.setPreferableTarget(cv2.dnn.DNN_TARGET_CPU)
  
  IMG_WIDTH=frame.shape[1]
  IMG_HEIGHT=frame.shape[0]
  blob = cv2.dnn.blobFromImage(frame, 1 / float(255), (IMG_WIDTH, IMG_HEIGHT),[0, 0, 0], 1, crop=False)
  
  net.setInput(blob)
  outs = net.forward(get_outputs_names(net))
  </code></pre>
  
  <p>But I measure the inference time only for the forward pass through the network. But maybe it gives you more insight into why the inference time changes when I scale the image before the inference.</p>