#機械学習モデルを搭載したライブラリをつくる方法
機械学習の機能をライブラリに盛り込めます。
#機械学習モデルをライブラリでも使いたい
画像認識、物体検出、セグメンテーション、音声認識、文字認識、画像生成、超解像、深度推定、画像復元など、
機械学習モデルには様々な便利なものがあります。
それらのパワーをライブラリにも搭載したい。
iOSプロジェクトで機械学習モデルを使うときは、CoreMLModelをプロジェクトに搭載しますが、SwiftPackageManagerに対応したライブラリでは直接mlmodelの拡張子のファイルを積み込めない。
といって、ユーザーに別でmlmodelだけダウンロードしてもらってプロジェクトにコピーしてもらうのは手間。
なんとかモデルごとパッケージに組み込めないか。。。
#コンパイルしてバンドルすれば解決
mlmodelをコンパイルしてmlmodelcというファイルと、swiftのモデル読み取りファイルをライブラリに積み込めば、そのまま機械学習モデルが使えます。
#コンパイル方法
コンソールを開き、以下を実行します。
xcrun coremlcompiler compile pathToYourModel.mlmodel .
xcrun coremlcompiler generate pathToYourModel.mlmodel . --language Swift
yourModel.mlmodelc
yourModel.swift
というファイルが生成されるので、ライブラリのパッケージのSource/(パッケージ名)のフォルダにコピーします。
Packageファイルのターゲットリソースにmlmodelcを追加します。
.target(
name: "MyPackage",
dependencies: [],
resources: [.process("yourModel.mlmodelc")]),
これで、SwiftPackageのライブラリでもこのモデルが使えます。
#コードからの呼び出し
let url = try? Bundle.module.url(forResource: "yourModel", withExtension: "mlmodelc")
let mlModel = try! MLModel(contentsOf: url!, configuration: MLModelConfiguration())
もしくは、
let mlModel = try! yourModel(configuration: MLModelConfiguration()).model
🐣
フリーランスエンジニアです。
お仕事のご相談こちらまで
簡単な開発内容をお書き添えの上、お気軽にご連絡ください。
rockyshikoku@gmail.com
Core MLやARKitを使ったアプリを作っています。
機械学習/AR関連の情報を発信しています。