我想创建一个 .mlpackage 或 .mlmodel 文件,我可以将其导入 Xcode 中以进行图像分割。为此,我想使用 YOLO 中的分段包来检查它是否符合我的需求。
现在的问题是该脚本创建了一个 .mlpackage 文件,该文件仅接受固定大小(640x640)的图像:
from ultralytics import YOLO
model = YOLO("yolo11n-seg.pt")
model.export(format="coreml")
我想在这里进行一些更改,可能是用
coremltools
来处理无限范围(我想处理任意大小的图像)。这里有一些描述:https://apple.github.io/coremltools/docs-guides/source/flexible-inputs.html#enable-unbounded-ranges,但我不明白如何实现它我的剧本。
如何导出具有灵活输入大小的YOLO分割模型
from ultralytics import YOLO
import coremltools as ct
# Export to torchscript first
model = YOLO("yolov8n-seg.pt")
model.export(format="torchscript")
# Convert to CoreML with flexible input size
input_shape = ct.Shape(
shape=(1, 3,
ct.RangeDim(lower_bound=32, upper_bound=1024, default=640),
ct.RangeDim(lower_bound=32, upper_bound=1024, default=640))
)
mlmodel = ct.convert(
"yolov8n-seg.torchscript",
inputs=[ct.ImageType(
name="images",
shape=input_shape,
color_layout=ct.colorlayout.RGB,
scale=1.0/255.0
)],
minimum_deployment_target=ct.target.iOS16
)
mlmodel.save("yolov8n-seg-flexible.mlpackage")
这将创建一个 .mlpackage,它接受 32 32 到 1024 1024 之间的图像(您可以根据需要修改这些范围)。默认值为 640 640。
在这里阅读相关内容: