YOLO v8で再学習/転移学習したモデルをCoreMLに変換してもうまく予測が動かない時のTips

August 25, 2024
Author(著者):
beaver
iOS
Swift
YOLO

タイトルの通りですが、公式サイトにある通り、

yolo export model=〇〇.pt format=coreml nms=True

のコマンドで学習した重みを、iOSで使えるようにcoreMLのMLPackageに変換すると、公式から提供されている重みを変換した場合は問題ないのに、再学習/転移学習した重みを変換するとなぜかうまく動かないことがありました。

完全に以下のIssueの通りですが、こちらはUltralytics(YOLO)のバグのようです。

https://github.com/ultralytics/ultralytics/issues/13794

2023年あたりからチラホラ問題になってそうなのですが、未だ対処されていないので、直るのはいつになるかわからないです。

対象方法

対象方法としては、exportのモデル形式を”mlmodel”で出力してあげることです。

こちらであれば、変換の処理に旧verのcoremltoolsを使用するため問題ないようです。

具体的には以下のコマンドでいけます。

yolo export model=〇〇.pt format=mlmodel nms=True

(〇〇にはbest.ptなど学習した重みのpathを入れます)

これによって出力されるファイル形式は.mlmodelと、.mlpackage形式ではありませんが、問題なくXCodeにてインポートすることが可能です。


copyright © 2024 beavers-hive.com