ultralyticsが提供するYOLOv8はPyTorch形式ですが、これをiPhoneなどで使えるようにyolo export model=yolov8n.pt format=coreml
したらRuntimeError: BlobWriter not loaded
になってしまいやした。ということでこのエラーの解消方法についてサクッと解説。
yolo export model=yolov8n.pt format=coreml
... 省略 ...
File "/Users/jimaru/miniforge3/envs/jupyter/lib/python3.12/site-packages/coremltools/converters/mil/backend/mil/load.py", line 400, in export
raise RuntimeError("BlobWriter not loaded")
RuntimeError: BlobWriter not loaded
結論は、Pythonのバージョンを最新より1つ前にダウングレードすると解決します。coremltoolsがなかなか最新のPythonに対応してくれないことが原因のようです。
RuntimeError: BlobWriter not loaded during converting model "Lykon/DreamShaper" #186ではPython3.11からPython3.10にダウングレードして解決したと言われていますが、時が進んだ現在は最新のPythonバージョンは3.12で、Python3.12からPython3.11にダウングレードすることで解決しました。
一応、ケンヂまるがminiforge上に構築したyolo export model=yolov8n.pt format=coreml
が動作する環境の構築手順を紹介しておきます。
conda create -n yolo
conda activate yolo
conda install python=3.11 ultralytics pytorch torchvision
PyTorch形式のyolov8n.ptをCoreML形式に変換してyolov8n.mlpackageが生成されれば成功です。
yolo export model=yolov8n.pt format=coreml
# → yolov8n.mlpackage が生成される