diff --git a/CHANGELOG.md b/CHANGELOG.md index a3fb7ab6..f9dbdead 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +## 1.5.3 + +### Enhancement +- Free intermediate arrays (`origin_img`, `img`, `ort_inputs`, `output`) at dead points during YoloX `image_processing()` to reduce peak memory during inference + ## 1.5.2 ### Fix diff --git a/unstructured_inference/__version__.py b/unstructured_inference/__version__.py index 928be505..e375e78d 100644 --- a/unstructured_inference/__version__.py +++ b/unstructured_inference/__version__.py @@ -1 +1 @@ -__version__ = "1.5.2" # pragma: no cover +__version__ = "1.5.3" # pragma: no cover diff --git a/unstructured_inference/models/yolox.py b/unstructured_inference/models/yolox.py index 932242ec..d53bc085 100644 --- a/unstructured_inference/models/yolox.py +++ b/unstructured_inference/models/yolox.py @@ -108,12 +108,15 @@ def image_processing( input_shape = (1024, 768) origin_img = np.array(image) img, ratio = preprocess(origin_img, input_shape) + del origin_img # Free full-size image array before ONNX inference session = self.model ort_inputs = {session.get_inputs()[0].name: img[None, :, :, :]} output = session.run(None, ort_inputs) + del img, ort_inputs # Free preprocessed inputs after inference # TODO(benjamin): check for p6 predictions = demo_postprocess(output[0], input_shape, p6=False)[0] + del output boxes = predictions[:, :4] scores = predictions[:, 4:5] * predictions[:, 5:]