LoginSignup
2

More than 1 year has passed since last update.

機械学習モデルを搭載したライブラリをつくる方法

christmas-6873868_640.jpg

機械学習の機能をライブラリに盛り込めます。

機械学習モデルをライブラリでも使いたい

画像認識、物体検出、セグメンテーション、音声認識、文字認識、画像生成、超解像、深度推定、画像復元など、
機械学習モデルには様々な便利なものがあります。
それらのパワーをライブラリにも搭載したい。

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のライブラリでもこのモデルが使えます。

スクリーンショット 2021-12-23 7.21.20.png

コードからの呼び出し

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関連の情報を発信しています。

Twitter
Medium

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2