code: def googlenet_resize(im, targ, min_area_frac, min_aspect_ratio, max_aspect_ratio, flip_hw_p, interpolation=cv2.INTER_AREA):
      
      h,w,*_ = im.shape
      area = h*w
      for _ in range(10):
          targetArea = random.uniform(min_area_frac, 1.0) * area
          aspectR = random.uniform(min_aspect_ratio, max_aspect_ratio)
          ww = int(np.sqrt(targetArea * aspectR) + 0.5)
          hh = int(np.sqrt(targetArea / aspectR) + 0.5)
          if flip_hw_p:
              ww, hh = hh, ww
          if hh <= h and ww <= w:
              x1 = 0 if w == ww else random.randint(0, w - ww)
              y1 = 0 if h == hh else random.randint(0, h - hh)
              out = im[y1:y1 + hh, x1:x1 + ww]
              out = cv2.resize(out, (targ, targ), interpolation=interpolation)
              return out
      out = scale_min(im, targ, interpolation=interpolation)
      out = center_crop(out)
      return out
docs: Randomly crop an image with an aspect ratio and returns a squared resized image of size targ
      
      References:
      1. https://arxiv.org/pdf/1409.4842.pdf
      2. https://arxiv.org/pdf/1802.07888.pdf